使矩形边缘上的图像消失

时间:2013-07-24 20:31:39

标签: actionscript-3

我必须在闪光灯中移动一些照片。所以我的主要MovieClip中有一个背景图像(我通过Loader类获得)。在图像里面我有矩形。我要把小图像放在这个矩形中并移动它。我需要小图像在穿过矩形边界时慢慢消失。 我试图将另一个movieclip放入矩形并在此动画片段中移动图像。但是当穿过矩形时,图像并没有消失。图像只是继续运动而不会消失。 如何在跨越矩形边界时消除图像的消失? 抱歉我的英文。

1 个答案:

答案 0 :(得分:1)

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

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

  3. 让我们想象你有两个正方形(红色正方形和蓝色正方形),只要它与蓝色正方形重叠,你就希望红色正方形淡出。这是用鼠标,键盘还是执行保证日食的预先计算的移动来控制的?淡入淡出是重叠百分比的一个因素,还是在与蓝色方块接触时的直接0到100定时过渡?从你给出的描述中不清楚你期望你的代码到底做什么。请查看SO's "Asking" section,以帮助提高问题的质量,以便您找到正确的答案。

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

    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});
        }
    }