完成一个自定义组件:一个简单的登录界面,在测试页面中引用。点击登录按钮,发布一个自定义的事件LoginEvent,在测试页面中监听这一事件。
1. 完成自定义的组件FlexLogin,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="438"
height="223" color="#37E115" borderColor="#2DC8A2"
backgroundColor="#3DB80C">
<mx:Label x="131" y="31" text="Flex自定义组件/事件"
fontSize="18" color="#0E0E0C"/>
<mx:Label x="40" y="76" text="用户名" fontSize="15" color="#040C03"/>
<mx:TextInput x="130" y="79" width="210" id="loginNameTxt"/>
<mx:Label x="55" y="117" text="密码" fontSize="15"/>
<mx:TextInput x="130" y="120" width="210" id="loginPwdTxt"/>
<mx:Button x="130" y="163" label="登录" fontSize="15"
id="loginBtn" click="userLogin()"/>
<mx:Script>
<![CDATA[
import com.event.LoginEvent;
private function userLogin():void{
var loginName:String = loginNameTxt.text;
var loginPwd:String = loginPwdTxt.text;
//创建自定义的事件
var loginEvent:LoginEvent = new LoginEvent(loginName, loginPwd);
//分发(广播)事件;当点击登录按钮时就触发了这一事件
this.dispatchEvent(loginEvent);
}
]]>
</mx:Script>
//由于是自定义的组件,如何知道它有哪些事件-----通过元数据
//以下据表明:本组件FlexLogin有一个userLogin事件,类似与Button组件的click事件,
// 类型为LoginEvent,类似于Button的MouseEvent
<mx:Metadata>
[Event(name="userLogin",type="com.event.LoginEvent")]
</mx:Metadata>
</mx:Canvas>
2. 自定义事件LoginEvent, 代码如下:
package com.event
{
import flash.events.Event;
public class LoginEvent extends Event
{
public static const eventType:String = "userLogin";
public var loginName:String;
public var loginPwd:String;
public var loginDate:String = "20xx-xx-xx";
public var loginPlace:String = "上海";
public function LoginEvent(loginName:String, loginPwd:String)
{
super(eventType);
this.loginName = loginName;
this.loginPwd = loginPwd;
}
}
}
3. 使用自定义组件,发布事件。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
//声明前缀,类似jsp自定义标签
xmlns:lijie="com.component.*"
creationComplete="initApp()">
//引用组件
<lijie:FlexLogin/>
<mx:Script>
<![CDATA[
import com.event.LoginEvent;
import mx.controls.Alert;
private function initApp():void{
this.addEventListener("userLogin",userLoginHandler);
}
//注意加参数:事件类型
private function userLoginHandler(event:LoginEvent):void{
//处理代码
}
]]>
</mx:Script>
</mx:Application>
点击“登录”按钮,发布LoginEvent事件,但userLoginHandler方法并未执行,说明父容器Application没有监听到LoginEvent事件。为什么无法监听到?这个涉及到Flex的事件机制。
Application作为FlexLogin的父容器,可以在LoginEvent事件的捕获或者冒泡阶段监听到这一事件。
1.捕获阶段:为了在捕获阶段监听到事件,需要修改监听器注册方法,将this.addEventListener("userLogin",userLoginHandler) 修改为this.addEventListener("userLogin",userLoginHandler,true) 参数true表示在捕获阶段监听事件。
2.冒泡阶段:this.addEventListener("userLogin",userLoginHandler); 默认表示在冒泡阶段监听事件,但问题是:如果事件本身不参与冒泡过程,那么监听器就无法监听到这一事件。 查看LoginEvent的构造方法 super(eventType) , 只指明了事件类型,默认不参与冒泡。为了使事件冒泡,需要将第二个参数设置为true ,即super(eventType,true)
分享到:
相关推荐
4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析代码,可以了解事件生命周期、事件冒泡和捕获的概念,以及如何在...
### 一、Flex自定义组件 #### 1. 创建自定义组件的原因 在Flex应用中,有时标准组件库提供的组件无法满足特定的设计或功能需求。此时,开发者需要创建自定义组件来扩展Flex的功能,以实现个性化设计或定制化行为。...
在Flex中,自定义组件是开发者根据项目需求创建的特殊UI元素,可以扩展和定制标准的MX或Spark组件。本示例着重于一个名为“ImageViewer”的自定义组件,这通常是一个用于展示图像并可能包含缩放、平移等交互功能的...
Flex自定义组件是Adobe Flex框架中的一个重要特性,它允许开发者创建具有特定功能和外观的UI元素,以满足项目中独特的用户界面需求。Flex是一个开源的、基于MXML和ActionScript的开发框架,主要用于构建富互联网应用...
这个文件可能包含了一个自定义组件的定义,以及在主应用中如何使用它和设置事件监听器的示例代码。 深入学习Flex自定义控件和事件处理,不仅可以帮助你创建高度定制的应用,还能提高代码复用性和可维护性。通过实践...
下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。 一、Flex自定义组件 Flex自定义组件是指开发者根据项目需求,通过继承已有的Flex基类(如UIComponent或Canvas),并添加特定功能和样式来创建...
4. **监听事件**:在接收方组件中,使用`addEventListener()`方法添加事件监听器,处理自定义事件。 在提供的“WinCCALLMine”文件中,可能包含了实现这些概念的源代码示例。你可以通过查看和运行这些代码,更深入...
- 要响应自定义事件,需要在目标组件上添加事件监听器。可以使用`addEventListener()`方法,传入自定义事件的类型、监听函数和可选的捕获阶段参数。 5. **处理事件** - 监听函数将被调用,当自定义事件被派发时。...
### Flex自定义事件详解 Flex 是一款用于构建和部署跨平台桌面应用与移动应用的开源框架,它基于Adobe Flash Platform。在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的...
总的来说,"flex自定义文本编辑器"项目展示了Flex4中如何构建交互式的自定义组件,结合了文本编辑和颜色选择的功能。通过学习这个项目的源代码,开发者可以深入理解Flex的组件体系结构,以及如何通过MXML和...
在本文中,我们将深入探讨如何在Flex...总结来说,自定义Flex加载条是一项涉及组件样式、模板、动画和事件处理的综合工作。通过学习和实践这个示例,你可以掌握如何根据项目需求定制出独特的加载条组件,提升用户体验。
本文主要探讨如何在Flex中自定义组件,特别是针对一个搜索栏的实现。在提供的压缩包中,我们有`searchField.fla`、`searchField.swf`以及`documentClasses`这三个文件,它们分别代表了不同阶段的开发过程。 1. **...
本案例中提到的"flex图片放大镜组件"就是这样一个自定义组件,它专为图片展示站点设计,提供了一个便捷的方式来实现图片的放大效果,从而提升用户体验。 首先,我们来理解一下“flex”这个词。在前端布局中,...
在IT行业中,自定义组件是提升用户体验和满足特定需求的重要手段。标题提到的"flex 自定义进度条",指的是利用Flex布局技术来设计一个可定制的进度条组件。Flex布局,全称为Flexible Box布局,是一种在CSS3中引入的...
然后,在这个自定义组件中,我们需要监听ComboBox的事件,如`change`事件,当用户在组合框中选择一个值时触发此事件。接着,我们需要获取DataGrid的`dataProvider`,并根据用户选择的过滤条件更新它。 3. ComboBox...
这个压缩包“Flex自定义生成图表源码.rar”显然包含了一组用于创建自定义图表的源代码,这对于开发者来说是宝贵的资源,特别是那些在Flex环境中工作并需要展示数据的可视化效果的人。 在Flex中,生成图表主要依赖于...
压缩包文件"boy_dream_datefield(日期组件)"很可能包含了这个自定义组件的所有源代码和资源,包括ActionScript或MXML文件,以及可能的样式和皮肤文件。 总的来说,这个自定义的DateField组件提供了更丰富的日期时间...
4. **事件监听**:为时间选择组件添加事件监听器,当用户更改小时、分钟或秒时,更新Date对象以反映新的时间信息。同时,需要确保DateField的`text`属性同步更新,以便正确显示选定的时间。 5. **本地化支持**:...
在Flex中,自定义组件是通过继承已有的UIComponent或Flex提供的其他基类,然后添加所需的功能和视觉元素来实现的。对于DownloadProgressBar,我们可能需要继承 mx.controls.ProgressBar 类,它是Flex提供的一种用于...