2017-11-11 238 views
-1

我在我的fla文件中創建了一個符號(MovieClip)並將其添加到幀中。然後我給它的實例名稱在屬性面板:「myMC」我無法控制從AS3級文件舞臺中的MovieClip

然後試圖從我的類文件控制它在目錄:ROOT \測試\ MyClass.as

package Test { 
    import flash.display.MovieClip; 

    public class MyClass extends MovieClip{ 
     public function MyClass() { 
      var myMC:MovieClip = getChildByName("myMC") as MovieClip; 
      myMC.gotoAndStop(2); 
     } 
    } 
} 

之後,進口類FLA想跑:

import Test.MyClass; 
var LaunchMyClass:MyClass = new MyClass(); 

,並得到這個錯誤,

TypeError: Error #1009: Cannot access a property or method of a null object reference. 

at Test::MyClass() 
at Test_fla::MainTimeline/frame1() 

請注意,我試圖續在舞臺中已經放置一個MovieClip,而不是從庫中調用它。

回答

2

首先,總是張貼您的問題得到的ErrorMessages。使事情變得更容易。

但是,現在讓我們來看看你的腳本:

我在FLA文件中創建一個符號(影片剪輯),並把它添加到 框架。使用 addChild(myMC);

如果你把它在舞臺上,並給了影片剪輯的實例名稱沒有必要打電話的addChild然後,添加它作爲一個孩子。

as3使用大寫字母來啓動類名非常方便,所以不用myClass,而是將其稱爲MyClass。

您的軟件包缺少構造函數,函數的名稱必須與類的名稱和.as文件名相同。

getChildByName()方法需要一個字符串,所以你必須在報價

package { 
    import flash.display.MovieClip; 


    public class MyClass extends MovieClip { 

     // Constructor 
     public function MyClass() { 
      // constructor code 
      var myMC:MovieClip = getChildByName("myMC") as MovieClip; 
      myMC.gotoAndStop(2); 
     } 
     // End Constructor 
    } 

} 
+0

我想你說什麼來包裝myMc它拿出另一個問題。編輯該職位的詳細信息。 – theRaggedyMan

+0

好吧,我以爲你使用MyClass.as作爲你的fla的文檔類。你究竟想要達到什麼目的以及MyClass的目的是什麼? @theRaggedyMan – Patang

+0

我想用MyClass控制場景中的動畫片段。我有一個複雜的遊戲,有很多movieclip init。我曾經從fla文件控制它們,但代碼在時間上變得混亂,所以我想用類來分離我的代碼。 – theRaggedyMan