上面显示了事件的三个阶段,不过有些事件只有目标阶段,比如TimerEvent,更多可以看帮助API的。
下面做个flash演示,请点下面flash里蓝色区域。
这是一个AS3的事件流的演示demo,如果你看不到这个flash,请到文章页面查看!
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
[SWF(width=600, height=300, backgroundColor=0xC7EDCC)]
public class EventPhaseTest extends Sprite
{
private var child:Sprite;
private var container:Sprite;
private var txt:TextField;
public function EventPhaseTest():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
init();
// child 目标
child.addEventListener(MouseEvent.CLICK, childClickHandler);
// 容器 冒泡
container.addEventListener(MouseEvent.CLICK, containerClickHandler);
// 捕获
container.addEventListener(MouseEvent.CLICK, containerCatchClickHandler, true);
}
// 目标冒泡阶段
private function childClickHandler(e:MouseEvent):void
{
debugTrace("-------------------- 子对象目标阶段------------------------------------");
debugTrace("e.eventPhase = ", e.eventPhase);
debugTrace("e.target.name = ", e.target.name);
}
// 容器冒泡阶段
private function containerClickHandler(e:MouseEvent):void
{
debugTrace("-------------------- 容器冒泡侦听------------------------------------");
debugTrace("e.eventPhase = ", e.eventPhase);
debugTrace("e.target.name = ", e.target.name);
}
// 捕获阶段
private function containerCatchClickHandler(e:MouseEvent):void
{
debugTrace("-------------------- 捕获阶段------------------------------------");
debugTrace("e.eventPhase = ", e.eventPhase);
debugTrace("e.target.name = ", e.target.name);
// 终止事件流
//e.stopPropagation();
}
private function debugTrace(... msgList):void
{
var msg:String = "";
for (var i:int = 0; i < msgList.length; i++)
{
msg += msgList[i];
}
trace(msg);
txt.appendText(msg + '\n');
}
private function init():void
{
// container
container = new Sprite();
container.name = "container";
container.graphics.beginFill(0xCC9933, 1);
container.graphics.drawRect(0, 0, 500, 50);
container.graphics.endFill();
container.x = 50;
container.y = 10;
addChild(container);
// child
child = new Sprite();
child.name = "child";
child.graphics.beginFill(0x00FFCB, 1);
child.graphics.drawRect(0, 0, 300, 30);
child.graphics.endFill();
child.x = 100;
child.y = 10;
container.addChild(child);
// txt
txt = new TextField();
txt.type = "input";
txt.border = true;
txt.width = 500;
txt.height = 200;
txt.x = 50;
txt.y = 80;
txt.text = "请点击上面蓝色区域,测试时间的3个阶段\n";
addChild(txt);
}
}
}
» 转载请注明来源:www.litefeel.com » 《AS3 事件冒泡 目标阶段 捕获阶段 冒泡阶段 eventPhase》
» 本文链接地址:https://www.litefeel.com/event-description-bubble-up/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
» 本文链接地址:https://www.litefeel.com/event-description-bubble-up/
» 订阅本站:www.litefeel.com/feed/
» Host on Linode VPS
This post was last modified on 2019 年 03 月 04 日 01:07
View Comments (2)
很形象!
经典,不错