打印

[AS3] 小球在舞台上从左往右来回往返运动怎么写?

如题,本以为效果挺简单,没想到写了半天也没写出来......
望尘莫及。。。

代表物理老师批判你

给小球一个速度v
当碰到边界的时候 v *= -1;
裸奔也是一种美
晕,还批判我,有这么简单吗。。。你自己动手写试试。。。
我的意思是:小球从舞台左边运动到右边,再从右边到左边,一直这样往返运动。。

[ 本帖最后由 South123 于 2008-7-4 17:27 编辑 ]
望尘莫及。。。

就是这么简单

复制内容到剪贴板
代码:
var ball:Sprite = new Sprite();
addChild(ball);
ball.graphics.beginFill(0);
ball.graphics.drawCircle(0, 0, 30);
ball.y = stage.stageHeight/2;
ball.x = stage.stageWidth/2;
var vx:Number = 5;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
function enterFrameHandler(event:Event):void {
    ball.x += vx;
    if (ball.x - ball.width/2 < 0) {
        ball.x = ball.width/2;
        vx *= -1;
    } else if (ball.x + ball.width/2 > stage.stageWidth) {
        ball.x = stage.stageWidth - ball.width/2;
        vx *= -1;
    }
}
裸奔也是一种美

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
不可能啊,我下午写的时候也是这样写的。。。
你试过了吗,我现在在网吧没法试。
望尘莫及。。。

TOP

回复 South123 在 5# 的帖子

请说出你认为不可能的理由
裸奔也是一种美

TOP

else if (ball.x + ball.width/2 > stage.stageWidth)

这个判断里如果小球x轴小于场景宽度时,你大括号里的代码就不会执行了,所以不可能往回运动。。。

你测试了吗。。。
望尘莫及。。。

TOP

哎...
裸奔也是一种美

TOP

晕,不过我下午用的就是else if,回家再试试。。。
望尘莫及。。。

TOP

代码很清晰  算法很正确  
LZ很菜瓜  傲气很凌人

TOP

可以这样写:
var i:Number=3;
function dong(event:Event){
   mc.x+=i;
   if(mc.x>stage.stageWidth || mc.x<0){
    i=-i;
}
stage.addEventListener(Event.ENTER_FRAME,dong);

TOP