下面我们通过简单的例子来深入讲解Flash as3的事件机制和事件类(Event )。
【http://www.newflash3d.com---flash3D先锋队:北京贝武易科技公司】
有疑问请联系我QQ:363596350
感谢小小菜鸟的WEB菜园子
首先我们定义一个简单的类myClip,它继承自Sprite类。
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class myClip extends Sprite {
public function myClip() {
addEventListener(MouseEvent.CLICK,clickHander);
graphics.beginFill(0xffff00);
graphics.drawRect(0, 0, 400, 200);
}
private function clickHander(evt:MouseEvent):void {
trace("单击色块了");
}
}
}
我们在这个名为myClip的Sprite物体里画了一个黄色的方块,长400,宽200。
我们在Flex里生产一个myClip对象。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init();">
<mx:Script>
<![CDATA[
private var mc:myClip;
private function init():void{
mc=new myClip();
stage.addChild(mc);
}
]]>
</mx:Script>
</mx:Application>
调试模型下运行结果如图:
当我们单击色块时,Console栏输出:单击色块了
如何让我们的这个影片剪辑被单击的时候可以执行舞台上的一个函数,比如function listen_clipEvent() 呢?
这个时候就需要用我们舞台上的这个函数监听myClip的事件了。
我们需要建立一个Event(事件);
你可以这么理解事件,你可以想像它是一个邮件,一封生活中的信,它就像一个信封里包含了好几封信----static const(静态的常量),收信的人(事件监听器)收到信后,根据信里的文字内容做事(执行函数),当然,你可以在这个Event(事件)信封里夹带点其他东西,也一块传出去,这几是事件里的属性或夹带的变量了。需要注意的是,这个事件类不专属于某一个物体,任何物体都可以来发送事件,它只是一个壳,一个信息传递的载体而已
好,我们下面就创建一个事件类:clipEvent。
package {
import flash.events.Event;
public class clipEvent extends Event {
public static const CLIP_CLICK:String="clip_click";
private var _mm:String;
public function clipEvent() {
super(CLIP_CLICK);
}
public function get M() {
return _mm;
}
public function set M(a:String) {
_mm=a;
}
}
}
这个是事件的一个很普通的格式,String(文本类型)的static const(静态常量) setget方式的变量,可以被赋值,也可以给别的对象传值。
回到我们的myClip类,修改代码为:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.EventDispatcher;
public class myClip extends Sprite {
public function myClip() {
addEventListener(MouseEvent.CLICK,clickHander);
}
private function clickHander(evt:MouseEvent):void {
trace("click");
var _clipEvent:clipEvent=new clipEvent();
_clipEvent.M="wangyan";
dispatchEvent(_clipEvent);
}
}
}
当我们点击这个myClip对象时,它就会发出一个_clipEvent事件了,改事件的_clipEvent.M属性被我们赋值为"wangyan"了。
回到主程序,我们把代码改为:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init();">
<mx:Script>
<![CDATA[
private var mc:myClip;
private function init():void{
mc=new myClip();
stage.addChild(mc);
mc.addEventListener(clipEvent.CLIP_CLICK,listen_clipEvent);
}
private function listen_clipEvent(evt:clipEvent):void{
trace("hello"+evt.M);
}
]]>
</mx:Script>
</mx:Application>
我们加入了一个监听器:
mc.addEventListener(clipEvent.CLIP_CLICK,listen_clipEvent);
监听后执行的动作函数:
private function listen_clipEvent(evt:clipEvent):void{
trace("hello"+evt.M);
}
测试执行后,单击色块物体,我们可以看到在Console测试台输出了:
click
hellowangyan

- 大小: 6.3 KB
分享到:
相关推荐
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答
【毕业设计】java-springboot+vue机动车号牌管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue交通管理在线服务系统的开发源码(完整前后端+mysql+说明文档+LunW).zip