As3 var随机数不起作用

时间:2013-05-29 08:22:25

标签: actionscript-3 flash class math

我在math.random方面遇到了一些问题。我为骰子(磁盘)做了一个课,每件事都很棒。有趣的是,当我追踪“var rand”时,我发现它只选择一个数字。这使得它完全不是随机的。这个函数的原因是如果这个随机数高于某个数字,例如90,那么骰子(磁盘)将进入第8帧。但是如果随机数停留在一个数字上,它将永远不会发生。一些帮助会很好。

package  {

    import flash.display.*;
    import flash.events.*;
    import flash.display.*;
    import flash.utils.*;
    import flash.events.MouseEvent;
    import flash.utils.Timer;
    import flash.utils.getTimer;

    public class DiskRoll extends MovieClip 
    {

        var rand:int = Math.random() * 100;
        var diskTilt:Timer = new Timer(1350,1);     

        public function DiskRoll():void 
        {           
            stage.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk);
            diskTilt.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
        }

        private function hitDisk(event:MouseEvent):void{
            this.gotoAndStop(Math.ceil(Math.random()* 7));

            if(rand >= 95 && rand <=100){ 
                this.gotoAndStop(8);
            }

            trace(rand);
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, hitDisk);
            diskTilt.start();

        }

        private function onComplete(event:TimerEvent):void {
            this.gotoAndPlay(1);
            diskTilt.stop();
            stage.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk);
        }

    }

} 

1 个答案:

答案 0 :(得分:2)

rand未在您的函数中重新计算,这就是它始终具有相同值的原因。

我不明白为什么你gotoAndStop一个随机值并保留这个rand变量...你可能想要做以下事情

private function hitDisk(event:MouseEvent):void{
    rand = Math.random() * 100;

    if(rand >= 95 && rand <=100){ 
        this.gotoAndStop(8);
    }

    trace(rand);
    stage.removeEventListener(MouseEvent.MOUSE_DOWN, hitDisk);
    diskTilt.start();

}

这些是非常基本的编码注意事项,请在尝试编码之前阅读一些有关OOP和AS3的文档。