googleで
カスタム検索
プロフィール

けろ&ひな

Author:けろ&ひな
大阪在住。
親ばか。
最近、転職したよ。でも、やってることは一緒なんだけどね。;-P

最近の記事
カテゴリー
月別アーカイブ
最近のコメント
最近のトラックバック
スポンサード リンク

スポンサーサイト--------(--)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[flash][as2]Delegateとthis2009-05-19(Tue)

今まで使ってきたプログラム言語で考えると、ちょっと躓いてしまう罠。
var this_a:String = "A";
・・・
button_mc.onRelease = function() {
trace(this.this_a);
}

ボタン押した時に、イベント付けてるとこに宣言した
this_aをボタンのファンクションから見ようとすると見えない。
これは、ボタンのイベントの中は「this=button_mc」になっているからで
button_mcにはthis_aなんて無いから見えない。
見ようと思ったら、強引に
button_mc.this_a = this_a;
なんてしとけば見える。
でも数が多くなるとそうは行かないし、それじゃどこかでおかしなことになるのは
目に見えてる。
そこで登場するのが、「Delegate」。
var this_a:String = "A";
・・・
button_mc.onRelease = Delegate.create(this, function() {
trace(this.this_a);
});
とすると、
Delegate.create で指定した、最初の引数 this が実行されるファンクションの場所(?)
となるので、「this.this_a」で見たかった「this_a」が見えるようになる。
と、これでいいんだけど、できればもうちょっと見やすくしたいんで
var this_a:String = "A";
・・・
button_mc.onRelease = Delegate.create(this, release);
・・・
private function release():Void {
trace(this.this_a);
}

くらいにはしたいところ。

ここで、ちょっと疑問。
Delegateするファンクションはprivate?public?
どっちでもお構いなしな気がする、、、。
関連記事

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

コメント

工事中
RSSフィード
リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。