`

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
分享到:
评论

相关推荐

    AS2转AS3教程下载

    4. 事件处理:AS3的事件处理机制更为规范,需要熟悉addEventListener和removeEventListener方法。 5. 动画和时间轴控制:AS3的动画和时间轴控制与AS2不同,不再依赖于时间轴,而是通过编程实现。 6. 显示对象层次:...

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

    ### 深入浅出讲解Flex中的事件机制 #### 一、引言 Flex是一种用于构建高度交互式、跨平台的Web应用程序的技术框架。它基于Adobe的Flash平台,并且使用ActionScript 3作为编程语言。Flex的核心优势在于其强大的用户...

    as3殿堂之路 源码 全集

    《AS3殿堂之路》是AS3编程者的一本重要参考书籍,由孙颖撰写,它深入浅出地讲解了ActionScript 3(AS3)的核心概念和技术,旨在帮助读者掌握AS3编程的基础与精髓。这本书的源码全集包含了大量的示例代码,是学习和...

    as3基础教程

    事件是编程中处理用户交互或系统通知的机制,基本事件处理部分则介绍了如何为对象添加事件监听器来响应各种事件。此外,创建对象实例也是编程过程中常用的技术,用于实例化对象以供程序使用。 作为编程教程,AS3...

    flash AS3 中文帮助文档

    AS3相较于AS2,进行了重大改进,包括类型系统强化、事件驱动模型、面向对象编程的支持等。文档中会详细介绍AS3的类库和API,包括DisplayObject容器体系,如MovieClip、Sprite,它们是构建图形和动画的基础;Event类...

    as3游戏编程大学中文版附源码

    在AS3中,了解基本的事件处理机制也非常重要,例如addEventListener和removeEventListener方法,用于响应用户的交互或系统事件。 其次,AS3是一种面向对象的语言,因此,类、对象、继承、封装和多态是其核心概念。...

    AS3游戏编程大学(源码+电子书)

    2. **事件处理**:AS3中的事件模型允许开发者响应用户交互或其他程序事件,这对于游戏的互动性至关重要。 3. **显示对象层次**:AS3中的DisplayObject类及其子类(如Sprite和MovieClip)是构建游戏图形的基础,理解...

    AS3与JaveScript之间的通讯视频讲解

    - 错误处理:在AS3和JavaScript的接口函数中加入错误处理机制,以应对可能出现的问题。 通过这个视频教程,开发者可以了解到AS3与JavaScript之间通信的基础知识,进一步提升网页互动体验的设计和实现能力。在实际...

    flex事件讲解

    阅读这份文档将有助于深入理解Flex事件机制,并在实际开发中更高效地利用它们。 总之,理解Flex的事件模型对于创建响应式和高效的RIA至关重要。熟练掌握事件处理可以让你的Flex应用程序更加互动,提升用户体验。...

    AS3殿堂之路(全)

    AS3中的事件处理机制也是书中的重点内容,它在富互联网应用中扮演着关键角色。读者会学习到如何使用事件监听器来响应用户操作或其他程序事件,以实现动态交互。此外,AS3的显示列表管理也是其特色之一,书中会解释...

    AS3预加载SWF实例源码

    本实例源码主要讲解如何使用AS3(ActionScript 3.0)和Flash Professional来创建预加载程序。 在AS3中,预加载通常涉及到以下几个关键知识点: 1. **事件监听器**:AS3中的事件驱动模型是预加载的核心。你需要监听...

    FlashAS3动画教程

    合理利用AS3的特性,如事件驱动架构和垃圾回收机制,可以显著提升动画的流畅度和响应性。 ### 结论 “Flash AS3动画教程”不仅涵盖了基本的动画技术,还深入讲解了如何使用AS3进行高级动画控制和优化。通过掌握AS3...

    基于flash(as3)做的鼠标跟随旋转示例【附源码】

    2. **事件监听**: 在AS3中,事件驱动编程是核心机制之一。在这个示例中,我们可能会看到`Event.MOUSE_MOVE`事件被监听,当鼠标在舞台上移动时,对应的处理函数会被调用,实现对象的跟随旋转。 3. **坐标系统**: ...

    AS3游戏编程大学 AS3游戏编程大学

    通过阅读这份PDF文档,你可以学习到如何使用AS3进行游戏逻辑构建、图形绘制、事件处理、时间管理以及对象交互等核心技能。同时,书中提供的各章案例进一步强化了理论知识,每个案例都代表了一种不同的游戏类型,如...

    as3多文件下载计算文件总进度

    首先,我们需要了解AS3中的基本加载机制。AS3提供了`flash.net.URLLoader`类用于加载数据,无论是文本、XML还是二进制文件。`URLLoader`可以与`URLRequest`对象一起使用,指定要加载的URL。此外,`URLLoader`有一个`...

    as 殿堂之路

    - **DOM3事件模型**:AS3采用了标准的DOM3事件模型,提供了更加强大的事件处理机制。 - **异常处理机制**:AS3具备了完善的异常处理机制,使得错误检测和调试更为方便。 #### 三、ActionScript 3 (AS3) 在RIA开发中...

    殿堂之路_as3笔记

    3. **事件驱动编程**:AS3中的事件处理机制是其核心特性之一,它使得程序能够响应用户交互或其他程序事件。事件监听器(addEventListener)和事件发射器(dispatchEvent)是实现这一机制的关键。 4. **显示对象和...

    flex2-as3-cookbook

    3. **事件处理**:AS3的事件模型是其一大亮点,书中会详细解释事件的生命周期、事件监听器以及如何处理各种用户交互事件。 4. **图形与动画**:利用AS3的DisplayObject和DisplayObjectContainer类,开发者可以创建...

    as3学习好资料

    - **资源管理**:AS3 提供了高效的内存管理和垃圾回收机制,有助于提高应用程序的性能。 - **异步编程**:支持异步数据加载和处理,这对于构建响应迅速的应用程序至关重要。 ##### 2.2 特性亮点 - **性能提升**:...

    as3-java socket

    我们将详细讲解如何在AS3中建立Socket连接,发送和接收数据,并与Java服务器端进行互动。 首先,AS3中的Socket类提供了与远程主机进行低级TCP/IP通信的能力。要创建一个Socket实例,我们需要指定服务器的IP地址和...

Global site tag (gtag.js) - Google Analytics