2012-03-23 83 views
0

我做了一個as3框架來故意重新啓動movieclip,但我得到每個我調用的movieclip typerror。TypeError:術語未定義?

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

我試過了,沒有AS連接,但結果是一樣的。

代碼:

//Loop animation. 
addEventListener(Event.ENTER_FRAME, function (Reiniciar) { 
    if (MovieClip(root).Animacion.currentFrame==500){ 
     MovieClip(root).Animacion.gotoAndPlay(1); 
     MovieClip(root).Personaje.gotoAndPlay(1); 
     MovieClip(root).Personaje.Guy.gotoAndPlay(1); 
    } 
}); 

enter image description here

enter image description here

回答

1

在這行代碼:

if (MovieClip(root).Animacion.currentFrame==500){ 
      MovieClip(root).Animacion.gotoAndPlay(1); 
      MovieClip(root).Personaje.gotoAndPlay(1); 
      MovieClip(root).Personaje.Guy.gotoAndPlay(1); 
     } 

您試圖訪問一個名爲Animacion變量,另一個變量名爲Personaje,裏面有另一個變量名爲Guy。確保您在Flash舞臺上的影片剪輯的實例的名稱都是這樣命名的,圖片中顯示的是符號屬性選項卡中的類和符號名稱,而不是實例名稱。要設置實例名稱,請在舞臺上選擇您的MovieClip(將出現藍色輪廓),然後查看屬性選項卡

另外,變量名通常是小寫字母,駱駝大小寫(大寫的每個單詞的第一個字母)是爲了便於閱讀而保留給Class名稱的。

在這一行:

//Loop animation. 
addEventListener(Event.ENTER_FRAME, function (Reiniciar) { 

要創建並偵聽到進入幀事件匿名函數。我想你想給你的函數命名爲「Reiniciar」,但括號之間的內容是函數獲取的Event參數的名稱,而不是函數名稱。

爲您的代碼的首選語法是:

import flash.events.Event; 

//add event handler 
addEventListener(Event.ENTER_FRAME, reiniciar); 

//loop function  
function reiniciar(e:Event):void 
{ 

    if (MovieClip(root).animacion.currentFrame==500) 
    { 
      //animacion is the instance name of the Symbol Animacion 
      //and is placed in your main timeline 
      MovieClip(root).animacion.gotoAndPlay(1); 

      //there is a movieclip instance named personaje in your main timeline 
      MovieClip(root).personaje.gotoAndPlay(1); 
      //personaje has inside a movieclip instance named guy 
      MovieClip(root).personaje.guy.gotoAndPlay(1); 

     } 
} 

這應該工作,但是我勸你儘量不要過度使用ENTER_FRAME監聽器,因爲它們很昂貴的性能代價。例如,在這個例子中,如果MovieClip「animacion」已經達到500幀,可能你不需要問每一個幀,認爲它就像你汽車後座的惱人的孩子大喊「我們在那裏嗎?我們到了嗎?」每隔幾秒鐘。我建議你應該遵循ActionScript 3上的一些初學者教程來習慣語法,並更熟悉代碼背後的邏輯。

相關問題