在as中监听自定义事件并处理事件的实例代码
在Flex开发中,自定义事件需跨越皮肤与逻辑层。通过定义事件类,在皮肤层调用dispatchEvent发送事件,在逻辑层使用addEventListener监听处理,实现点击图片触发自定义事件并弹出预览。
点击一张图片,然后触发一个自定义事件,并在事件处理中弹出预览——这个需求在Flex开发中很常见。但很多开发者容易在自定义事件的发送与接收环节上栽跟头,尤其是当事件需要跨越皮肤层和逻辑层时。下面通过一个完整的示例,把整个流程拆解清楚。
1. 自定义事件
先定义一个事件类,继承自flash.events.Event,并声明一个静态常量作为事件类型。这里我们定义了一个名为myclick的事件。
package bridge {
import flash.events.Event;
import mx.events.FlexEvent;
public class MyEvent extends Event {
public static const myclick:String = "myclick";
public function MyEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) {
super(type, bubbles, cancelable);
}
}
}
2. 监听与处理事件的主类
接下来创建一个BorderContainer的子类ImgHander,它负责初始化监听,并在事件触发时弹出提示框。注意,这里通过SkinPart声明了一个img组件,用于后续在皮肤中绑定。
package handler {
import bridge.MyEvent;
import flash.events.Event;
import mx.controls.Alert;
import skin.ImgHanderSkin;
import spark.components.BorderContainer;
import spark.components.Image;
public class ImgHander extends BorderContainer {
[SkinPart(required = "true")]
public var img:Image;
public function ImgHander() {
super();
this.setStyle("skinClass", ImgHanderSkin);
this.percentHeight = 100;
this.percentWidth = 100;
}
override public function initialize():void {
super.initialize();
img.addEventListener(MyEvent.myclick, SetImgShouZhanUrl);
}
private function SetImgShouZhanUrl(event:Event):void {
Alert.show("Preview");
}
}
}
3. 皮肤类:发送自定义事件
皮肤类才是真正触发事件的地方。这里使用了一个Image组件,并为其添加了鼠标单击事件处理函数,在函数内部构造自定义事件并通过dispatchEvent发送出去。注意,img_mouseOutHandler这个命名有点迷惑性,实际上它在鼠标单击时触发,但功能是发送事件。另外,皮肤中引用了assets目录下的柯南.jpg图片。
[HostComponent("spark.components.BorderContainer")]
4. 应用程序入口
最后,在MXML应用程序中直接引用ImgHander组件,运行即可看到效果。
注意:发送自定义事件的关键代码是:
var e:MyEvent = new MyEvent(MyEvent.myclick);
img.dispatchEvent(e);
而接收并处理事件则通过:
img.addEventListener(MyEvent.myclick, SetImgShouZhanUrl);
整个流程环环相扣:皮肤层负责发送,逻辑层负责监听处理。理解了这个模型,再复杂的自定义事件传递也能轻松应对。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。














