Delegate
ありがたいことに最近のFlash仕事はPlayer7の開発が多くてActionScript2.0もだんだん理解できてた感じ(世間的にはActionScript3.0の話題が多いので大分取り残されてる感もしなくはないけど)
クラスを作成するってのもまあそこそこ慣れてきたけど、ちょっとここ最近悩ましかったのはクラスをMovieClipから継承させるかObjectで継承させるかというところだった。特にMovieClipでライブラリのAS2.0書き出しをすると今までのAS1.0に近い間隔で便利といえば便利。MovieClip継承なんでonLoadイベントだって動くし階層も把握しやすい。ただソースを追うときはいちいちflaのライブラリ見たりするんで面倒といえば面倒、
そんなわけでObjectを継承してタイムラインで!new Class()"という感じのやり方もいろいろやっていたが、中にイベントハンドラとか使うとどうにもスコープが変ってしまいしっくりこない面が多々、、.。
という感じでしばらくの間、割と試行錯誤でMovieClip継承クラスとObject継承クラスを混在させてみたりとやってたんですが最近Delegateクラスを使いまくってかなり;Object継承クラスの形にかなりなれてきましたよ。
例えばOnEnterFrameBeaconと組み合わせてDelegaeをつかって見るとこんな感じデス。
//クラスtest1.as
import mx.transitions.OnEnterFrameBeacon;
import mx.utils.Delegate;
class test1 {
var oEf:Object;
var n:Number = 0;
function test1(){
trace("test1");
oEf = {};
OnEnterFrameBeacon.init();
oEf.onEnterFrame = Delegate.create(this, sonomamaCopyPeTTeDoutoyo_w);
MovieClip.addListener(oEf);
}
function sonomamaCopyPeTTeDoutoyo_w(){
if(n>=10){
MovieClip.removeListener(oEf);
} else {
n++;
trace(n)
}
}
}
//-----
//fla
var o:test1 = new test1();