2014-10-11 70 views
0
package 
{ 
    import flash.display.MovieClip; 
    import flash.events.Event; 
    import flash.ui.Keyboard; 
    import flash.events.KeyboardEvent; 
    import flash.events.MouseEvent; 


    public class supportForce extends MovieClip 
    { 
     public function supportForce() 
     { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN, onDown); 
      stage.addEventListener(KeyboardEvent.KEY_UP, onUp); 
      stage.addEventListener(Event.ENTER_FRAME, keyCheck); 
     } 
     private function onUp(e:KeyboardEvent):void 
     { 
      _keyDownStatus[e.keyCode] = false; 
     } 
     private function onDown(e:KeyboardEvent):void 
     { 
      _keyDownStatus[e.keyCode] = true; 
     } 
     private function keyCheck(event:Event) 
     { 
      if (_keyDownStatus[90]) 
      { 
       var GreenLight:Projectile1 = new Projectile1(); 
       stage.addChild(GreenLight); 
       GreenLight.x = Player2Child.x; 
       GreenLight.y = Player2Child.y; 
      } 
     GreenLight.x -= defaultSpeed; 
     } 
    } 
} 

因此,這裏的投射物是Projectile1,它在keyCheck函數中聲明爲GreenLight。因此,在相同的功能(ENTER.FRAME功能)中,GreenLight應該移動到左邊。這不會發生,並且還有一個錯誤,指出TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。出現supportForce/keyCheck()時出現 。先謝謝你。投射物不移動,因爲它們應該是

回答

0

在你的鍵校驗功能,綠激光將是無效的,如果_keyDownStatus [90]是假

所以就把綠激光爲類變量

private var lights:Array = []; 

    private function keyCheck(event:Event) 
    { 
     if (_keyDownStatus[90]) 
     { 

      var GreenLight:Projectile1 = new Projectile1(); 
      stage.addChild(GreenLight); 
      GreenLight.x = Player2Child.x; 
      GreenLight.y = Player2Child.y; 


      for each (var l:Projectile1 in lights) 
      { 
       l.x -= defaultSpeed; 
      } 

       lights.push(GreenLight); 
     } 
     else 
     { 
       //remove all Projectile1s in lights from stage and clear lights if you want 
     } 

    } 
+0

它可以工作,但我只能啓動一個GreenLight,之後什麼都不顯示。 – InfiniteParadox 2014-10-11 11:26:09

+0

@Dust你是說當mousedown時每個框架上都會出現一個新的Projectile1? – Pan 2014-10-11 11:38:02

+0

不好意思提前它,但是。我的錯。 – InfiniteParadox 2014-10-11 11:44:18

0

你如果條件範圍內,如果鍵代碼IsNot運算創建GreenLight 90,Projectile1的對象沒有創建,並且GreenLight.x -= defaultSpeed;那裏GreenLight爲空