Root
-A
-B
-C
-D
D->触发事件
捕获阶段: Root->A->B->C
捕获阶段: D
冒泡阶段: C->B->A->Root
package com.event {
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.display.Sprite;
public class EventFlow extends Sprite {
public function EventFlow() {
var a:Sprite = new Sprite();
var b:Sprite = new Sprite();
var c:Sprite = new Sprite();
var d:Sprite = new Sprite();
a.name = 'a';
b.name = 'b';
c.name = 'c';
d.name = 'd';
this.addChild(a);
a.addChild(b);
b.addChild(c);
c.addChild(d);
drawCircle(a, "A");
drawCircle(b, "B");
drawCircle(c, "C");
drawCircle(d, "D");
a.x = a.y = 60;
b.x = b.y = 60;
c.x = c.y = 60;
d.x = d.y = 60;
this.addEventListener(MouseEvent.CLICK, onClick);
this.addEventListener('apq', onRoot);
a.addEventListener('apq', onA);
b.addEventListener('apq', onB);
c.addEventListener('apq', onC);
d.addEventListener('apq', onD);
}
private function onRoot(e : Event) : void {
trace('root...', showTarget(e));
}
private function onD(e : Event) : void {
trace('D...', showTarget(e));
}
private function onC(e : Event) : void {
trace('c...', showTarget(e));
}
private function onB(e : Event) : void {
trace('b...', showTarget(e));
}
private function onA(e : Event) : void {
trace('a...', showTarget(e));
}
private function onClick(e : MouseEvent) : void {
var d : Sprite = (e.target as Sprite);
trace(d.name + "触发了click事件");
//d.dispatchEvent(new Event('apq', true));
}
private function drawCircle(a : Sprite, txt : String) : void {
var t:TextField = new TextField();
t.text = txt;
t.mouseEnabled = false;
a.graphics.beginFill(0xffffff * Math.random());
a.graphics.drawCircle(0, 0, 40);
a.graphics.endFill();
a.addChild(t);
}
private function showTarget(e : Event) : String {
return ('currentTarget: ' + e.currentTarget.name + ' target: ' + e.target.name);
}
}
}
单击圆D, 显示:
d触发了click事件
这次我们让D分发事件,并打开冒泡阶段
private function onClick(e : MouseEvent) : void {
var d : Sprite = (e.target as Sprite);
trace(d.name + "触发了click事件");
d.dispatchEvent(new Event('apq', true));
}
显示:
d触发了click事件
D... currentTarget: d target: d
c... currentTarget: c target: d
b... currentTarget: b target: d
a... currentTarget: a target: d
root... currentTarget: root1 target: d
设置捕获阶段:
//捕获阶段
this.addEventListener(MouseEvent.CLICK, onClick, true);
this.addEventListener('apq', onRoot, true);
a.addEventListener('apq', onA, true);
b.addEventListener('apq', onB, true);
c.addEventListener('apq', onC, true);
d.addEventListener('apq', onD, true);
d触发了click事件
root... currentTarget: root1 target: d
a... currentTarget: a target: d
b... currentTarget: b target: d
c... currentTarget: c target: d
分享到:
相关推荐
本文将深入探讨AS3事件流中的两个关键属性——`target`与`currentTarget`,并通过具体的示例来阐述它们的区别及实际应用。 #### 二、事件流基础 在AS3中,事件流主要分为三个阶段:捕获阶段(CAPTURING PHASE)、...
7. **事件处理**:在处理流数据时,需要监听和响应滤波器之间的事件,例如数据到达、过滤器状态改变等,这通常通过实现IAsyncReader接口和处理IMediaEventEx接口的事件完成。 8. **数据流同步**:分离出来的视频流...
开源码 AS3 扩展瀑布流功能的 DataGrid 组件是一种强大的工具,它允许开发者在 ActionScript 3(AS3)环境中实现具有视觉吸引力和高度交互性的数据展示。这个组件扩展了标准的 Flex DataGrid 控件,引入了瀑布流布局...
2. **事件流**:AS3有三种事件流:冒泡、捕获和目标。冒泡流从最具体的节点(如按钮)向上冒泡到最不具体的节点(如舞台)。捕获流则相反,从最不具体的节点开始向下处理到最具体的节点。目标流是指事件直接到达目标...
总结来说,这个"UDP.rar"压缩包中的"UDP.fla"文件很可能是为了展示如何在AS3环境中使用UDP进行通信,这对于开发实时互动的Flash应用,如多人在线游戏或音视频流媒体服务,具有重要的学习价值。通过解析和运行这个...
6. **事件处理**:AS3中的事件模型允许开发人员对用户操作和播放状态变化作出反应。例如,`NetStatusEvent.NET_STATUS`用于监控网络状态,`VideoEvent.COMPLETE`表示视频播放完毕。 7. **自定义功能**:纯AS3的...
### 在网页中播放ASF FLV流媒体文件的关键技术与应用 #### 一、网页中播放ASF流媒体文件的原理及实现方法 ##### 1. 嵌入Windows Media Player ActiveX控件 在网页中播放ASF(Advanced Systems Format)流媒体文件...
通过对内存管理、事件循环和代码结构的优化,可以提升AS3.0应用的运行效率。理解垃圾回收机制和避免不必要的计算是提升性能的关键。 通过"Flash_ActionScript3.0_samples_CS4"这个资源包,你可以逐步探索并实践上述...
2. **事件的传播**:事件对象通过事件流进行传播,事件流包括三个阶段:捕获阶段、目标阶段和冒泡阶段。在捕获阶段,事件从舞台的最顶层向舞台的最底层传播;到达目标阶段,事件到达引发事件的对象;最后,在冒泡...
AS3的基础模块涵盖了语言语法、对象模型、类和接口、事件处理、数据结构、网络通信等多个方面。在深入探讨这些知识点之前,让我们先对AS3有一个概览。 一、AS3语言基础 AS3采用了更严格的面向对象编程(OOP)模型,...
DisplayObject容器模型(如MovieClip、Sprite)用于创建图形和动画,EventDispatcher机制处理事件流。 四、ActionScript 3.0的显示列表 显示列表是AS3中负责管理舞台上的可视对象层次结构。MovieClip和Sprite是最...
8. 媒体处理:Flash Player支持音频和视频播放,AS3提供了Sound和Video类,以及NetStream和NetConnection对象,用于流媒体处理和实时通信。 九、组件使用 9. Flex组件:Flex框架提供了一系列预定义的UI组件,如...
了解事件流、事件对象和事件监听器的工作原理对于构建响应用户交互的应用程序至关重要。“闹钟”示例展示了如何使用事件来创建定时触发的功能。 ### 显示编程 显示编程涉及到图形和视觉元素的管理和动画处理。AS3...
AS3 采用了基于事件流的新模型,这意味着事件的触发和处理更加灵活。开发者可以通过 `addEventListener` 和 `removeEventListener` 方法来添加和移除事件监听器。 **2. 事件类(Event classes)** AS3 中的事件类...
AS3中的事件模型是基于观察者模式的,它使得一个对象(称为事件调度器或事件源)能够在特定状态改变时通知其他对象(称为事件监听器)。在AS3中,事件机制被广泛应用于用户交互、数据交换、动画控制等场景。 首先,...
ASF(Advanced Systems Format)是一种由微软公司开发的高级流媒体协议规范。它主要用于传输音频、视频和其他多媒体内容,支持实时流媒体播放。ASF文件格式允许数据在互联网上进行高效的传输,并且能够适应不同的...
3. **事件处理**:讲解如何添加事件监听器、派发事件以及事件流的概念。 4. **面向对象编程**:深入讲解类、接口、继承、多态的使用方法。 5. **错误处理**:如何捕获和处理运行时错误。 6. **性能优化**:指导如何...
10. **声音和视频处理**:AS3提供了Sound和Video类,用于播放、处理和合成音频,以及捕获、播放和操纵视频流。 11. **动画和图形**:利用Tween类和Shape对象,开发者可以创建平滑的动画效果。Graphics类提供了低...
首先,要实现RTMP视频流的播放,你需要理解AS3.0中的NetConnection和NetStream对象。NetConnection是与服务器建立连接的基础,而NetStream则负责处理实际的数据传输,如视频流。 1. **建立RTMP连接**: 在AS3.0中...