AS3.0,在满足某个条件下,就生成一个随机位置,随机运动的小球。

要求小球在舞台上匀速直线运动,碰到边界就弹回。但每个小球的速度都不一样,而且出现的位置也要随机。要求能重复生成小球,越来越多。该如何用代码实现呢?... 要求小球在舞台上匀速直线运动,碰到边界就弹回。但每个小球的速度都不一样,而且出现的位置也要随机。要求能重复生成小球,越来越多。该如何用代码实现呢? 展开
 我来答
briver686
推荐于2017-09-07 · TA获得超过479个赞
知道小有建树答主
回答量:310
采纳率:100%
帮助的人:222万
展开全部
首先,在库里有一个小球元件,元件中心就是小球的中心,然后输一下代码;
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函数就行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式