2014-10-05 56 views
1
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 
    { 
     private var Player1Child:Player1Actual = new Player1Actual(); 
     private var Player2Child:Player2Actual = new Player2Actual(); 
     private var GreenLightLeft:Projectile1 = new Projectile1(); 
     private var GreenLightRight:Projectile2 = new Projectile2(); 
     private var _keyDownStatus:Object = {}; 
     private var defaultSpeed:Number = 10; 
     private var Player1Lock:Boolean = false; 
     private var Player2Lock:Boolean = false; 
     private var Player1Left:Boolean = false; 
     private var Player2Left:Boolean = true; 
     private var greenLightLeft:Boolean = true; 
     private var Player1CD:Number = 0; 
     private var Player1Ready:Boolean = true; 
     private var Player1Hit:Boolean = false; 
     public function supportForce() 
     { 
      this.addEventListener(Event.ENTER_FRAME, general); 
      stage.addEventListener(KeyboardEvent.KEY_DOWN, onDown); 
      stage.addEventListener(KeyboardEvent.KEY_UP, onUp); 
      stage.addEventListener(Event.ENTER_FRAME, keyCheck); 
      btnStart.addEventListener(MouseEvent.CLICK, clickStart); 
      btnAbout.addEventListener(MouseEvent.CLICK, clickAbout); 
      btnDust.addEventListener(MouseEvent.CLICK, clickDust); 
     } 
     private function general(event:Event) 
     { 
      if (Player1Child.BladeInstance.hitTestObject(Player2Child)) 
      { 
       if (Player1Left == true) 
       { 
        Player2Child.x -= defaultSpeed; 

       } 
       if (Player1Left == false) 
       { 
        Player2Child.x += defaultSpeed; 

       } 
      } 
      if (Player1Ready == false) 
      { 
       Player1CD -= 1; 
      } 
      if (Player1CD <= 0) 
      { 
       Player1Ready = true; 
      } 
      if (Player1Child.x <= 0) 
      { 
       Player1Child.x = 0; 
      } 
      if (Player1Child.x >= 550) 
      { 
       Player1Child.x = 550; 
      } 
      if (Player1Child.y >= (400 - Player1Child.height)) 
      { 
       Player1Child.y = 400 - Player1Child.height; 
      } 
      if (Player1Child.y <= 0) 
      { 
       Player1Child.y = 0; 
      } 
      if (Player2Child.x <= Player2Child.width) 
      { 
       Player2Child.x = Player2Child.width; 
      } 
      if (Player2Child.x >= 550) 
      { 
       Player2Child.x = 550; 
      } 
      if (Player2Child.y >= (400 - Player2Child.height)) 
      { 
       Player2Child.y = 400 - Player2Child.height; 
      } 
      if (Player2Child.y <= 0) 
      { 
       Player2Child.y = 0; 
      } 
     } 
     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[37]) 
      { 
       if (Player1Left == false) 
       { 
        Player1Left = true; 
        Player1Child.rotation += 180; 
        Player1Child.y += (Player1Child.height - 5); 
        Player1Child.x += Player1Child.width; 
       } 
       Player1Child.x -= defaultSpeed; 
      } 
      if (_keyDownStatus[39]) 
      { 
       if (Player1Left == true) 
       { 
        Player1Left = false; 
        Player1Child.rotation += 180; 
        Player1Child.y -= (Player1Child.height - 5); 
        Player1Child.x -= Player1Child.width; 
       } 
       Player1Child.x += defaultSpeed; 
      } 
      if (_keyDownStatus[38]) 
      { 
       Player1Child.y -= defaultSpeed; 
      } 
      if (_keyDownStatus[40]) 
      { 
       Player1Child.y += defaultSpeed; 
      } 
      if (_keyDownStatus[96] && Player1Ready == true) 
      { 
       Player1Ready = false; 
       Player1CD = 8; 
       Player1Child.play(); 
      } 
      if (_keyDownStatus[65]) 
      { 
       if (Player2Left == false) 
       { 
        Player2Left = true; 
        Player2Child.rotation -= 180; 
        Player2Child.y -= (Player2Child.height - 5); 
        Player2Child.x -= Player2Child.width; 
       } 
       Player2Child.x -= defaultSpeed; 
      } 
      if (_keyDownStatus[68]) 
      { 
       if (Player2Left == true) 
       { 
        Player2Left = false; 
        Player2Child.rotation += 180; 
        Player2Child.y += (Player2Child.height - 5); 
        Player2Child.x += Player2Child.width; 
       } 
       Player2Child.x += defaultSpeed; 
      } 
      if (_keyDownStatus[87]) 
      { 
       Player2Child.y -= defaultSpeed; 
      } 
      if (_keyDownStatus[83]) 
      { 
       Player2Child.y += defaultSpeed; 
      } 
      if (_keyDownStatus[90]) 
      { 
       if (Player2Left == true) 
       { 
        stage.addChild(GreenLightLeft); 
        GreenLightLeft.x = Player2Child.x; 
        GreenLightLeft.y = Player2Child.y; 
        greenLightLeft = true; 
       } 
       if (Player2Child == false) 
       { 
        stage.addChild(GreenLightRight); 
        GreenLightRight.x = (Player2Child.x - Player2Child.width); 
        GreenLightRight.y = (Player2Child.y - Player2Child.height); 
        greenLightLeft = false; 
       } 
      } 
     } 
     private function clickStart(event:MouseEvent):void 
     { 
      gotoAndStop(2); 
     } 
     private function clickAbout(event:MouseEvent):void 
     { 

     } 
     private function clickDust(event:MouseEvent):void 
     { 

     } 
    } 

} 

第一帧具有前奏像开始文件不能访问空对象引用的属性或方法,等和框架2具有MovieClip实例称为Player1Child和MovieClip内部是另一个名为BladeInstance的MovieClip。当我运行它时,它会在输出框中给出Error#1009,并且错误(我猜)是在“常规”函数中。 您可以下载.as文件的实际.fla文件,地址为https://www.mediafire.com/folder/i93zm31p7513m/A_Game。 如果可以的话,请为两个动画片段中的“转动”部分提供另一个更简单的方法(虽然它已经很好地工作了)。提前谢谢你。AS3 - 错误#1009:在supportForce /普通()

+0

顺便说一下逻辑是我的哈哈。 :D – InfiniteParadox 2014-10-05 17:14:34

回答

0

好吧,我想通了,我的想法?
那么我得到它没有任何错误运行。

在Organised.fla进入你的符号“Player1Actual”

您层上“刀锋”,你会发现第1帧是空的。 (这是错误发生),它试图在符号'Player1Actual'的第1帧上找到'BladeInstance'。

我发现一个非常简单的解决方案就是将您的符号'BladePlayer1'复制到图层'Blade'上的第1帧。

确保第1帧“BladePlayer1”仍然有“BladeInstance” 然后,只需设置帧1的“BladePlayer1”阿尔法为0

那固定的错误给我一个实例名称。 希望这有助于。

+0

非常感谢!最后工作! – InfiniteParadox 2014-10-07 02:33:02

0

错误#1009俗称Null Pointer Exception.

这意味着你试图用访问属性“” (点)的空或未定义的变量。

您需要弄清楚未定义的变量是什么。

例如。寻找错误发生在哪条线上。
也许使用trace("var: "var);

有关于计算器这个话题堆只是搜索

Error #1009: Cannot access a property or method of a null object reference at
,你应该找到如何解决。

还检查了https://forums.adobe.com/message/4641806

+0

实际上,未知事物是BladeInstance,因为它在MovieClip Player1Child的frame1中不存在(它在Player1Child的frame2中播放)。我有没有希望?先谢谢你。 – InfiniteParadox 2014-10-05 17:13:40

+0

这应该是一个简单的修复。在stackoverflow上有很多类似的帖子。在给出参考之前,你可能正在处理“阶段”。用以下代码开始你的代码:'addEventListener(Event.ADDED_TO_STAGE,init);'以及此侦听器的私有函数init(e:Event)的处理函数:void removeEventListener(Event.ADDED_TO_STAGE,init); //在此之后编写代码 }'如果您正在编写框架(在框架中编写AS3代码)正如错误所述 - 您正在调用一些对象属性或方法为null。您的调试器将能够指向您尝试在帧2上调用的空对象。 – 2014-10-05 17:56:00

+0

真的很抱歉,但你能否找到我没有线索,我在上面的描述中添加了该文件的链接。很抱歉打扰你,但谢谢! – InfiniteParadox 2014-10-06 03:14:57