2014-10-11 29 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为空