1

MovieClip に関数を記述して、ルート クリップから呼び出そうとしています。ActionScript 3 で正常に動作するものが、ActionScript 2 では正常に動作していないようです。

_rootムービークリップのフレーム 1 :

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

Notificationムービークリップのフレーム 1 :

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

その結果、ムービークリップは作成されますが、テキストは変更されません。

私はこれを間違っていますか?

4

1 に答える 1

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. 関数の MovieClip と引数を作成します。

    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 は全体的に最適です。これは最もクリーンで、新しいムービークリップごとに新しい関数を作成するオーバーヘッドを回避します。また、プロトタイプをいじるのも避けられます。これは、せいぜいremoveItem()メソッド onのようなジェネリック メソッドを追加するために使用する必要がありますArray

于 2013-05-20T01:24:39.183 に答える