Flash AS2でフレームのラベル名を収得する方法

モンハンばっかじゃあれなので技術の話を少し。
Flash AS3ではフレームのラベル名を簡単に収得できるようになりましたね。
でもAS2ではできない…ぐすん…
そんなあなたのための技術指南ですw
かなり無理やりですが、AS1レベルで収得することができます。


例を一つ。たとえばめんどいのでこんなの作りたいとします。

count = 6;
for(var i=1;i<=count;i++){
	this["sound_"+i] = new Sound();
	this["sound_"+i].attachSound("s_"+i);
	this["click_"+i].onRelease = function(){
		soundon(this._parent["sound_"+i]);
		trace(i);
	};
}

click_1から6までのボタンがあって、押した時に音を鳴らしたい!ってイメージです。
一見動きそうに見えますが、this["click_"+i].onReleaseの命令はクリックしたときに発動するので、この場合iの数値はthis["click_1"]を押そうがthis["click_6"]を押そうが7になってしまいます。
まあ、みんな一度はやってみて脱力するところだと思いますが…


AS2までの命令では、ラベルの名前を拾ってくることはできません。そのため押したボタンに対して何番、という処理はできません。
しかし、かなり無理やりですが収得する方法があります。
それはこう。

count = 6;
for(var i=1;i<=count;i++){
	this["sound_"+i] = new Sound();
	this["sound_"+i].attachSound("s_"+i);
	this["click_"+i].onRelease = function(){
		this._parent.ftext.text = this;
		var j = this._parent.ftext.text.substr(-1,1);
		soundon(this._parent["sound_"+j]);
		trace(j);
	};
}

ラベル名ftextのダイナミックテキストを画面外に用意し、まず変数ftextに自分を代入。
この時点でテキストに_levelから始まるラベル名が表示されます。
それを再度収得、ぶった切りすれば…取れた!


まあものすごい無理やりです。美しくないですね…
とはいっても、これを使えばAS2でもラベルが収得できるので、かなり汎用性のあるコードを書くことができます。
最新技術も大切だけど、今ある技術でどうにかする発想力もクリエイターには必要だよ、ってことで。