`
游其是你
  • 浏览: 12787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex之理解Flash中的事件机制

    博客分类:
  • Flex
阅读更多

上次测试中当我们点击“发送”按钮时,flex就会与后台中定义的Java方法交互并将结果返回给flex并呈现在前台页面,其实这靠的就是事件。事件贯穿在Flex中的所有过程中,如果没有事件,那么就谈不上什么人机交互。

Flash的ActionScript语言支持事件编程。在ActionScript中,每个事件都由一个事件对象表示。事件对象是flash.events.Event类或其某个子类的实例。事件对象不但存贮有关特定事件的信息,还包含便于操作事件对象的方法。事件对象有如下两个用途:

●事件对象通过将特定事件的信息存贮在一组属性中来代表实际事件。

●事件对象包含一组方法,可用于操作事件对象和影响事件处理系统的行为。

创建事件对象后,就可以通过ActionScript的API方法派发(dispatch)该事件对象。所谓的“派发”就是将该事件对象按照一定规则顺序地传递给其他对象并执行这些对象上注册的事件侦听器

这些能够收听到该事件的对象被称之为事件的目标(target)对象。我们可以编写事件侦听器对传递到目标对象上的事件进行处理。

事件侦听器是我们自己编写的,用于响应特定事件的函数和方法。事件侦听器可以是目标对象的函数和方法,也可以是其他对象上的函数和方法。但事件侦听器必须在目标对象上注册才能对传递给目标对象上的事件进行处理。

为了更好的理解Flash中的事件机制,我们通过一个小例子来看看事件是怎么进行的!

1.创建自定义事件类

在ActionScript中,自定义的事件类必须继承flash.events.Event类,下面是一个自定义的事件类TestEvent,代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.flex.ases
{
    import flash.events.Event;
    
    publicclass TestEvent extends Event
    {
       publicstaticconst TEST_EVENT:String="TEST_EVENT";
       publicvar data:Object;
       publicfunction TestEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
       {
           super(type, bubbles, cancelable);
       }
    }
}

这个类自定义了一个事件类型“TEST_EVENT”,而data则用于存贮事件信息。而TestEvent类的构造函数必须提供如上所示的3个参数,这么做是为了父类的构造函数提供所需的函数:

●type:表示事件类型的一个字符串。他不仅表示具体事件对象的含义,而且事件侦听器也是根据事件的类型对事件进行侦听。事件类型的字符串一般都是用静态变量定义的,即用const关键字修饰。

●bubbles:表示事件是否“冒泡”。这个以后会学习到。

●cancelable:表示事件调度过程中,目标对象上对事件的默认处理是否可以取消。这个稍后也会仔细分析的。

2.创建事件适配器

在ActionScript中,只有flash.events.EventDispathc类及其子类的实例才能派发事件。

派发事件的方法则是以要被派发的事件对象作为参数来调用EventDispatch类或其子类实例的dispatchEvent()方法。

在ActionScript中,只有flash.events.EventDispathc类及其子类的实例才可以成为事件的目标对象,因为只有flash.events.EventDispathc类及其子类的实例才可以注册事件侦听器,从而决定怎么处理达到该目标对象上的事件。

下面代码中创建了一个TestEventDispatch类并继承了EventDispatcher类,代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.flex.ases
{
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    
    import mx.controls.Alert;
    
    publicclass TestEventDispatch extends EventDispatcher
    {
       publicfunctionTestEventDispatch(target:IEventDispatcher=null)
       {
           super(target);
           this.addEventListener(TestEvent.TEST_EVENT,testEventMethod);
       }
       
       protectedfunction testEventMethod(event:TestEvent):void
       {
           // TODOAuto-generated method stub
           Alert.show(event.data as String,"提示");
       }
       publicfunctioncreateTestEvent():void{
           var testEvent:TestEvent=new TestEvent(TestEvent.TEST_EVENT);
           testEvent.data="你已经触发自定义事件!";
           this.dispatchEvent(testEvent);
       }
       
    }
}

通过上面这段代码我们可以看出,TestEventDispatch类中createTestEvent方法中创建了一个TestEvent事件的实例,并指定此事件的类型为TEST_EVENT,并给此事件实例添加了一条信息。然后我们把此实例作为派发事件的参数进行派发事件。

我们在此类的构造函数中添加事件侦听器,并用testEventMethod作为TEST_EVENT事件类型的处理方法。

3.测试

现在开始调用此事件,代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xmlversion="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
              xmlns:s="library://ns.adobe.com/flex/spark"
              xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    
    <fx:Script>
       <![CDATA[
           import com.flex.ases.TestEvent;
           import com.flex.ases.TestEventDispatch;
           protectedfunction test_clickHandler():void
           {
              // TODOAuto-generated method stub
              var testEventDispatch:TestEventDispatch=newTestEventDispatch();
              testEventDispatch.createTestEvent();
              
           }
       ]]>
    </fx:Script>
    
    <fx:Declarations>
       <!-- Place non-visualelements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:Label x="34"y="97"fontSize="19" text="点击按钮触发自定义事件:"/>
    <s:Button id="test" x="284" y="87" height="28" label="触发" click="test_clickHandler()"
             fontSize="18"/>
</s:Application>

运行此页面,如下所示:

 

点击“触发”按钮,则会调用自定义的TestEvent事件,页面如下所示:

 

好了,经过这么一学习,现在对flash的事件机制有了一个质地的理解。

原创文章,转载请注明出处:http://www.it161.com/article/webDetail?articleid=140111222132

更多IT文章,请访问:http://www.it161.com/

分享到:
评论

相关推荐

    Flex事件机制(通俗易懂)

    对于初学者而言,理解和掌握Flex中的事件机制是非常重要的一步。本文将深入探讨Flex事件机制的基础概念、事件注册通道、事件触发方式、事件分发机制等关键知识点,并尝试以简单明了的方式进行解释。 #### 二、事件...

    flex事件机制的分发

    Flex事件机制是Adobe Flex框架中一个关键的概念,它允许组件之间通过事件进行通信。在Flex中,事件机制的分发主要包括三个主要阶段:捕获阶段、目标阶段和冒泡阶段。下面将详细介绍这些阶段以及自定义事件的创建与...

    flex 与 flash 交互

    总结来说,Flex和Flash的交互是通过ActionScript和一系列通信机制实现的,这些机制包括事件监听、参数传递、本地连接等。理解并熟练运用这些方法,可以将Flash的动态性和Flex的UI强大功能结合起来,创造出更加丰富的...

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

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

    FLEX和Actionscript开发FLASH游戏 flash游戏开发文档

    在开发Flash游戏的过程中,FLEX和ActionScript是两个至关重要的技术。FLEX是一个开放源代码的框架,主要用于构建富互联网应用程序(RIA),而ActionScript是Adobe Flash平台中的编程语言,用于控制动画、交互性和...

    flex与flash的交互

    在IT行业中,Flex和Flash是两种非常重要的技术,它们在创建富互联网应用程序(RIA)时起着关键作用。本文将深入探讨Flex与Flash之间的交互,以及如何利用它们来构建动态、交互性强的Web应用程序。 Flex是由Adobe...

    Flex TitleWindow父子页面的事件派发

    本文将深入探讨如何在Flex的TitleWindow父子页面之间进行有效的事件派发,以及背后的事件机制,这对于理解和优化Flex应用中的交互逻辑至关重要。 ### 1. Flex TitleWindow与事件派发基础 TitleWindow作为Flex中的...

    使用FLEX 和 Actionscript开发FLASH 游戏(一)

    总之,使用FLEX和ACTIONSCRIPT开发FLASH游戏,你需要掌握MXML和ACTIONSCRIPT的结合使用,理解事件处理机制,以及如何处理图形和动画。随着系列教程的深入,你将逐步学习如何构建游戏逻辑、处理用户输入、实现物理...

    Flex(Flash)与.net交互教程

    - **事件处理**:在Flex中监听服务调用的事件,如result和fault事件,处理成功返回的数据或异常情况。 - **调试与测试**:在Flex Builder和Visual Studio中进行联合调试,确保客户端和服务器端的代码协同工作。 ...

    使用Adobe Flex开发的Flash小游戏-黄金矿工.zip

    在本案例中,我们将深入探讨如何使用Adobe Flex来开发一款名为“黄金矿工”的Flash小游戏。 首先,我们要理解Flex的基本结构。Flex项目通常由MXML和ActionScript文件组成。MXML是一种标记语言,用于定义应用程序的...

    Flash.Builder.4.&.Flex.4 Flex4

    5. **数据绑定**:Flex 4中的数据绑定机制简化了视图和模型之间的连接。通过数据绑定,当模型数据改变时,相应的界面元素会自动更新,反之亦然,实现了双向数据绑定。 6. **事件驱动编程**:Flex应用程序通常基于...

    Flex中文教程中文文档

    Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的开放源代码框架。...通过这个教程,读者不仅可以理解Flex的基本概念,还能掌握实际开发中的技巧和最佳实践,从而成为一名熟练的Flex开发者。

    flex 官方文档 中文教程

    本教程基于Flex官方文档,旨在为开发者提供中文版的详细学习指南,帮助理解并掌握Flex的核心概念、组件、布局、事件处理以及数据绑定等关键知识点。 1. **Flex简介** Flex是基于ActionScript 3.0和Flash Player或...

    flex安全机制详解

    Flex的安全机制之一就是沙箱机制,它限制了SWF文件能够访问的资源范围,以防止恶意代码的执行。沙箱机制将不同的SWF文件隔离在各自的“沙箱”内,这样即使其中一个SWF文件被攻击者利用,也不会影响到其他SWF文件。 ...

    flex+flash(Chapter02)

    5. **数据绑定与数据服务**:Flex中的数据绑定机制能够轻松地连接UI组件与数据源,而Flash可以作为数据展示的前端。学习如何将Flash组件与Flex的数据模型绑定,实现动态更新和实时数据展示。 6. **性能优化**:结合...

    flex控件事件

    Flex控件事件是Adobe Flex应用程序开发中的核心概念,主要用于实现用户交互和组件间的通信。在Flex中,控件(或称为组件)是构建用户界面的基本元素,如按钮、文本框、列表等。当用户与这些控件进行交互时,如点击...

    Flex与Flash相互调用实例

    Flex和Flash是两种在Web开发中广泛使用的技术,它们各自有着独特的优势,但在某些场景下,需要它们相互协作,实现更复杂的功能。本教程通过一个实际的调用实例,展示了Flex与Flash如何相互通信。 Flex是基于...

    FLEX中文教程+实例

    Flex中的数据绑定机制允许将UI组件的属性直接绑定到应用程序的数据模型,当数据模型发生变化时,UI会自动更新,反之亦然,简化了界面和数据间的交互。 六、Flex事件模型 Flex事件模型基于观察者模式,事件是组件间...

    简单的flex、flash播放器

    4. **事件驱动编程**:在Flex和Flash中,用户交互是通过事件驱动模型来处理的,比如点击按钮播放视频,这需要理解事件监听器和事件处理函数的工作原理。 5. **用户界面组件**:Flex提供了丰富的UI组件库,如...

    flex中文帮助文档

    这个“flex中文帮助文档”提供了对Flex技术的全面介绍和快速入门指南,旨在帮助开发者更好地理解和使用Flex进行Web应用开发。 一、Flex概述 Flex是一个基于ActionScript编程语言和MXML标记语言的开发框架,它允许...

Global site tag (gtag.js) - Google Analytics