Случайное число в цикле, как остановить его от получения нового числа каждый кадр?


Обучение сценарию действий и программированию поэтому я прошу прощения, что решение простое, я просто не знаю, что это такое. То, что я хочу сделать, - это пропустить объекты, через которые я хочу упасть на экран. Я передаю объект через E: Event (который поступает от слушателя событий на сцене) и скорость, которая получает случайное число между высоким и низким значением.

Когда я запускаю его, он, конечно, получает новое случайное число каждый кадр. (потому что его называют Событием.ENTER_FRAME

Как пойду ли я на это, чтобы достичь своей цели?

Вот мой код:

private function moveIt(e:Event, speed):void
    {
        if ( e.currentTarget.y <= 400 )
        {
            var objSpeed = speed;
            e.currentTarget.y = e.currentTarget.y + speed;
            trace("speed = "+ speed);
        }
        else
        {
             //Do other stuff
        }
    }//moveit

Как и было предложено, вот другие фрагменты кода, которые имеют отношение к делу:

Случайное число

private function randomNum(high, low):Number
    {
        var randNum:Number = Math.floor(Math.random()*(1 + high - low))+low;
        return randNum;
    }

Называется здесь

iconPsd.addEventListener(Event.ENTER_FRAME, animate)

А затем через это (не нужно, но это была моя попытка)

private function animate(e:Event):void
    {
        var speed:Number = randomNum(55, 0.1);
        moveIt(e, speed);
        trace ("speed in animate = "+ speed);

    }//animate
1 3

1 ответ:

Выведите var speed:Number = randomNum(55, 0.1); из функции animate.

И напиши это так:

iconPsd.speed = randomNum(55, 0.1);
iconPsd.addEventListener(Event.ENTER_FRAME, animate);

private function animate(e:Event):void
    {
        moveIt(e);
        trace ("speed in animate = "+ e.currentTarget.speed);

    }//animate

private function moveIt(e:Event):void
    {
        if ( e.currentTarget.y <= 400 )
        {
            e.currentTarget.y = e.currentTarget.y + e.currentTarget.speed;
            trace("speed = "+ e.currentTarget.speed);
        }
        else
        {
             //Do other stuff
        }
    }//moveit
Здесь вы присваиваете скорость как свойство объекта iconPsd вне объекта enterFrame, но можете использовать ее внутри объекта enterFrame.

Вы также можете сжать его вот до чего:

iconPsd.speed = randomNum(55, 0.1);
iconPsd.addEventListener(Event.ENTER_FRAME, animate);

private function animate(e:Event):void
    {
        if ( e.currentTarget.y <= 400 )
        {
            e.currentTarget.y = e.currentTarget.y + e.currentTarget.speed;
            trace("speed = "+ e.currentTarget.speed);
        }
        else
        {
             //Do other stuff
        }
    }//animate