0

我必须在我的闪存中移动一些图片。所以我在我的主 MovieClip 中有一个背景图像(我通过 Loader 类获得)。在图像内部,我有矩形。我将把小图像放在这个矩形中并移动它。我需要小图像在穿过矩形边界时慢慢消失。我试图将另一个影片剪辑放在矩形中,并在此影片剪辑中移动图像。但是在穿过矩形时,图像并没有消失。图像只是继续它的运动而没有消失。如何在跨越矩形边界时使图像消失?对不起我的英语不好。

4

1 回答 1

1
  1. 获取TweenLite。这是一个动画“补间”库,让动画变得轻而易举。还有其他的,但这是我使用的。

  2. 这取决于您用于移动和检测图像和矩形重叠的方法。

假设您有两个正方形(红色正方形和蓝色正方形),并且您希望红色正方形在与蓝色正方形重叠时淡出。这是通过鼠标、键盘或预先计算的移动来控制的吗?淡入淡出是重叠百分比的一个因素,还是在它与蓝色方块接触的那一刻直接从 0 到 100 定时过渡?从您给出的描述中不清楚您希望代码做什么。请查看SO 的“提问”部分,以帮助提高问题的质量,从而获得所需的正确答案。

也就是说,这是解决问题的一种方法:

import com.greensock.*;

// Create some sample red & blue squares
var red:Sprite = new Sprite();
red.graphics.beginFill(0xFF0000, 1);
red.graphics.drawRect(0, 0, 100, 100);
red.graphics.endFill();

addChild(red);
stage.addEventListener(MouseEvent.MOUSE_MOVE, updateRed);

var blue:Sprite = new Sprite();
blue.graphics.beginFill(0x0000FF, 1);
blue.graphics.drawRect(0, 0, 100, 100);
blue.graphics.endFill();
addChild(blue);
blue.x = 200;
blue.y = 100;

var overlap:Boolean = false; // global state tracker

function updateRed(e:MouseEvent):void {
    // Position the red square every time the mouse moves
    red.x = stage.mouseX - red.width/2; // center relative to red square's dimensions
    red.y = stage.mouseY - red.height/2;

    if (red.hitTestObject(blue) && overlap != true) {
        // Make sure we only animate on the initial overlap
        overlap = true;
        TweenLite.to(red, 1, {alpha:0});
    } else if (red.hitTestObject(blue) == false && overlap) {
        // And converserly, on the initial exit
        overlap = false;
        TweenLite.to(red, 1, {alpha:1});
    }
}
于 2013-07-25T05:33:45.383 回答