0

次の方法でフレームスクリプトを追加しようとしています。

private function addFrameScript(mc:MovieClip, label:String, func:Function, arg:*):void {
    var labels:Array = mc.currentLabels;
    var i:int = labels.length;

    while (--i > -1) {
        if (FrameLabel(labels[i]).name == label) {
            mc.addFrameScript(FrameLabel(labels[i]).frame-1, func(arg));
            return;
        }
    }



    trace("WARNING: The label '" + label + "' does not exist in the MovieClip '" + mc.name + "'");
}

private function dispatchFrameEvent(labelName:String):void {
    dispatchEvent(new Event(labelName, true));
}

addFrameScript(instanceName, "end", dispatchFrameEvent, "end");

しかし、それは追加されていないようで、理由がわかりません。通常、フレームスクリプトをメインタイムラインに追加しますが、タイムライン上のインスタンスには追加しません(上記の例のように)。

明らかに私が見逃しているものがあります...フレームスクリプトをトレースして、追加されているかどうかを確認する方法はありますか?

4

1 に答える 1

1

ここでの問題は、追加されるaddFrameScript関数が引数を取らないことです。したがって、渡す関数は引数なしで関数を返す必要があります

したがって、dispatchFrameEventは次のようになります。

private function dispatchFrameEvent(labelName:String):Function {
   return function func():void{
     dispatchEvent(new Event(labelName, true));
   }
}
于 2012-07-26T18:08:49.710 に答える