2010-06-15 50 views
2

我想向一個MovieClip添加一個init()函數,但是當我從scene1運行該函數時,在MovieClip中設置的變量尚未定義...... MovieClip被拖到了庫中的舞臺上。在定義變量之前運行AS3函數!

SCENE1:

mc.init(null); 

的MovieClip:

var _default = 5; 

function init(num) { 
    if(num == null) { 
      trace(_default); 
    } else { 
      trace(num); 
    } 
} 

這被跟蹤 「未定義」,而不是 「5」;有沒有解決這個問題的方法?

回答

1

問題是,直接放置在主時間軸中的任何代碼將始終運行在直接位於MovieClip中的代碼之前。

解決此問題的方法是讓Flash在時間軸和MovieClip中首先運行該代碼,然後在完成後從時間軸調用該函數。

要做到這一點是使用一個事件監聽器最簡單的方法:

時間軸:

addEventListener(Event.ENTER_FRAME, onEnterFrame); 

function onEnterFrame(e:Event):void { 
    myObject.init(null); 
    removeEventListener(Event.ENTER_FRAME, onEnterFrame); 
} 

這樣的時間表會等到第一架已經開始調用init函數的影片剪輯。

相關問題