`

as3简单的事件机制讲解

阅读更多
下面我们通过简单的例子来深入讲解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
分享到:
评论

相关推荐

    深入浅出讲解flex中的事件机制

    此往篇文档非常清淅的讲解在flex中的事件机制,告诉你target与currenttarget的区别

    as3做的一个窗体系统demo

    3、拖拽边缘缩放窗口,拖拽窗口 4、双击顶端的标题栏,最大化和缩放 5、实现不同的窗口机制 等等……………… core核心包结构初略讲解: IWindow接口:定义所有窗口,并且Window实现了该接口 Module类:模块基类 ...

    c#学习方法

    3. .Net 框架原理讲解:多维数组、可变参数 Params、类的实例化内存分配机制等。4. 深入学习对象类型:里氏替换原则(LSP)、类的属性极其本质特性、IS ,AS 关键字、深入学习字符串理论、枚举类型以及适用场合。5. ...

    轻松学C#(图解版)

    除了详细地讲解C#知识点外,本书还提供了大量的实例,供读者实战演练。本书共分三篇。第一篇是C#概述篇,主要介绍的是Visual Studio 2012的开发环境及搭建。第二篇是面向对象基础篇,主要介绍类、对象、字段、方法、...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第3部分)

    ◆讲解命令式数据并行、命令式任务并行、并发集合以及协调数据结构。 ◆描述PLINQ高级声明式数据并行。 ◆讨论如何使用新的Visual Studio 2010并行调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行...

    Windows Sockets网络编程 可能是最清晰版本(Windows Sockets 2规范解释小组负责人亲自执笔。)总共4个包,part1

    它结合大量示例,对WindowsSockets规范进行了深刻地解读,系统讲解了WindowsSockets网络编程及其相关的概念、原理、主要命令、操作模式,以及开发技巧和可能的陷阱,从程序员的角度给出了大量的建议和最佳实践,是...

    Windows Sockets网络编程 总计4个包,part2

    它结合大量示例,对WindowsSockets规范进行了深刻地解读,系统讲解了WindowsSockets网络编程及其相关的概念、原理、主要命令、操作模式,以及开发技巧和可能的陷阱,从程序员的角度给出了大量的建议和最佳实践,是...

    vc++ 开发实例源码包

    Inline Hook(ring3) 简单源码 代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第一部分)

    ◆讲解命令式数据并行、命令式任务并行、并发集合以及协调数据结构。 ◆描述PLINQ高级声明式数据并行。 ◆讨论如何使用新的Visual Studio 2010并行调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第2部分)

    ◆讲解命令式数据并行、命令式任务并行、并发集合以及协调数据结构。 ◆描述PLINQ高级声明式数据并行。 ◆讨论如何使用新的Visual Studio 2010并行调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行...

Global site tag (gtag.js) - Google Analytics