`
joe.feng
  • 浏览: 133380 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Flex自定义事件

    博客分类:
  • Flex
阅读更多

 

 对于自定义组件,我们通常希望能够把它写的通用一些,比如一个自定义的按钮,在A处调用,我们希望它能弹出一个窗口,而在B处调用,我们希望它能够发送请 求到后台服务等。我们希望在调用自定义组件的地方能够定制这些功能,这就需要使用自定义事件把自定义组件和调用程序关联起来。

 

下面我们就来看一下,如何实现这样的功能,有两种方法:

第一种:

自定义组件myButton的代码:

 

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
 <fx:Script>
  <![CDATA[
   private function onClick(event:MouseEvent):void{
    dispatchEvent(new Event("customClick"));
   }
  ]]>
 </fx:Script>
 <s:Button label="click me" click="onClick(event)" />
</s:Group>

*点击自定义组件中的按钮时,创建一个Event对象,在构造函数中添加自定义的事件类型,然后使用dispatchEvent方法发送。在主窗体中对该组件添加事件监听。

 

<?xml version="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" 
      xmlns:components="com.fgj.components.*"
      creationComplete="init()">
 <fx:Script>
  <![CDATA[
    private function init():void{
    myBtn.addEventListener("customClick", onClickHandler);
   }   
   private function onClickHandler(event:Event):void{
    trace("123");
   }
  ]]>
 </fx:Script>
  <components:MyButton id="myBtn"/>
</s:Application>

 *主窗体中对该组件监听类型为customClick的事件。通过这种方式就把两个文件关联起来了。

 

如果要由自定义组件向主窗体传递参数,可以创建一个事件对象,将参数赋值给该对象的属性进行传递。

自定义事件:

 

public class MyEvent extends Event
 {
  public var param:String = ""; 
  public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
  {
   super(type, bubbles, cancelable);
  }
 }

 

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
 <fx:Script>
  <![CDATA[
   import com.fgj.events.MyEvent;
   
   private function onClick(event:MouseEvent):void{
    var e:MyEvent = new MyEvent("passParam");
    e.param = "abc";
    this.dispatchEvent(e);
   }
  ]]>
 </fx:Script>
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <s:Button label="Click" click="onClick(event)" />
</s:Group>

 

 

customBtn.addEventListener("passParam", onClick);
private function onClick(event:MyEvent):void{
 trace(event.param);
}

<components:CustomEventComp id="customBtn" />
 

 

 

第二种(标签式监听):

这里需要用到元数据标签,这是一种特殊的标签,它在代码中的作用是像编译器提供如何编译程序的信息。实际上,这些标签并没有被编译进swf文件中,而只是告诉编译器如何生成swf文件。

Flex为事件定义了[Event]元标签,用来声明那些被自定义类派发的事件。

 

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
 <fx:Metadata>
  [Event(name="customClick", type="flash.events.Event")]
 </fx:Metadata>
 <fx:Script>
  <![CDATA[
   private function onClick(event:MouseEvent):void{
    dispatchEvent(new Event("customClick"));
   }
  ]]>
 </fx:Script>

 <s:Button label="click me" click="onClick(event)" />
</s:Group>

 

 

<?xml version="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" 
      xmlns:components="com.fgj.components.*">      
 <fx:Script>
  <![CDATA[
   private function onClickHandler(event:Event):void{
    trace("123");
   }
  ]]>
 </fx:Script>
 <components:MyButton id="myBtn" customClick="onClickHandler(event)" />
</s:Application>

   个人比较推荐第二种做法,因为动态添加事件监听器(addEventListener),会使程序的可读性变差。

分享到:
评论
1 楼 lanliying 2013-08-22  
主窗体报错
Multiple markers at this line:
-Line breakpoint: demoMXML.mxml [line: 21]
-1120: Access of undefined property customBtn.
-1120: Access of undefined property onClick.

这行customBtn.addEventListener("passParam",onClick);

要什么解决?

相关推荐

    flex自定义事件、简单例子说明

    ### Flex自定义事件详解 Flex 是一款用于构建和部署跨平台桌面应用与移动应用的开源框架,它基于Adobe Flash Platform。在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的...

    Flex自定义组件和事件

    ### 二、Flex自定义事件 #### 1. 为什么需要自定义事件 Flex的内置事件(如 MouseEvent 和 Event)可能不足以满足所有交互需求。自定义事件允许开发者创建具有特定含义和数据的事件,以更好地匹配应用的业务逻辑。...

    flex4自定义事件用法

    自定义事件是Flex开发中的一个重要概念,允许开发者扩展内置事件系统,以满足特定项目的需要。下面将详细介绍Flex4自定义事件的用法,以及如何在一个完整的项目中导入和运行。 1. **创建自定义事件类** - 首先,...

    flex自定义组件事件DEMO

    4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析代码,可以了解事件生命周期、事件冒泡和捕获的概念,以及如何在...

    flex 自定义控件、事件

    这个主题聚焦于“flex自定义控件与事件”,这是一个关键的开发概念,特别是对于那些希望深入理解Flex架构和提升应用用户体验的开发者来说。 自定义控件在Flex开发中扮演着重要角色,它们允许开发者根据项目需求创建...

    Flex 自定义组件ImageViewer

    在Flex中,自定义组件是开发者根据项目需求创建的特殊UI元素,可以扩展和定制标准的MX或Spark组件。本示例着重于一个名为“ImageViewer”的自定义组件,这通常是一个用于展示图像并可能包含缩放、平移等交互功能的...

    flex 自定义组件

    Flex自定义组件是Adobe Flex框架中的一个重要特性,它允许开发者创建具有特定功能和外观的UI元素,以满足项目中独特的用户界面需求。Flex是一个开源的、基于MXML和ActionScript的开发框架,主要用于构建富互联网应用...

    Flex 自定义ToolTip

    ### Flex自定义ToolTip详解 在Flex开发中,`ToolTip`是一种非常实用的界面元素,用于在用户悬停或聚焦某个控件时显示额外的信息。默认情况下,Flex提供了基本的`ToolTip`功能,但有时为了满足特定的设计需求或者...

    Flex自定义加载条(小起)

    在本文中,我们将深入探讨如何在Flex...总结来说,自定义Flex加载条是一项涉及组件样式、模板、动画和事件处理的综合工作。通过学习和实践这个示例,你可以掌握如何根据项目需求定制出独特的加载条组件,提升用户体验。

    flex自定义树形结构

    本篇文章将深入探讨如何在Flex环境中自定义实现一个具备展开、收缩功能的多级目录树形结构。 首先,让我们理解`Flex`布局。Flex布局,全称为Flexible Box,是一种用于容器中元素的布局模型,旨在提供更好的灵活性,...

    各种Flex自定义组件

    在标题“各种Flex自定义组件”中,我们可以推断这是一个包含多种定制Flex组件的资源集合。这些组件可能包括时间选择器、数据网格(datagrid)、树形视图(tree)和下拉组合框(combox)。每个组件都有其特定的用途和...

    Flex 自定义 时间 日历 控件

    Flex 自定义 时间 日历 控件

    flex 自定义进度条

    标题提到的"flex 自定义进度条",指的是利用Flex布局技术来设计一个可定制的进度条组件。Flex布局,全称为Flexible Box布局,是一种在CSS3中引入的布局模型,旨在提供更灵活的盒状模型布局方式,尤其适合在不同屏幕...

    flex自定义组件介绍

    标题中的“flex自定义组件介绍”指的是在Adobe Flex框架中创建和使用自定义组件的过程。Flex是一个基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。自定义组件允许开发者根据特定需求扩展Flex...

    flex事件flex事件flex事件flex事件

    - **自定义事件**:开发者可以通过`CustomEvent` API创建与Flex布局相关的自定义事件,例如`flexResize`或`flexOrderChange`,来监听布局变化。 - **MutationObserver**:用于监听DOM结构的变化,例如当Flex项目...

    FLEX自定义等待图标资源

    综上所述,FLEX自定义等待图标资源为开发者提供了丰富的选项,帮助他们提升应用程序的用户体验。通过灵活地使用SWF和GIF资源,开发者可以创造出与应用风格相符且用户体验优良的等待动画。同时,理解和掌握如何在FLEX...

    Flex 自定义公共包

    Flex 自定义公共包,可以在项目里直接使用

    Flex自定义编辑项目

    Flex自定义编辑项目是一种基于Adobe Flex技术的开发工具,它为用户提供了一种类似于Flash IDE的交互体验。这个项目的核心特点是其高度的可定制性,允许开发者进行多种视觉元素的编辑操作,如拖拽、放大、缩小、添加...

    ActionScript的自定义组件及自定义事件例子

    总的来说,掌握ActionScript的自定义组件和自定义事件是提升Flash和Flex开发技能的重要一步。通过实践和研究“WinCCALLMine”中的示例,你可以更好地理解这些概念,并将其应用到你的项目中,从而创造出独特且功能...

    flex 高级自定义组件

    Flex中的高级自定义组件开发是构建复杂用户界面的关键技术,它允许开发者超越基本组件的限制,以满足特定的业务需求和视觉设计。在创建高级组件时,了解并掌握一些核心方法的重写至关重要,这些方法涉及到组件的生命...

Global site tag (gtag.js) - Google Analytics