2014-11-03 3 views
0

저는 여전히 as3과 어려움을 겪고 있습니다. 내 적들은 오른쪽에서 왼쪽으로 움직이지 않을 것이다. 다른면은 문제가되지 않습니다. 아무도 내가 뭘 잘못하고 있는거야? 추적 장갑은 작동합니다.왼쪽으로 적을 움직이십시오.

package { 
    import flash.display.MovieClip; 
    import flash.events.Event; 

    public class mcEnemy extends MovieClip { 

     public var sDirection:String; 

     private var nSpeed:Number; 

     public function mcEnemy() 
     { 
      addEventListener(Event.ADDED_TO_STAGE, onAdd); 
     } 

     private function onAdd (e:Event): void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, onAdd); 
      init(); 
     } 

     //radom enemy's worden gekozen 
     private function init():void 
     { 
      // 3 frames 
      var nEnemies:Number = 3; 
      // pick random number between 1 and number of enemies 
      var nRandom:Number = randomNumber (1, nEnemies); 
      // Setup our playhead of this enemy clip to a random number 
      // Stop op frame 1,2 of 3 
      this.gotoAndStop(nRandom); 
      // Setup our enemys start position 
      setupStartPosition(); 
     } 

     private function setupStartPosition(): void 
     { 
      // pick a random speed for the enemy 
      nSpeed = randomNumber (5,10); 
      // Pick random number for left or right, tussen 1 en 2, start position 
      var nLeftOrRight:Number = randomNumber (1,2); 
      // if our nLeftOrRight == 1 , enemy is on the left 
      if (nLeftOrRight == 1) 
      { 
       // start enemy on the left side 
       this.x = - (this.width/2); 
       sDirection = "R"; 
       //trace ("right"); 
      } else 
      { 
       // start enemy on the right side 
       this.x = stage.stageWidth + (this.width/2); 
       sDirection = "L"; 
       //trace("left"); 
      } 
      // set a random hoogte for our enemy 
      // set a 2 varibele for min and max hoogte 
      var nMinAltitude: Number = stage.stageHeight/2; 
      var nMaxAltitude: Number = 720 - (this.height/2); 

      // Setup our enemies altitude to a random point between our min and max altitudes 
      this.y = randomNumber (nMinAltitude, nMaxAltitude); 

      // move our enemy 
      startMoving(); 
     } 

     private function startMoving(): void 
     { 
      addEventListener(Event.ENTER_FRAME, enemyLoop) 
     } 

     private function enemyLoop (e:Event): void 
     { 
      // test in what direction our enemy is moving 
      // if our enemy is moving right 
      if (sDirection == "R") 
      { 
       // move our enemy right 
       this.x += nSpeed; 
       //trace ("goright"); 
      } else 
      { 
       // move our enemy left 
       this.x -= nSpeed; 
       //trace ("goleft"); 
      } 
     } 

     // geeft random nummer tussen 0 en 1 en stuurt het terug 
     function randomNumber (low:Number=0, high:Number=1) : Number 
     { 
      return Math.floor (Math.random() * (1+high-low)) + low; 
     } 

      public function destroyEnemy(): void 
     { 
      // remove enemys from the stage 
      if (parent) { 
      parent.removeChild(this); 
      } 
      // remove any eventlisteners from enemy 
      removeEventListener(Event.ENTER_FRAME, enemyLoop); 
     } 

    } 

} 

누군가가 나를 도울 수 있기를 바랍니다. 내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다.

답변

0

내가 볼 수있는 한 "var nLeftOrRight : Number = randomNumber (1,2);"입니다. 는 데시벨 (예 : 1.2929291)을 사용하여 1에서 2 사이의 난수를 만든 다음 int로 변환합니다. 이렇게하면 1이 실제로 높을 가능성이 생기고 2가 실제로 낮을 확률이 높아집니다. case는 randomNumber (1,2)를 만들지 않고 randomNumber (1,3), 'possible'3을 잡으려면 if를 3으로 만들고 eighter 1 또는 2로 바꿔야합니다.

나는 잘못된 정보를 주면 나도 실례하지만 난수 생성에 대해서는 틀릴 수도있다.

0

왼쪽으로 이동하면 어떻게됩니까? 항상 어긋나지 않습니까? 가끔 제대로 움직이며 가끔 움직이지 않는 경우가 있습니까?

+0

게임의 일부이다. 적들은 화면에서 왼쪽이나 오른쪽으로 가야합니다. 당신이 그들을 격추해야합니다. 그것은 무작위 적이기 때문에 나는 왼쪽으로 가려고 생각하는 사람이 전혀 움직이지 않는다고 생각합니다. – FaceMann

관련 문제