flash as3 怎么让一个元件在舞台范围内随机移动

就这个元件 谢谢
2024-11-14 11:12:14
推荐回答(2个)
回答1:

假设它是 ball_mc;

使用TweenMax

move();
function move(){
TweenMax.to(ball_mc, Math.random()*3,{x:Math.random()*stage.stageWidth, y:Math.random()*stage.stageHeight, onComplete: move});
}

你的那些图片,也可以使用这个函数去随机移动,但素鼠标rollOver的时候要 TweenMax.killAll(); 移开的时候又需要再调用一次这个函数, 检测边缘你需要在X和Y那里写写

回答2:

随机移动有多种形式,不知道您 要的是哪种形式?匀速?变速?直线?曲线?途中变向还是碰壁后转向?反弹吗?

import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
var vx:Number=5,vy:Number=3;
//绘制一个圆,运动的物体......................
var r:uint=10;
var ball:Sprite =new Sprite();
ball.graphics.clear();
ball.graphics.lineStyle(1,0x00ff00);
ball.graphics.beginFill(0x00ff00);
ball.graphics.drawCircle(0,0,r);
ball.graphics.endFill();
ball.x=stage.stageWidth/2
ball.y=stage.stageHeight/2
this.addChild(ball);
//设置边界.................................
var boundary:Rectangle=new Rectangle(r,r,stage.stageWidth-r,stage.stageHeight-r);
//动力系统...........................
var timer:Timer=new Timer(50);
timer.start();
timer.addEventListener(TimerEvent.TIMER,run);
function run(e:TimerEvent):void {
if (ball.x<=boundary.left||ball.x>=boundary.right) {
vx=- vx;
}
if (ball.y<=boundary.top||ball.y>=boundary.bottom) {
vy=- vy;
}
ball.y+=vy;
ball.x+=vx;
}