Случайное число в цикле, как остановить его от получения нового числа каждый кадр?
Обучение сценарию действий и программированию поэтому я прошу прощения, что решение простое, я просто не знаю, что это такое. То, что я хочу сделать, - это пропустить объекты, через которые я хочу упасть на экран. Я передаю объект через 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 ответ:
Выведите
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