2012.01.11 | mucho
こんばんはmuchoです。
今日知ったんですが、addFrameScriptなる隠しメソッド?
があるとのこと
public function addFrameScript(frame:uint, notify:Function):void
言語バージョン : ActionScript 3.0
Playerのバージョン : Flash Player 9
指定したフレームにスクリプトを追加します。
こんな技が・・・もしかして使うかも?
ラベルでも飛びたいだろうということでクラスを作ってみました。
AddLabelScript.as
package { import flash.display.FrameLabel; import flash.display.MovieClip; import flash.display.Scene; public function AddLabelScript(mc:MovieClip, label:*, func:Function = null, arg:Array = null):void { var frms:Array = []; var f:Function; if(func != null){ f = function():void{ func.apply(mc, arg); }; } if (label is Number) { frms.push(int(label)); } else if(label is String) { var ss:Array = mc.scenes; for each(var s:Scene in ss) { var ls:Array = s.labels; for each(var l:FrameLabel in ls) { if (l.name == label) { frms.push(l.frame); } } } } for (var i:int = 0; i < frms.length; i++ ) { var frm = frms[i]; if (frm > 0 && frm <= mc.totalFrames) { mc.addFrameScript(frm, f); } } } } 使うときは AddLabelScript(this, "label1", function() { trace("label1 is "+ currentFrame); }); とか AddLabelScript(mc, this.totalFrames, function() { trace("last frame"); this.stop(); //ここでのthisはfunctionを埋め込んだmc });