Created
July 13, 2010 06:44
-
-
Save soundkitchen/473537 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (!event || !event.bubbles) return; | |
//// Bubble the event as far as possible. | |
var currentTarget:Object = this.target; | |
while ( currentTarget && currentTarget.hasOwnProperty("parent") | |
&& (currentTarget = currentTarget.parent) ) | |
{ | |
if (currentTarget is IBubbleEventHandler) | |
{ | |
// onEventBubbled() can stop the bubbling by returning false. | |
if (!IBubbleEventHandler(event.currentTarget = currentTarget).onEventBubbled(event)) | |
break; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package | |
{ | |
import flash.display.Sprite; | |
import org.osflash.signals.DeluxeSignal; | |
import org.osflash.signals.events.IEvent; | |
import org.osflash.signals.events.IBubbleEventHandler; | |
import org.osflash.signals.events.GenericEvent; | |
/** | |
* as3-signals のサンプル 2 | |
*/ | |
public class Sample1 extends Sprite | |
{ | |
private var _signal:DeluxeSignal; | |
public function Sample1() | |
{ | |
_signal = new DeluxeSignal(this); | |
// シグナルにリスナーを登録 | |
_signal.add(signalHandler); | |
// シグナルをトリガー | |
// 引数に渡すのは GenericEvent | |
_signal.dispatch(new GenericEvent()); | |
} | |
/** | |
*シグナルがトリガーされたら呼ばれる | |
*/ | |
private function signalHandler(evt:IEvent):void | |
{ | |
// 擬似的なイベントのロジックが走る | |
trace(evt.target, evt.currentTarget, evt.signal); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Sample1 extends Sprite | |
implements IBubbleEventHandler | |
{ | |
private var _signal:DeluxeSignal; | |
private var _box:Sprite; | |
public function Sample1() | |
{ | |
// 子要素を作ってステージに置く | |
_box = addChild(new Sprite()) as Sprite; | |
_box.graphics.beginFill(0x00); | |
_box.graphics.drawRect(0, 0, 100, 100); | |
_box.graphics.endFill(); | |
// _box をターゲットにしてシグナルを作る | |
_signal = new DeluxeSignal(_box); | |
// シグナルにリスナーを登録 | |
_signal.add(signalHandler); | |
// イベントの引数 bubbles を true にしてシグナルをトリガー | |
_signal.dispatch(new GenericEvent(true)); | |
} | |
/** | |
* シグナルがトリガーされたら呼ばれる | |
*/ | |
private function signalHandler(evt:IEvent):void | |
{ | |
// この時は target も currentTarget も _box になる | |
trace(evt.target, evt.currentTarget, evt.signal); | |
} | |
/** | |
* シグナルがバブリングしてくると呼ばれる | |
*/ | |
public function onEventBubbled(evt:IEvent):Boolean | |
{ | |
// この時は target は _box で currentTarget は this になる | |
trace(evt.target, evt.currentTarget, evt.signal); | |
// false を返すとバブリングが止まる | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment