こんばんは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
});