AS 发送事件

as-events:用于AssemblyScript的EventEmitter API 赛事 用于AssemblyScript的EventEmitter 特征 没有依赖 同构 适用于Node.js /浏览器/ Wasmer 代码小 安装 ~ npm install as-events 用法 import { EventEmitter } from 'as-events' const emitter = new EventEmitter ( ) emitter . on ( 'event' , ( data ) => { //... } ) emitter . emit ( 'event' , 'Hello Event Emitter!' ) 立即下载

转自  :   http://blog.youkuaiyun.com/aisajiajiao/article/details/6960475



在AS3中实现自定义事件发送者有多种方法,这几天第四次看黑羽的殿堂之路,顺势就写下了,其本质只有一个EventDispatcher。


AS3是面向对象的语言,面向对象思想解析如下图:


所以在这里我们也有多种方法来实现自定义事件发送类。

这里有三种:

1.通过继承来实现;

2.通过复合来实现;

3.通过实现接口来实现。

在AS3事件中有3个要素,如下图所示,我们现在要实现的是自定义一个EventDispatcher。


第一种方法:继承EventDispatcher来实现

  1. package  
  2. {  
  3.     import flash.display.Sprite;  
  4.     import flash.events.Event;  
  5.     import flash.events.EventDispatcher;  
  6.       
  7.     /**  
  8.      * ...  
  9.      * @author aisajiajiao  
  10.      * 使用继承来实现  
  11.      */  
  12.       
  13.     public class CustomEventDispatcherDemo extends Sprite  
  14.     {  
  15.       
  16.         public function CustomEventDispatcherDemo()  
  17.         {  
  18.             var dispatcher:SampleEventDispatcher = new SampleEventDispatcher();  
  19.             //不推荐直接使用字符串表示事件类型,这里只是作为演示  
  20.             dispatcher.addEventListener("Custom",actionListener);  
  21.             dispatcher.dispatchEvent(new Event("Custom"));  
  22.         }  
  23.           
  24.         private function actionListener(e:Event):void  
  25.         {  
  26.             trace("自定义事件发送类" + e);  
  27.         }  
  28.     }  
  29. }  
  30.   
  31. import flash.events.Event;  
  32. import flash.events.EventDispatcher;  
  33.   
  34. //继承  
  35. class SampleEventDispatcher extends EventDispatcher  
  36. {  
  37.     //这里可以写一些自己需要的代码  
  38. }  

第二种方法:复合来实现

  1. package  
  2. {  
  3.     import flash.display.Sprite;  
  4.     import flash.events.Event;  
  5.     import flash.events.EventDispatcher;  
  6.       
  7.     /**  
  8.      * ...  
  9.      * @author aisajiajiao  
  10.      * 使用复合来实现  
  11.      */  
  12.       
  13.     public class CustomEventDispatcherDemo2 extends Sprite  
  14.     {  
  15.       
  16.         public function CustomEventDispatcherDemo2()  
  17.         {  
  18.             var dispatcher:SampleEventDispatcher = new SampleEventDispatcher();  
  19.               
  20.             //这里我们可以看出使用复合之后,该类就不能再看做EventDispatcher对象了  
  21.             dispatcher.getEventDispatcher().addEventListener("Custom",actionListener);  
  22.             dispatcher.getEventDispatcher().dispatchEvent(new Event("Custom"));  
  23.         }  
  24.           
  25.         private function actionListener(e:Event):void  
  26.         {  
  27.             trace("自定义事件发送类" + e);  
  28.         }  
  29.     }  
  30. }  
  31.   
  32. import flash.events.Event;  
  33. import flash.events.EventDispatcher;  
  34.   
  35. class SampleEventDispatcher  
  36. {  
  37.     private var _dispatcher:EventDispatcher;  
  38.       
  39.     public function SampleEventDispatcher()  
  40.     {  
  41.         _dispatcher = new EventDispatcher();  
  42.     }  
  43.       
  44.     //get方法  
  45.     public function getEventDispatcher():EventDispatcher  
  46.     {  
  47.         return _dispatcher;  
  48.     }  
  49. }  

第三种方法,实现IEventDispatcher接口。

  1. package  
  2. {  
  3.     import flash.display.Sprite;  
  4.     import flash.events.Event;  
  5.     import flash.events.EventDispatcher;  
  6.       
  7.     /**  
  8.      * ...  
  9.      * @author aisajiajiao  
  10.      * 使用IEventDispatcher接口  
  11.      */  
  12.       
  13.     public class CustomEventDispatcherDemo3 extends Sprite  
  14.     {  
  15.       
  16.         public function CustomEventDispatcherDemo3()  
  17.         {  
  18.             var dispatcher:SampleEventDispatcher = new SampleEventDispatcher();  
  19.               
  20.             //不推荐直接使用字符串表示事件类型,这里只是作为演示  
  21.             dispatcher.addEventListener("Custom",actionListener);  
  22.             dispatcher.dispatchEvent(new Event("Custom"));  
  23.         }  
  24.           
  25.         private function actionListener(e:Event):void  
  26.         {  
  27.             trace("自定义事件发送类" + e);  
  28.         }  
  29.     }  
  30. }  
  31.   
  32. import flash.events.Event;  
  33. import flash.events.EventDispatcher;  
  34. import flash.events.IEventDispatcher;  
  35.   
  36. //这样灵活性非常大,可以在这里实现你想要的各种功能  
  37. class SampleEventDispatcher implements IEventDispatcher  
  38. {  
  39.     public var _dispatcher:EventDispatcher;  
  40.       
  41.     public function SampleEventDispatcher()  
  42.     {  
  43.         _dispatcher = new EventDispatcher();  
  44.     }  
  45.       
  46.     public function addEventListener(type:String,listener:Function,  
  47.                     useCapture:Boolean = false,priority:int = 0,useWeakReference:Boolean = false):void  
  48.     {  
  49.         _dispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);  
  50.     }  
  51.       
  52.     public function dispatchEvent(event:Event):Boolean  
  53.     {  
  54.         return _dispatcher.dispatchEvent(event);  
  55.     }  
  56.       
  57.     public function hasEventListener(type:String):Boolean  
  58.     {  
  59.         return _dispatcher.hasEventListener(type);  
  60.     }  
  61.       
  62.     //注意这里的参数个数是与addEventListener数目不同的,仅有3个  
  63.     public function removeEventListener(type:String,listener:Function,useCapture:Boolean = false):void  
  64.     {  
  65.         _dispatcher.removeEventListener(type,listener,useCapture);  
  66.     }  
  67.       
  68.     public function willTrigger(type:String):Boolean  
  69.     {  
  70.         return _dispatcher.willTrigger(type);  
  71.     }  
  72. }  

所有自定义事件最终的输出结果如下图:


VS2022命令行编译C++报错?一招解决‘fatal error C1034: iostream: 不包括路径集‘ 本文针对VS2022命令行编译C++时常见的'fatal error C1034: iostream: 不包括路径集'错误,深入剖析了其根源在于环境变量缺失。文章提供了永久配置用户环境变量(PATH、INCLUDE、LIB)的一劳永逸解决方案,确保在任何终端中都能直接使用cl命令进行编译,并给出了进阶配置与常见错误排查指南。 阅读详情

相关推荐

嵌入式开发语言-C语言编程

C语言编程概述环境在Windows上构建C语言的环境安装在Mac上构建C语言的环境安装 概述 “C语言”被称为适合嵌入式系统开发的编程语言之一。 C语言在一般的编程中也是熟悉的开发语言,但实际上,如果试着使用C语言制作微型计算机的控制程序等,就必须使用与“普通的C程序”不同的使用方法。 作为一般的C语言的学习方法,使用“printf”“scanf”等标准函数的程序开发是固定的,但这些都是以UNIX和Windows等环境上的应用程序开发为前提的。 对此,没有显示器和键盘的嵌入式系统的微型计算机控制程序,该如何

编程老王 7976

AS3中的自定义事件

类似C#中自定义事件需要一个自定义的EventArgs子类一样,AS3也需要开发者自定义一个Event类的子类,这里我们假设一种场景:设计一个Person(人物)类,里面有Age(年龄),Name(姓名),我们希望每当Person类的实例Age(年纪)发生变化时,能触发一些自定义事件,从而调用某些特定的处理方法。 1.先设计Event类的子类AgeChangeEvent package {  

技术无止境 730

【SAM2系列】windows单GPU复现时的bug解决记录

windows运行sam2,就感觉在开一艘破破烂烂的船,每走一步报一个错,bug源源不断的冒出来😭😭😭😭😭。

weixin_43571113的博客 1317

AS 事件分发(一)Activity的事件分发

1.流程图 里面红色部分onTouchEvent的流程图 2.讲解: 1.dispatchOnTouchEvent的点击: 点击MainActivity时会触发dispatchOnTouchEvent两次(是DOWN与UP)。然后点击,移动,在松开:就会触发多次dispatchOnTouchEvent(应该是DOWN,……MOVE……MOVE……UP) 2.dispatchOnTouchEvent的返回值 它返回一个boolean值。当返回为true的时候,点击Activity上的Button,无效不响

sunweihao2019的博客 351

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 421

【模型构建器教程】教你在ArcGIS中如何按照字段值批量导出shp文件

【模型构建器教程】教你在ArcGIS中如何按照字段值批量导出shp文件

weixin_45469245的博客 6454

as中的事件和自定义事件

事件1:<s:Button x="351" y="230" lable="click Me" id="bt" onclick="bt.lable='I had Clicked'"/>     事件2:mxml方式自定义事件<fx:script><![CDATA[protected function button_clickHandle

天道酬勤 367

Hermes Agent 对阵 OpenClaw:自我改进的 AI 队友

但在 2026 年 2 月,Nous Research 发布了 Hermes Agent,它带来了不同的愿景:一个不仅能够运行,还能学习的代理。在完成复杂的多步骤任务后,它会分析自己的操作并创建一个可复用的技能。对于已在使用 OpenClaw 的澳大利亚企业而言,这意味着您可以试用 Hermes Agent,而无需丢失数月的配置和自定义成果。最重要的区别在于理念:OpenClaw 是一个需要配置的工具,而 Hermes Agent 则是一个会学习的队友。OpenClaw 的技能是静态的。

xiaoshun007的专栏 1571

as事件

事件机制有四个流程:注册侦听器、发送事件、侦听事件、移除事件。 点菜例子:进入一家餐馆:你注册了一个监听器,服务员要听我的指令。向这个服务员注册了我们“点菜”的事件                                                 你向服务员发出点菜或者买单的指令,就是发送事件给服务员

wyr0924的专栏 817

GEE聚类分析:基于sentinel-2 影像进行 K-Means 聚类分析

这篇博客介绍了如何使用 Google Earth Engine (GEE) 进行 K-Means 聚类分析,以识别感兴趣区域(ROI)内的不同地表覆盖类型。文章详细说明了从定义用户参数、准备参考区域、加载和预处理 Sentinel-2 图像,到训练 K-Means 聚类器并对图像进行聚类的完整流程。代码示例展示了如何设置参数、采样像素数据、训练聚类器,并将结果可视化。最后,还提供了将聚类结果导出到 Google Drive 的选项。通过该教程,用户可以掌握在 GEE 平台上进行地理数据聚类分析的基本方法。

此星光明博客 263

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 996

AS3中自定义事件发送发者的三种方法

在AS3中实现自定义事件发送者有多种方法,这几天第四次看黑羽的殿堂之路,顺势就写下了,其本质只有一个EventDispatcher。 AS3是面向对象的语言,面向对象思想解析如下图: 所以在这里我们也有多种方法来实现自定义事件发送类。 这里有三种: 1.通过继承来实现; 2.通过复合来实现; 3.通过实现接口来实现。 在AS3事件中有3个要素,如下图所示,我们现在

6541

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AS3自定义事件以及发送事件(1)——发送事件

一、目的 1、想:自定义类的时候,自定义类给舞台上面发送小 二、参考 1、AS3自定义事件以及发送事件(1)——发送事件 http://blog.sina.com.cn/s/blog_6471e1bb01010wxb.html 总结:good:发现可以实现 ...

qq_40544338的博客 448

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Flash as3.0 事件的发送和处理

DOM3事件机制包括4个步骤:注册侦听器、发送事件、侦听事件、移除侦听器。 注册侦听器,即指定发出的事件由那个对象的哪个方法来接受。·As3.0的事件处理机制的形式 全部事件的侦听addEventListener()。 侦听器统一使用Function,不允许使用Object的侦听器。 发送的事件的对象,必须是Event或其子类的实例。创建监听器 监听器必须是函数类型,必须只有一个参数,并且

默语之声的博客 2187

在as3中只有事件(或该事件的子级)的发送者才能侦听事件

在as3中只有事件(或该事件的子级)的发送者才能侦听事件, 与该发送者无关系的 对象 是侦听不到的, 因为事件流模型,冒泡,事件目标对象 解决办法可以用stage统一发送和侦听   补:用stage统一是否会因冒泡层数过多而影响效率?  ...

weixin_33750452的博客 85

AS3 的事件机制(四)

有兄弟反映,似乎AS3的事件机制有些复杂。在我看来,编程上 “复杂”这个词一般有两种定义:实现麻烦 ,或者内容众多。AS3中的事件机制其实现并不麻烦,逻辑更加清楚简单,因此不是“实现麻烦”这一类。那应该指的是“内容众多”这个意思。黑羽倒觉得"内容众多"往往是褒义词,意味着API丰富,控制范围和深度大。那么一旦得其要领,即思路通畅,记忆深刻,也就不会觉得“复杂”了。 我也会尽量写的简单通俗,照顾新...

落幕 188

AS中的dispatchEvent

AS3中的dispatchEvent事件的发起和捕获,发生在同一个对象身上。 Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实例,在as3中所有的显示对象都可以发送事件,因为as3中所有的显示对象都是EventDispatch...

weixin_34245749的博客 308

java as3 socket_[AS/FLEX] Flex AS3与Java的Socket通信

[AS/FLEX]Flex AS3与Java的Socket通信新建flash文件:SocketExample.fla添加按钮:btnSend修改文档类为:SocketExample新建AS3文件:SocketExample.as01.package{02.importflash.display.Sprite;03.importflash.events.*;04.importflash.net.So...

weixin_39998903的博客 176

AS3 的事件机制(一)

  Event机制作为重头戏,在ActionScript 3.0中加强了很多。更加统一、易用、标准、灵活。ActionScript 2.0中有众多的事件实现机制: 回顾和比较AS1.0玩家最爱用onClipEvent(), on(),又方便又直接。缺点在于逻辑分散到了各个舞台元件中,难以管理和维护。更加别说代码重用了。别跟俺说可以Copy, Paste,这不叫重用,这叫低级。 AS2.0中,...

落幕 164

AS3.0:强大的事件机制(上)

回顾和比较AS1.0玩家最爱用onClipEvent(), on(),又方便又直接。缺点在于逻辑分散到了各个舞台元件中,难以管理和维护。更加别说代码重用了。别跟俺说可以Copy, Paste,这不叫重用,这叫低级。AS2.0中,增加了一些事件处理机制:1.回调函数: onLoad, onComplete等。相信兄弟们最熟悉的应该就是XML.onload回调函数了。2.事件侦听器型:这个就是addL

由雪伟的专栏 3511

flex中dispatchEvent的用法(自定义事件) .

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

weixin_34037977的博客 89

AS3中不同类间的广播与接收简单例子

 1.文档类:DispatchEventDemo.as package { import flash.display.Sprite; public class DispatchEventDemo extends Sprite {   public function DispatchEventDemo()   {    new A    new B     ...

wangangie6 126

flex中dispatchEvent的用法(自定义事件)

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

581

Flex事件处理机制(转载)

为什么要设计这样的处理机制呢? 由于OOP编程将程序看成一个个对象、模块共同交流协作而提供功能或服务,这样必然会涉及对象之间交流消息的情况。所谓消息,就是指系统某处发生了什么事情,以信息的方式通知相关的对象。 AS3中采用的DOM3事件处理机制可以让交流数据的双方降低耦合度,及所谓的“脱耦”(脱离耦合性)!使得各个对象之间依赖性大大降低。 DOM3事件模型定义了一整套标准的生...

vipygt的专栏 150
上一篇: 第四篇 AS的递归算法
下一篇: 第五篇 AS的希尔排序
我是一纸巾
博客等级 码龄12年 14粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值