我必须在我的闪存中移动一些图片。所以我在我的主 MovieClip 中有一个背景图像(我通过 Loader 类获得)。在图像内部,我有矩形。我将把小图像放在这个矩形中并移动它。我需要小图像在穿过矩形边界时慢慢消失。我试图将另一个影片剪辑放在矩形中,并在此影片剪辑中移动图像。但是在穿过矩形时,图像并没有消失。图像只是继续它的运动而没有消失。如何在跨越矩形边界时使图像消失?对不起我的英语不好。
问问题
266 次
1 回答
1
获取TweenLite。这是一个动画“补间”库,让动画变得轻而易举。还有其他的,但这是我使用的。
这取决于您用于移动和检测图像和矩形重叠的方法。
假设您有两个正方形(红色正方形和蓝色正方形),并且您希望红色正方形在与蓝色正方形重叠时淡出。这是通过鼠标、键盘或预先计算的移动来控制的吗?淡入淡出是重叠百分比的一个因素,还是在它与蓝色方块接触的那一刻直接从 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 回答