循环中的随机数,如何阻止它每帧获取一个新数字?

时间:2011-11-08 23:53:38

标签: actionscript-3

学习动作脚本和编程所以我很抱歉解决方案很简单,我只是不知道它是什么。我想要发生的是将对象传递给我想要掉进屏幕的对象。我通过e:Event(来自舞台上的事件监听器)和速度传递对象,它在高值和低值之间得到一个随机数。

当我运行它时,它当然每帧都会得到一个新的随机数。 (因为它被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 个答案:

答案 0 :(得分:4)

var speed:Number = randomNum(55, 0.1);从动画功能中取出。

然后这样写:

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