Delegateクラス
OOP勉強会に行って来たときの復習。
Delegateという聞ききなれないクラスの話があった。
やりかたとかも教えてもらったので家帰って使ってみようと思い
とりあえずググッたら野中さんのサイトにDelegateクラスのことがバッチリのっていました。
まあ一応自分でもこれがあるとmx2004のコンポーネントでちょっと使い勝手よくなるなあとおもったこともあるのでエントリーしておきます。
たとえばボタンコンポーネント三つ(btn1,btn2,btn3)ステージに置いてそれぞれにclickのイベントつけるときは
function click (oEvent) {
switch (oEvent.target){
case btn1:
trace("ボタン1");
break;
case btn2:
trace("ボタン2");
break;
case btn3:
trace("ボタン3");
break;
default:
}
}
btn1.addEventListener("click", this);
btn2.addEventListener("click", this);
btn3.addEventListener("click", this);
てな感じでやってたんだけど
なんかfuncitonの中で条件分岐するのは面倒だなあと個人的には少し思ってました。
で、Delegateクラスを使うと
import mx.utils.Delegate;
function func1 () {
trace("ボタン1");
}
function func2 () {
trace("ボタン2");
}
function func3 () {
trace("ボタン3");
}
btn1.addEventListener("click", Delegate.create(this,func1));
btn2.addEventListener("click", Delegate.create(this,func2));
btn3.addEventListener("click", Delegate.create(this,func3));
こんな感じに書けるのでなかなか良いなあと思ったのです。