2013-05-20 53 views
1

我試圖在MovieClip上編寫函數,並從根剪輯調用它。什麼在ActionScript 3正常工作似乎並沒有被在ActionScript 2,正常工作Actionscript 2在MovieClip上定義函數的正確方法

_root影片剪輯的第1幀:

var newMovieClip:MovieClip = _root.attachMovie('Notification', id, 0); 
newMovieClip.SetNotificationText("Test text"); 

Notification影片剪輯的第1幀:

function SetNotificationText(inputText : String){ 
    notificationText.text = inputText; 
} 

結果是創建了MovieClip,但文本未更改。

我做錯了嗎?

回答

2

要在AS2中添加函數的電影剪輯,你需要使用這些方法之一:

  1. 的方法添加到原型的MovieClip:

    MovieClip.prototype.SetNotificationText = function(inputText:String):Void 
    { 
        if(this["notificationText"] !== undefined) 
        { 
         // If we're going to use the prototype, at least do some checks 
         // to make sure the caller MovieClip has the text field we expect. 
         this.notificationText.text = inputText; 
        } 
    } 
    
    newMovieClip.SetNotificationText("Test text"); 
    
  2. 製作的影片剪輯和參數的功能:

    function SetNotificationText(mc:MovieClip, inputText:String):Void 
    { 
        mc.notificationText.text = inputText; 
    } 
    
    SetNotificationText(newMovieClip, "Test text"); 
    
  3. 將該方法直接添加到新創建的MovieClip:

    var newMovieClip:MovieClip = _root.attachMovie('Notification', id, 0); 
    
    newMovieClip.SetNotificationText(inputText:String):Void 
    { 
        notificationText.text = inputText; 
    } 
    
    newMovieClip.SetNotificationText("Test text"); 
    

方案2是最佳的整體 - 這是最乾淨的,避免了爲每一個新的MovieClip創建新功能的開銷。它還避免了與原型相混淆,最好應該使用原型來添加通用方法,例如Array上的removeItem()方法。