AS3でイベントのブロードキャスト。
AS3でイベントをブロードキャストしたくて、 色々試してたら、意外に素直に出来る事が分かったよ。 間にイベントハンドラで1クッション入れるだけで出来た。
例えば、こんな感じの SomeView なムービークリップがいたとして、
public class SomeView extends Sprite
{
public function SomeView():void
{
}
}
それの子要素にn個の SomeButton がいたとする。
public class SomeButton extends Sprite
{
public function SomeButton():void
{
}
}
で、どれか1個の SomeView がクリックされたら、 全部にイベントを送信したい場合とか、
public function SomeView():void
{
var b:SomeButton;
for (var i:int = 0; i < 20; i++)
{
b = addChild(new SomeButton()) as SomeButton;
// SomeButtonを初期化。
b.initialize();
// 自分がクリックされたら、親のリスナーをコール。
b.addEventListener(MouseEvent.CLICK, clickListener);
}
}
private function clickListener(evt:MouseEvent):void
{
// ココでイベントをブロードキャスト。
dispatchEvent(new Event('someType'));
}
親をこんな感じにしておいて、 子供側では、
public function SomeButton():void
{
// ココではparentが取れない(時がある)。
}
public function initialize():void
{
// 親からブロードキャストされたイベントを補足。
parent.addEventListener('someType', someTypeListener);
}
public function someTypeListener(evt:Event):void
{
// ココに処理を書く。
}
こうしておくと結構シンプルに書けるんじゃないかと。
色々殴り書き感が否めないのはご愛嬌 ![]()
berian 氏、こんな感じでどうでしょ?
- Posted at:
- 2008/01/20 14:12:48
- 2 Comments
- 1 TrackBack
- Tags:
- ActionScript
- Flash
- Trackback:
- http://humming.via-kitchen.com/2008/01/20/broadcast-event-on-actionscript3/trackback/
TrackBacks
[CSS][その他]巡回 - 常山日記
[subversion]TortoiseSVNのマニュアル読んでメモ flickrの写真セットをiPhoneに移すことができる『flickr2iPhone』 iUiを使って簡単iPhoneライクなページ作成をしてみた フリーの高品質なアイコンがダウンロードできるサイト -iconspedia フィードに含まれるニコニコ動画へ
- Created at:
- 2008/01/20 15:37:01
Comments
berian
キレイにまとまってる!!
これが一番違和感がない。
やっぱdispatchEventは使えますね。
かなり重宝してます。
この方向でやっていきます!
ありがとうございます!!
nobu
僕もちょっとこの方向でやってみようと思います。
もっと良い案が見つかったら教えてくださいまし。