1

我想随机移动一个 AS 3 影片剪辑。这是我目前拥有的,绑定到 ENTER_FRAME 事件。这显然将影片剪辑从左上边缘移动到右下边缘,所以我需要某种开关来添加/减去目标位置。

function movePsycho(e:Event):void {
    e.target.y += Math.random()*2;
    e.target.x += Math.random()*2;
    if (e.target.y >= stage.height || e.target.x >= stage.width)
        e.target.removeEventListener(Event.ENTER_FRAME, movePsycho);
}
4

2 回答 2

1

你不需要加/减的东西。你只需要确保你不仅能从随机数中得到正值,而且还能得到负值,这样它就会流向四面八方。

尝试将您的随机生成线更改为:

e.target.y += Math.random()*10 - 5;
e.target.x += Math.random()*10 - 5;

如果你想让它在 5px 半径内移动,这将起作用。

我刚刚意识到您可能想在屏幕上生成一个新的随机点,然后移动到该点,当您的对象到达目的地时生成另一个随机点。因此,如果是这种情况,请尝试以下操作:

mc.addEventListener(Event.ENTER_FRAME, onFrame);

var dirX:int = mc.x;
var dirY:int = mc.y;

function generateRandomPoint():void
{
    dirX = Math.random() * stage.stageWidth;
    dirY = Math.random() * stage.stageHeight;
}

function onFrame(e:Event):void
{
    mc.x += (dirX - mc.x) * 0.1;
    mc.y += (dirY - mc.y) * 0.1;

    if(Math.abs(dirX - mc.x) < 1 || Math.abs(dirY - mc.y) < 1)
        generateRandomPoint();
}
于 2012-08-08T10:04:42.030 回答
1

我不知道 actionscript 但你可能会在这方面找到帮助

http://www.actionscript.org/forums/showthread.php3?t=270725

于 2012-08-08T09:38:25.877 回答