2017-02-16 31 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