AS3.0,在满足某个条件下,就生成一个随机位置,随机运动的小球。
要求小球在舞台上匀速直线运动,碰到边界就弹回。但每个小球的速度都不一样,而且出现的位置也要随机。要求能重复生成小球,越来越多。该如何用代码实现呢?...
要求小球在舞台上匀速直线运动,碰到边界就弹回。但每个小球的速度都不一样,而且出现的位置也要随机。要求能重复生成小球,越来越多。该如何用代码实现呢?
展开
1个回答
展开全部
首先,在库里有一个小球元件,元件中心就是小球的中心,然后输一下代码;
var sw:Number = 550; //Stage Widht,舞台宽,自定
var sh:Number = 400; //Stage Height,舞台高,自定
function creatBall():void{
//创建小球
var ball:Ball = new Ball();
//随机位置
ball.x = Math.random()*sw;
ball.y = Math.random()*sh;
//随机速度和方向
Math.random()>0.5?ball.speedX = Math.random()*5+1 : ball.speedX = -1 * Math.random()*5+1
Math.random()>0.5?ball.speedY = Math.random()*5+1 : ball.speedY = -1 * Math.random()*5+1
//因为小球的坐标原点是小球的中心,所以用该函数用来调整小球位置,防止移出边界
adjustBall(ball);
//添加小球到显示列表
addChild(ball);
//用ENTER_FRAME侦听器使小球运动
ball.addEventListener(Event.ENTER_FRAME,moveBall);
}
function adjustBall(mc:MovieClip):void{
if(mc.x > sw-mc.width/2){mc.x = sw-mc.width/2;}
if(mc.x < mc.width/2){mc.x = mc.width/2};
if(mc.y > sh-mc.height/2){mc.y = sh-mc.height/2;}
if(mc.y < mc.height/2){mc.y = mc.height/2;}
}
function moveBall(evt:Event):void{
//改变小球的坐标让小球运动
evt.target.x += evt.target.speedX;
evt.target.y += evt.target.speedY;
//检测小球是否碰到舞台边界
if(evt.target.x >= sw-evt.target.width/2 || evt.target.x <= evt.target.width/2){
evt.target.speedX *= -1;
}
if(evt.target.y >= sh-evt.target.height/2 || evt.target.y <= evt.target.height/2){
evt.target.speedY *= -1;
}
}
最后,在“满足某个条件下”调用creatBall函数就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询