2012-08-08 38 views
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); 
} 

回答

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(); 
} 
+0

看起来很棒! – Jan 2012-08-08 11:21:15

+0

很高兴帮助你:) – Gio 2012-08-08 11:21:45