AS3.0教程(9):强大的事件机制(5)

AI代理运行时基础设施:Session-as-Event-Log架构解析 AI代理运行时(Agent Runtime)是支撑大模型应用落地的核心底层能力,其本质是将状态管理、执行隔离与安全凭证控制从应用逻辑中解耦,交由专用基础设施统一处理。基于事件日志的会话模型(Session-as-Event-Log)取代传统函数式代理(Agent-as-Function),使状态持久化、操作可审计、故障可重放,显著提升生产环境的可观测性与可恢复性。该架构直面上下文溢出、中间结果污染、凭证泄露等高频工程痛点,已在金融、法律等强合规场景验证实效。本文深入剖析Anthropic Claude Ma 阅读详情

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)

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

我也会尽量写的简单通俗,照顾新手。但我又要同时考虑到AS2老手们的需求,不让他们打瞌睡。所以AS初学者 看到不懂的地方可以跳过,多用用Event后,有需要再回过头看看我教程的其它部分,一定会有收获。

拿今天要讲的事件发送来说,我预计写以下内容:
1. EventDispatcher和Event的简介
2. 回顾AS2.0事件发送
3. 继承EventDispatcher进行事件发送。
4. 合成EventDispatcher进行事件发送。
5. 实现IEventDispatcher接口来进行事件发送。 与设计模式中的装饰器模式相似。

那么新手看第一,第二,第三部分已经足够应付一般应用。AS2老手们要看看第四部分。 开发大型项目的AS开发者,则第五部分必看。

1.EventDispatcher和Event的简介。
AS3中Object是万物之宗母,且生养众多,共有220多个子类。Event(事件类)和EventDispatcher(事件发送者类)就是在这一代之中。 Event和EventDispatcher是事件机制的两大主角,二者缺一不可。
Event类及其子类的功能就是提供各种具体的事件供EventDispatcher使用,不能干别的。
EventDispatcher则是要让它所有的子类都能发送事件。
那么,AS3就让所有要发送事件的类都统统继承于EventDispatcher。而需要发送事件的类毫无疑问,都是些很重要的类,比如URLLoader,DisplayObject。
其中DisplayObject更是一代霸父,所有可视对象,比如MovieClip,Spirit等等等等统统都是它的子孙。
因此,父以子贵,EventDispatcher在Object的第一代子女中,位高权重,影响极大。

2. 回顾 AS2.0中发送事件
AS2.0中发送事件是怎么干的?
在类中留几个函数对象,如 dispatchEvent:Function,再搞一个EventDispatcher.initialize()来初始化一下要发送事件的类,然后,就搞定了。.....好简单。
但AS3中更简单,更加标准。

3.继承EventDispatcher进行事件发送。
继承是最方便最快的一种。
刚刚说过了,所有的可视对象都继承DisplayObject,是EventDispatcher的孙子辈,因此都可以直接使用dispatchEvent()来发送事件了。
看代码,我们让一个普通的MovieClip, KingdaMC,来发送一个莫名其妙的事件,比如说"KingdaPlaySC"。


KingdaMC.dispatchEvent(new Event("KingdaPlaySC"));

现在我们要让一个我们自己的类来发送事件。

 

  //【黑羽】ActionScript 3.0系列教程
  //http://www.kingda.org
//以下为一个名叫KingdaSampleClass的Document Class,请自行和一个Fla绑定。
//如果忘了怎么弄,看我第三篇教程

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

public class KingdaSampleClass extends Sprite {

public function KingdaSampleClass() {
//生成一个KingdaSampleDispatcher的实例
var dispatcher:KingdaSampleDispatcher = new KingdaSampleDispatcher();

//标准的实现
dispatcher.addEventListener(KingdaSampleDispatcher.ACTION, actionHandler);
dispatcher.doSomething();

//可以用直接字符串标识事件类型,但推荐使用静态加const的字符串
dispatcher.addEventListener("KingdaPlaySC", anotherHandler);

//直接用new Event生成一个新的事件对象,该对象的事件类型为"KingdaPlaySC"
dispatcher.dispatchEvent(new Event("KingdaPlaySC"));
//输出:
//action的侦听器: [Event type="action" bubbles=false cancelable=false eventPhase=2]
//KingdaPlaySC的侦听器: [Event type="KingdaPlaySC" bubbles=false cancelable=false eventPhase=2]
}

private function actionHandler(event:Event):void {
trace("action的侦听器: " + event);
}

private function anotherHandler(event:Event):void {
trace("KingdaPlaySC的侦听器: " + event);
}
}
}

import flash.events.EventDispatcher;
import flash.events.Event;

class KingdaSampleDispatcher extends EventDispatcher {
public static var ACTION:String = "action";

//如果你需要在自己类中某个方法中发送事件,那么示例如下
public function doSomething():void {
//你的代码.....

//发送事件
dispatchEvent(new Event(KingdaSampleDispatcher.ACTION));
}
}
 

Amesim管路仿真进阶:如何用阻力管实现不规则管路的高精度模拟 本文深入探讨了在Amesim仿真中,如何利用阻力管(Orifice with Table)元件,特别是TFORT0子模型,实现对不规则管路的高精度模拟。通过直接输入基于测试或CFD的流量-压降数据,该方法能有效弥补标准管路模型在复杂流道、内部结构复杂等场景下的不足,为液压、热管理等系统仿真提供精准可靠的部件模型。 阅读详情

相关推荐

光模块基础知识【快速入门】02

光模块是用于交换机与设备之间传输的载体,是光纤通信系统中的核心器件。主要作用是发射端将设备的电信号转换成光信号。 光纤通道光模块和以太网光模块 光纤通道光模块 光纤通道(FC, Fiber Channel)是一种高速网络数据传输协议。光纤通道协议可以有序无损地传输原始数据,它主要用于在数据中心、电脑服务器、交换机与存储网络中进行数据传输。 FC光模块遵循FC协议,充当着光纤通道系统之间的接口,也是光纤存储网络设备间的接口。它们主要用于数据中心的光纤通道存储网络链接中。 FC光模块具有小型化和低.

Jin Hanquan的博客 3万+

自定义事件的触发dispatchEvent

参考:http://www.zhangxinxu.com/wordpress/2012/04/js-dom%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6 一、element.dispatchEvent() 对于标准浏览器,其提供了可供元素触发自定义事件的方法:element.dispatchEvent().。 不过,在使用该方法之前,我们还需要做其他两件...

fth1002853070的博客 1814

Quartus (Quartus Prime 18.1)的安装及仿真步骤

前两天做计组的课设需要用到Quartus 这个软件,但安装有点麻烦,在网上搜了很多教程,发现都是旧版本的,最后弄了好半天才把环境搭建好。所以,分享一下它的搭建过程。 因为我不经常用它,所以安装的版本是精简版的其他版本的也应该差不多以下是需要下载的安装包: 准备: Quartus Prime 精简版,最新发布: v18.1 1. QuartusLiteSetup-18.1.0.625-wi...

weixin_41082948的博客 8万+

js dispatchEvent 的使用

js dispatchEvent 的使用

WEBYANGxw的博客 3418

做量化没有实时数据怎么行?我找到一个超级好用的Python库,速度还贼快!

今天咱们介绍了 pytdx 这个神奇的库,重点包括:✅ 安装 pytdx✅ 连接 TDX 服务器✅ 获取实时行情数据✅ 获取 K 线数据✅ 获取分笔成交数据总之,pytdx 是一个速度快、免费、易用的量化利器,适合 A 股量化交易的同学们使用。如果你还在为数据发愁,赶紧试试吧!🚀顺手再看就是对花姐最大的支持,期待你的关注。

奔跑的蜗牛 5726

使用pdfBox实现pdf转图片出现中文方块乱码 简单修改源码解决

参考文章 问题排查:使用pdfbox将pdf转image时STSong-Light字体中文乱码 pdfbox版本是2.0 日志中打印出类似这样的日志(例:Using fallback XXX for CID-keyed font STSong-Light),就说明系统没有安装STSong-Light字体,pdfbox使用XXX字体来替代了。如果出现方块,就说明没有这种字体,并且替代字体也没有,日志也有相应的其他提示。 正常操作就是安装缺失的 STSong-Light 字体,但是在网上搜到的都是 STSong

aji_csdn的博客 5266

JavaScript的dispatchEvent 手动触发事件

在Web开发中,我们会定义各种事件处理程序,等待浏览器对元素的默认行为触发响应。但是有时我们也需要主动触发事件,这就需要用到dispatchEvent方法。dispatchEvent允许我们以编程方式“触发”事件,调用事件处理程序,模拟DOM的默认行为。掌握它可以在某些场景下帮助我们减少代码重复,实现更优雅的解决方案。本文将详细介绍dispatchEvent的使用方式,包括创建自定义事件对象,初始化事件,以及触发事件的具体示例。读完本文后,你将能熟练使用dispatchEvent来触发代码中的事件。

爱蹦跶的全栈大A阿 3296

【hadoop编译报错】(yarn install) on project hadoop-yarn-applications-catalog-webapp Failed to run task

ambari+bigtop自定义组件集成

TTBIGDATA的博客 1804

AS中的dispatchEvent

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

weixin_34245749的博客 308

1-Spring Security OAuth2专栏介绍

我自己 我是码农小胖哥,一名后端软件工程师,有多年的后端开发经验,同时也是一名热衷于技术分享、拥抱开源的技术博主。我的技术栈主要是Java、Python、Kotlin,欢迎各位同行进行交流和分享。 个人技术公众号:码农小胖哥 个人博客:https://felord.cn Gitee: https://gitee.com/felord 你可以通过以上方式和我交流、解决学习中的疑难杂症。 2021年开源Spring Security 干货系列教程,2022年又开源Spring Security进阶版,帮

码农小胖哥 7937

ONNX Runtime C# YOLO全链路压测:从300ms到22ms的15个底层优化技巧

摘要:本文分享了工业质检场景下C#调用YOLOv8s ONNX模型的性能优化实战经验。原始单帧推理耗时300ms无法满足产线需求,通过全链路分析定位瓶颈(预处理85ms、推理180ms、后处理30ms)。重点优化措施包括:使用OpenCVSharp CUDA加速预处理(85ms→12ms),开启ONNX Runtime ALL级别图优化,选用TensorRT执行提供程序(180ms→22ms),以及优化内存管理和线程调度。最终实现单帧总耗时22ms±2ms,GPU利用率提升至85%,完整满足产线120块板/

2601_94871597的博客 402

使用as3中EventDispatcher类

用法大同小异 package{ import flash.events.EventDispatcher; import flash.events.Event; //继承EventDispatcher类 class CustomDispatcher extends EventDispatcher { //事件名   public static var ACTION:S...

hgfghwq18 220

【2026年华为暑期实习(非AI方向(通软&嵌软&测试&算法&数据科学))-4月8日-第一题- 包裹的编码】(题目+思路+Java&C++&Python解析+在线测试)

摘要:该问题要求将给定的十进制整数N转换为混合进制编码字符串,并处理回文检测。首先根据N的符号位确定编码首位(0或1),然后按输入的进制序列依次对N的绝对值进行取余和整除操作,得到编码数组。将数组元素转换为字母后生成字符串,若字符串为回文则添加"(palindrome)"后缀;否则输出最长回文子串(字典序最小)。算法采用中心扩展法检测回文,时间复杂度为O(L²),空间复杂度为O(L),其中L为字符串长度。

m0_73659489的博客 130

ActionScript 3.0(AS3)教程合辑

蓝色经典中关于AS3的教程合辑《ActionScript 3.0 语言和组件参考》是 Flash® Player 应用程序编程接口 (API) 的参考手册。点此进入优快云会员下载页面 作者: KingdaSun [黑羽] AS3.0教程:与Flash9先亲密接触     http://bbs.blueidea.com/viewthread.php?tid=2635339 AS3

小李专栏 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝色理想中[AS3] 教程集合

以下为统计资料,不定期更新 [作者排名不分先后,三片文章以上入作者库] 作者: KingdaSun [黑羽] AS3.0教程:与Flash9先亲密接触     http://bbs.blueidea.com/viewthread.php?tid=2635339 AS3.0教程:AS3.0的类及绑定     http://bbs.blueidea.com/viewthread.php?ti

xiaoniba1024的专栏 1650

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

彻底了解AS3视觉元件架构

彻底了解AS3视觉元件架构 2011年07月04日     [b]彻底了解AS3视觉元件架构[/b]     DisplayObject,直译为视觉对象,意为可以被看到的对象。     视觉是Flash 成功的主要基石。当我赏析ActionScript 3 的所有视觉元件类型和其整体构架时,感到非常满意。可以看出,这次整体的架构设计是深思熟虑的结果。与其他语言,比如C#,相比有自己强...

hzmg88hzmg 412

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

速懂vue3.0新特性及vue2.0区别

欢迎点击: 个人官网博客 2020年9月份beta版本出来后就一直追3.0,作为第一批吃螃蟹的人,这里把3.0的一些知识分享一下,良心之作。喜欢就收藏吧! TypeScript传送门 目录从vue2.0到vue3.0必备知识一、简单介绍vue3.0二、常用Composition API1.setup(props,context)2.ref,reactivereactive改用toRefs配合使用ref获取元素3.watch,watchEffectwatch监听一个属性或对象watch监听多个属性watch

小龚的博客 8844

如何理解LayaAir_Discard:旧版ActionScript 3.0游戏引擎的10个核心技术解析

**LayaAir_Discard**是LayaAir游戏引擎的早期版本,采用ActionScript 3.0语言编写。这个开源项目虽然已被新版TypeScript版本替代,但它作为HTML5游戏开发的重要历史里程碑,包含了10个值得深入解析的核心技术架构。对于游戏开发新手和想了解游戏引擎底层原理的用户来说,研究这个旧版引擎能让你快速掌握游戏引擎的核心设计思想。 ## 🔍 1. 什么是Laya

gitblog_00454的博客 654

深度解析:如何最大化发挥Qwen3.5-9B-DeepSeek-V4-Flash的推理潜能

探索人工智能推理模型的新边界,Qwen3.5-9B-DeepSeek-V4-Flash通过DeepSeek-V4知识蒸馏技术,将万亿参数级模型的深度逻辑推理能力成功迁移到高效的9B参数空间中。这款专为推理性能与效率平衡设计的模型,为技术实践者提供了在有限资源下实现卓越推理能力的新选择。 ## 核心理念:结构化推理的轻量化实现 Qwen3.5-9B-DeepSeek-V4-Flash的核心价值在

gitblog_01011的博客 942

k9s AI事件调查:智能异常检测和根因分析

在现代云原生环境中,Kubernetes集群的复杂性日益增加,故障排查和根因分析成为运维团队面临的主要挑战。k9s作为一款强大的Kubernetes终端管理工具,通过集成AI事件调查功能,为运维人员提供了智能化的异常检测和根因分析能力。 ## k9s AI事件调查功能架构 k9s的AI事件调查功能基于插件体系构建,通过与HolmesGPT(一种专门针对Kubernetes环境的AI分析工具)集...

gitblog_00016的博客 394

KeepHQ项目v0.38.9版本技术解析

KeepHQ是一个开源的AIOps(人工智能运维)和警报管理平台,旨在为开发者和运维团队提供统一的警报管理解决方案。v0.38.9版本作为项目发展的重要里程碑,在架构设计、功能扩展和性能优化方面都有显著提升。 ## 核心架构解析 ### 整体架构设计 KeepHQ采用现代化的微服务架构,主要包含以下核心组件: ```mermaid graph TB A[Keep UI - Next...

gitblog_01314的博客 431

ActionScript教程

1.转自 http://www.kingda.org 的链接 ActionScript 3 教程系列  ActionScript 3.0系列教程(1):与Flash9先来一次亲密接触!   AS 3.0教程(2):AS3.0的类及绑定   AS3.0教程(3)document Class特色为我们带来了什么?   AS3.0教程(4):爽快使用XML   AS3.0教程(5):强大的事件机

DoYou?'s csdn 1515

nest_asyncio 快速入门:5分钟掌握Python异步嵌套事件循环技术

想要在Python中实现异步嵌套事件循环却遇到"RuntimeError: This event loop is already running"错误?nest_asyncio正是解决这个问题的终极工具!这个强大的Python库能够让你轻松突破asyncio的设计限制,在Jupyter Notebook、Web服务器和GUI应用等环境中自由使用嵌套异步操作。本文将为你提供完整指南,教你如何在5分钟

gitblog_00760的博客 395

嵌入式系统事件驱动设计:GPT定时器与DMA事件路由配置详解

在嵌入式系统开发中,事件驱动架构是实现高效实时响应的核心机制。其基本原理在于,硬件事件(如定时器溢出、外设数据就绪)可直接触发特定动作,而无需CPU持续轮询。这种硬件级协同工作的价值在于,它能显著降低系统延迟、提升确定性,并最大限度减少CPU干预以实现低功耗运行。该技术广泛应用于物联网传感器数据采集、工业控制以及消费电子等对实时性要求苛刻的场景。本文聚焦于嵌入式微控制器中的事件路由配置,深入解析如何通过GPT(通用定时器)事件选择寄存器与DMA(直接内存访问)通道事件选择寄存器,构建从事件产生到自动数据搬运

weixin_30527423的博客 423

10个Qwable-9B-Claude-Fable-5实战案例:从Python编程到系统管理

Qwable-9B-Claude-Fable-5是一款功能强大的AI模型,能够在Python编程、系统管理、数据处理等多个领域提供高效支持。本文将通过10个实战案例,展示如何利用该模型解决实际问题,帮助新手和普通用户快速掌握其应用方法。 ## 1. Python函数开发:合并重叠区间 在处理时间调度、区间分析等任务时,合并重叠区间是常见需求。Qwable-9B-Claude-Fable-5可以

gitblog_00400的博客 915
上一篇: Flash与后台编码兼容性问题的解决方案
下一篇: AS3.0教程(5):强大的事件机制(1)
wx红杉树
博客等级 码龄21年 383粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值