2017-02-16 86 views
1

目前,我仍然对flash中的类很陌生。我一直在观看关于它们的大量视频,我正在尝试学习更多关于面向对象编程的知识。这就是说,我开始定义变量并将它们分配给我的库中的符号,全部都放在我的类文件中。当我在我的代码使用这些变量,我得到一个错误信息弹出它说以下在导致崩溃的类文件中定义变量

错误消息:

TypeError: Error #1009: Cannot access a property or method of a null object reference. at Movement()[C:\Users\Kevin\Main Directory\Flash\Clients\org\tcdsb\ZenithsReach\Movement.as:12] at game/frame1()[game::frame1:4] at runtime::ContentPlayer/loadInitialContent() at runtime::ContentPlayer/playRawContent() at runtime::ContentPlayer/playContent() at runtime::AppRunner/run() at ADLAppEntry/run() at global/runtime::ADLEntry()

我Movement.as类文件:

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

    public class Movement extends MovieClip 
    { 
     function Movement() 
     { 
      trace("SUCCESS | Constructed Movement Class"); 
      down_dpad.addEventListener(TouchEvent.TOUCH_BEGIN, moveDownTouchBEGIN); 
      down_dpad.addEventListener(TouchEvent.TOUCH_END, moveDownTouchEND); 
      var inMotion:Boolean = false; 

      var area1:Boolean = true; 
      var area2:Boolean = false; 
      var area3:Boolean = false; 

      var player1:Boolean = true; 
      var playerPosKeeper_mc:MovieClip = new mc_PlayerPosKeeper ; 
      addChild(playerPosKeeper_mc); 
      playerPosKeeper_mc.x = 384; 
      playerPosKeeper_mc.y = 46; 

      var up_dpad:MovieClip = new dpad_Up ; 
      addChild(up_dpad); 
      up_dpad.x = 55; 
      up_dpad.y = 346; 

      var down_dpad:MovieClip = new dpad_Down ; 
      addChild(down_dpad); 
      down_dpad.x = 57; 
      down_dpad.y = 442; 

      var left_dpad:MovieClip = new dpad_Left ; 
      addChild(left_dpad); 
      left_dpad.x = 19; 
      left_dpad.y = 382; 

      var right_dpad:MovieClip = new dpad_Right ; 
      addChild(right_dpad); 
      right_dpad.x = 118; 
      right_dpad.y = 382; 

      var menu_dpad:MovieClip = new dpad_Menu ; 
      addChild(menu_dpad); 
      menu_dpad.x = 61; 
      menu_dpad.y = 386; 

      var run_dpad:MovieClip = new dpad_Menu ; 
      addChild(run_dpad); 
      run_dpad.x = 684; 
      run_dpad.y = 386; 

      var barrierRoof1_game:MovieClip = new game_BarrierRoof ; 
      addChild(barrierRoof1_game); 
      barrierRoof1_game.x = 0; 
      barrierRoof1_game.y = 0; 

      var barrierRoof2_game:MovieClip = new game_BarrierRoof ; 
      addChild(barrierRoof2_game); 
      barrierRoof2_game.x = 0; 
      barrierRoof2_game.y = 470; 

      var barrierSide1_game:MovieClip = new game_BarrierSide ; 
      addChild(barrierSide1_game); 
      barrierSide1_game.x = 790; 
      barrierSide1_game.y = 0; 
      function moveDownTouchBEGIN(e:TouchEvent):void 
      { 
       if (player1 == true) 
       { 
        if (area1 == true) 
        { 
         if (playerPosKeeper_mc.hitTestObject(barrierRoof1_game)) 
         { 

         } 
        } 
        else 
        { 
         // add other areas in the future 
        } 
       } 
       else 
       { 
        // if your not player1, then we need to find out what you are, 
        // and give you the proper walking animations 
       } 
      } 

      function moveDownTouchEND(e:TouchEvent):void 
      { 

      } 

     } 

    } 

} 
+0

你有一个正确的答案。使用“✓”标记为已解决,以便其他人知道有工作答案。 –

回答

3

您已经做...

down_dpad.addEventListener(TouchEvent.TOUCH_BEGIN, moveDownTouchBEGIN); 

down_dpad对象之前在行

创建
var down_dpad:MovieClip = new dpad_Down ; 

所以只是将其向上

你也有忘记括号内为你的类:
必须new dpad_Down();工作...不是目前使用的new dpad_Down ;

+0

嗨。我已经解决了这个问题,但是我面临的问题是我的对象没有被添加到舞台上。 – UnAlpha

+0

我无法发布我的代码,因为它太长了。所有这一切都可以在http://pastebin.com/hN8w0Rvk – UnAlpha

+0

查看我没有强大的影片剪辑,但认为这是因为你没有设置对象的宽度和高度(不确定它们可以自动把它从源头中取出) – Selirion