`

EventDispatcher类详解

阅读更多
Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实例,在as3中所有的显示对象都可以发送事件,因为as3中所有的显示对象都是EventDispatcher子类DisplayObject的实例。

       发送事件有三种方式:继承EventDispatcher,如sprite等显示对象、复合EventDispatcher或其子类、实现IEventDispatcher接口。

       个人认为复合EventDispatcher在实际应用中用的比较多,没有找到合适例子,自己写了一个很简单的,仅供参考,为了演示把简单的问题复杂话了,首先画一个矩形,点击矩形后发送一个事件,矩形接收事件后alpha变为0;

自定义事件:

package{
       import flash.events.Event;

       public class MyEvent extends Event{
             public static const ALPHA:String = "alpha";
               public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
                super(type, bubbles, cancelable);
               }
         }
}

package{
import flash.display.Sprite;

public class Sample extends Sprite{
        public function Sample(){
             this.graphics.beginFill(0xff6600);
             this.graphics.drawRect(50,50,100,50);
             this.graphics.endFill();
             this.addEventListener(MyEvent.ALPHA,blackHandler);
       }
       private function blackHandler(evt:MyEvent){
             this.alpha = 0;
       }
    }
}

主类:

package{
       import flash.display.Sprite;
       import flash.events.MouseEvent;

       public class Main extends Sprite{
              private var sample:Sample;
              public function Main(){
               sample = new Sample();

               //注册事件侦听器
               sample.addEventListener(MouseEvent.CLICK,clickHandler);
               addChild(sample);
        }
        private function clickHandler(evt:MouseEvent){

              //发送事件
               sample.dispatchEvent(new MyEvent(MyEvent.ALPHA));
        }
     }
}

注:在as3中只有事件的发送者才能侦听事件。在Main类中sample实例发送的事件也只有sample注册的侦听器才能侦听,在Sample中的this正是指向了sample。

事实上,没有什么要比发现、培养、呵护、调整自己的心智的力量更重要的事情了.........
分享到:
评论

相关推荐

    详解EventDispatcher事件分发组件

    Symfony EventDispatcher以一个简单有效的方式实现了中介者模式,事件分发器就是那个中介,让系统和插件不会耦合在一起,这让上面的插件系统成为可能,而且他会让你的项目可扩展性更好。 上面的话,翻译自Symfony...

    flash顶级类

    三、常用顶级类详解 1. **Object类**:所有自定义类默认继承自`Object`类,它提供了属性和方法来操作对象,如`hasOwnProperty()`和`toString()`。 2. **Number类**:表示数值类型,包括整数和浮点数,提供了数学...

    《J2ME手机游戏开发技术详解》书本例子

    1. **图形和动画**:J2ME使用Graphics类进行基本的2D绘图操作,包括线条、形状、文本和图像。开发者需要学习如何有效地绘制游戏元素并实现平滑的动画效果,如帧速率管理和对象缓存。 2. **事件处理**:游戏中的用户...

    event-dispatcher:EventDispatcher组件提供了一些工具,这些工具允许您的应用程序组件通过分派事件并侦听它们来相互通信

    **事件调度器(EventDispatcher)组件详解** 在PHP开发中,Symfony EventDispatcher组件是一个强大的工具,它使得应用程序的各个部分能够通过发布和监听事件来进行通信,实现了模块间的解耦。这个组件遵循了PSR-14...

    pv3d_api文档

    EventDispatcher类提供了事件分发机制,使得开发者可以轻松实现交互功能。 总结起来,PV3D API是一个全面的3D开发工具集,它涵盖了从创建几何形状、设置光照、管理场景,到实现动画和交互的各个环节。理解并熟练...

    as3声音架构的理解.pdf

    **SoundChannel 类**继承自`EventDispatcher`,主要用于描述声音通道,提供了对声音播放过程中的实时控制,例如暂停、恢复、调整音量等操作。 - **方法**: - `setPosition(position:Number):void`:设置声音的...

    java 记事本

    记事本项目中的各个功能可以封装成不同的类,如Editor类负责文本编辑,FileManager类处理文件操作,EventDispatcher类处理用户事件。这种设计使得代码结构清晰,职责分明。 10. **UI设计**: 记事本的界面设计也...

    cairngorm3实践源码

    **cairngorm3实践源码详解** Cairngorm是Adobe Flex/AIR社区中一个著名的轻量级MVC框架,它为ActionScript 3.0应用程序提供了结构和设计模式,便于开发大型、可维护的项目。这个压缩包包含的是Cairngorm3的实践源码...

    cocos2d-x 飞机

    【cocos2d-x 飞机大战游戏开发详解】 cocos2d-x是一款跨平台的游戏开发框架,它基于C++编写,同时提供了Lua和JavaScript的绑定,使得开发者可以选择自己擅长的语言进行游戏开发。本项目“cocos2d-x 飞机”是一款...

    cocos2d-x-3.6离线文档

    4. **事件处理**:EventDispatcher(事件分发器)、EventListener(事件监听器)等类,构成了cocos2d-x的事件系统,用于处理用户输入和其他触发事件。 5. **物理引擎**:如PhysicsBody(物理体)、PhysicsWorld...

    flash as3中文API

    EventDispatcher类是所有可以发送事件的对象的基类,如DisplayObject。 3. **显示对象**:DisplayObject类及其子类(如Sprite、MovieClip)用于创建可视化元素,它们可以添加到显示列表上,形成舞台上的内容。 4. ...

    虚拟杯赛活动egret白鹭引擎开发

    游戏逻辑则可以通过Egret的事件驱动模型来实现,如利用EventDispatcher类发布和监听事件,控制游戏流程。 数据处理部分,Egret支持JSON格式的数据交换,便于与服务器进行数据交互。可以使用Egret的HTTPService类...

    cocos2dx3.14_cpp_html

    - 使用`EventListener`和`EventDispatcher`来注册和处理各种事件,如触摸事件、键盘事件和游戏自定义事件。 6. **渲染与图形** - `DrawNode`类用于绘制基本图形,如线条、矩形、圆等。 - `Label`类支持文本渲染...

    Flex轻量级开发框架-Cairngorm介绍

    - `CairngormEventDispatcher`是事件分发器,用于分发事件,它继承自Flex的`EventDispatcher`类,采用单例模式。`CairngormEvent`是所有事件的基类,可以根据不同类型的事件创建子类,并定义需要传递的数据。触发...

    java捕鱼达人游戏.zip

    Java中的EventListener接口和EventDispatcher类为事件处理提供了便利,开发者可以为特定的GUI组件添加监听器,处理对应的事件,如MouseListener用于处理鼠标点击事件,ActionListener用于处理按钮点击事件。...

    Flash Flash actionscript 3.0 动画教程源码

    《Flash ActionScript 3.0 动画教程源码详解》 ActionScript 3.0 是Adobe Flash开发中的核心编程语言,它为创建交互式、动态的动画内容提供了强大的支持。本教程源码主要聚焦于如何利用ActionScript 3.0进行高效的...

    coco2d-x API.rar

    EventDispatcher负责分发事件,而EventListener类用于注册和处理特定类型的事件,实现用户交互。 5. **物理引擎**: 对于物理模拟,cocos2d-x集成了Box2D物理引擎,通过Body、Fixture和Joint等类,可以轻松构建...

    消除星星 Cocos2-x

    5. 用户交互:Cocos2d-x的EventDispatcher类处理用户的触摸事件,根据玩家的滑动操作来更新棋盘状态。 6. 得分系统:每当有星星被消除,分数应增加。可以设置不同的得分规则,比如连消奖励、时间限制等。 四、...

    Flex+WebService开发实例

    通过EventDispatcher类监听服务请求的完成,然后将结果解析并显示。 3. 数据格式转换:Flex可以处理XML、JSON等多种数据格式,WebService返回的数据通常为XML,Flex中的XMLList和XML类提供了方便的解析和操作接口。...

Global site tag (gtag.js) - Google Analytics