动作脚本中的数学随机数3

Math random in action script3

我正在制作游戏,我正在尝试创建一个落在多个位置的相同对象的数组。我还想让它们落在不同的位置,使用数学随机数。我遇到的问题是对象(香蕉)根本没有出现在屏幕上。可以在动作脚本 3 的 y 轴上使用数学随机数吗?如果是这样,有人可以给我举个例子吗? 这是我在主程序中的内容:

var numBananas = 20;
var theBananas: Array = new Array();
theBananas = [];
for (var i = 0; i < numBananas; i++) {
var aBanana: banana_fall = new banana_fall();
aBanana.y=-10;
theBananas.push(aBanana);
theBananas[i].setSpeed(-(Math.random()), 5);

这就是我在动作脚本中的内容 class:

package {
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.events.Event;

    public class banana_fall extends MovieClip {

        var velX: Number = 0;
        var velY: Number = 0;
        var falling: Boolean = false;
        var gravity: Number = 2;

        public function banana_fall() {
            var timing: Timer = new Timer(20, 0);
            timing.addEventListener(TimerEvent.TIMER, moveMe);
            timing.start();

        }

        private function moveMe(event: TimerEvent) {
            this.x = this.x + velX;
            this.y = this.y + velY;

            if (falling) {
                falling=true;
                velY = velY + gravity;
            }
        }


        public function setSpeed(dx, dy) {
            velX = dx;
            velY = dy;
        }

    }

}

我认为问题出在这个方法中:

    private function moveMe(event: TimerEvent)
    {
        this.x = this.x + velX;
        this.y = this.y + velY;

        if (falling)
        {
            falling=true;
            velY = velY + gravity;
        }
    }

您设置了负速度并且 falling 最初是 false 所以重力永远不会起作用。你的香蕉变香蕉了,它们出现在屏幕上方,然后逃到负 y.

的开放 space 中

作为一般规则,您需要跟踪(...) 事物以了解问题所在。此外,无需在 class 方法中显式使用 this

    private function moveMe(event: TimerEvent)
    {
        x += velX;
        y += velY;

        if (falling) velY += gravity;

        trace("[BANANA] position:", x, y, "speed:", velX, velY);
    }