2013-05-29 4 views
0

У меня есть некоторые проблемы с math.random. Я сделал класс для кубиков (Диски), и все отлично работает. Самое забавное, когда я трачу «var rand», я вижу, что он просто выбирает одно число. Это делает его совершенно не случайным. Причиной этой функции является то, что если это случайное число превышает определенное число, например, 90, штамп (диски) перейдет к кадру 8. Но если случайное число останется на одном номере, этого никогда не произойдет. Некоторая помощь будет приятной.As3 var случайное число не работает правильно

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

У вас есть 'import flash.display. *;' Дважды. – RST

ответ

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(); 

} 

Это действительно основные соображения кодирования, пожалуйста, прочитать документацию об объектно-ориентированном программировании и AS3, прежде чем пытаться кодировать, чувствуя.

+0

спасибо !! и я знаю, я пытаюсь найти свой путь в As3. Я все еще учусь. Спасибо за ваше время и помощь! Я очень ценю это. – user1492440

Смежные вопросы