我在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);
}
}
}
答案 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的文档。