2012-10-04 82 views
0

我收到的錯誤:AS3 - 奇怪的錯誤發生1010

TypeError: Error #1010: A term is undefined and has no properties. 

它引用術語是創建一個影片剪輯。創建代碼如下:

var Cursor = new CursorImg(); 
GameMenu.addChild(Cursor); 

這裏是在那裏訪問:

GameMenu.Cursor.gotoAndStop(1); 

我不知道什麼是錯,但這個被觸發時,我得到這個錯誤。我將它與其他可行的代碼進行了比較,除了命名動畫片段及其父項外,其他內容完全相同。

有誰知道可能是什麼原因造成的?

+0

謝謝你所有的答案,問題現在已修復。 –

回答

0

駝峯考慮您的代碼段,Cursor變量是局部函數,因爲它是在某個函數內部定義的,而不是在任何函數之外定義的,這樣它就會成爲類的一個屬性。因此,從cursor=new CursorImg();分開var cursor:MovieClip;,並將前者置於任何功能之外,然後再次測試。我想你需要經常提及那個'光標',這樣getChildByName調用會以某種方式降低性能。

0

很難知道發佈的信息數量有限,但它看起來像光標不是GameMenu的財產,只是一個孩子。

試試這個:

var cursor = new CursorImg(); 
gameMenu.addChild(cursor); 
cursor.name = "cursor"; 

和:

gameMenu.getChildByName("cursor").gotoAndStop(1); 

這是不是真的來完成你想要什麼是最好的方式,但其他方法依賴於你的代碼的結構,我不不知道。

另請注意,變量名稱的AS3編碼慣例是使用camelCase(小寫的第一個字母的第一個字母,下一個字母的第一個字母大寫)。

0

您已經定義的變量cursor通過new CursorImg()然後將其添加到gameMenu和您嘗試訪問gameMenu.cursor但真的存在這樣的電影gameMenu名爲cursor沒有對象。但是,您只需使用您定義的變量cursor即可訪問附加的電影。

cursor.gotoAndStop(1); 

在AS3中,您不能通過它的名稱訪問動態添加的movieclip,就像我們在AS2中所做的一樣。您只能在MovieClip職業getChildByName()功能的幫助下訪問電影。所以,你也可以訪問該影片剪輯像

var cursor = new CursorImg(); 
gameMenu.addChild(cursor); 
cursor.name = "cursor"; 

然後在任何地方訪問它在你的class

var cursor:MovieClip = gameMenu.getChildByName("cursor") as MovieClip; 
cursor.gotoAndStop(1); 

FYI:添加到舞臺的任何事情DisplayObject下通常包裝,所以我們需要類型轉換它爲了得到正確的類型。

這可能是更好的練習駝峯風格命名variable的名字,因爲標準的方法是vaiables只爲類中的每個單詞的第一個字母應該是CAPITAL