`
lijiejava
  • 浏览: 262406 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

请您先登录,才能继续操作

Flex自定义组件 自定义事件 事件监听

    博客分类:
  • Flex
 
阅读更多
完成一个自定义组件:一个简单的登录界面,在测试页面中引用。点击登录按钮,发布一个自定义的事件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
0
分享到:
评论

相关推荐

    flex自定义组件事件DEMO

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

    Flex自定义组件和事件

    ### 一、Flex自定义组件 #### 1. 创建自定义组件的原因 在Flex应用中,有时标准组件库提供的组件无法满足特定的设计或功能需求。此时,开发者需要创建自定义组件来扩展Flex的功能,以实现个性化设计或定制化行为。...

    Flex 自定义组件ImageViewer

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

    flex 自定义组件

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

    flex 自定义控件、事件

    这个文件可能包含了一个自定义组件的定义,以及在主应用中如何使用它和设置事件监听器的示例代码。 深入学习Flex自定义控件和事件处理,不仅可以帮助你创建高度定制的应用,还能提高代码复用性和可维护性。通过实践...

    Flex各自定义组件事件通讯例子

    下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。 一、Flex自定义组件 Flex自定义组件是指开发者根据项目需求,通过继承已有的Flex基类(如UIComponent或Canvas),并添加特定功能和样式来创建...

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

    4. **监听事件**:在接收方组件中,使用`addEventListener()`方法添加事件监听器,处理自定义事件。 在提供的“WinCCALLMine”文件中,可能包含了实现这些概念的源代码示例。你可以通过查看和运行这些代码,更深入...

    flex4自定义事件用法

    - 要响应自定义事件,需要在目标组件上添加事件监听器。可以使用`addEventListener()`方法,传入自定义事件的类型、监听函数和可选的捕获阶段参数。 5. **处理事件** - 监听函数将被调用,当自定义事件被派发时。...

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

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

    flex自定义文本编辑器

    总的来说,"flex自定义文本编辑器"项目展示了Flex4中如何构建交互式的自定义组件,结合了文本编辑和颜色选择的功能。通过学习这个项目的源代码,开发者可以深入理解Flex的组件体系结构,以及如何通过MXML和...

    Flex自定义加载条(小起)

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

    flex/flash自定义组件(搜索栏)

    本文主要探讨如何在Flex中自定义组件,特别是针对一个搜索栏的实现。在提供的压缩包中,我们有`searchField.fla`、`searchField.swf`以及`documentClasses`这三个文件,它们分别代表了不同阶段的开发过程。 1. **...

    flex图片放大镜组件,自定义组件

    本案例中提到的"flex图片放大镜组件"就是这样一个自定义组件,它专为图片展示站点设计,提供了一个便捷的方式来实现图片的放大效果,从而提升用户体验。 首先,我们来理解一下“flex”这个词。在前端布局中,...

    flex 自定义进度条

    在IT行业中,自定义组件是提升用户体验和满足特定需求的重要手段。标题提到的"flex 自定义进度条",指的是利用Flex布局技术来设计一个可定制的进度条组件。Flex布局,全称为Flexible Box布局,是一种在CSS3中引入的...

    flex 自定义 datagrid 列头带组合框进行过滤

    然后,在这个自定义组件中,我们需要监听ComboBox的事件,如`change`事件,当用户在组合框中选择一个值时触发此事件。接着,我们需要获取DataGrid的`dataProvider`,并根据用户选择的过滤条件更新它。 3. ComboBox...

    Flex自定义生成图表源码.rar

    这个压缩包“Flex自定义生成图表源码.rar”显然包含了一组用于创建自定义图表的源代码,这对于开发者来说是宝贵的资源,特别是那些在Flex环境中工作并需要展示数据的可视化效果的人。 在Flex中,生成图表主要依赖于...

    Flex自定义DateField选择时分秒 修复版

    压缩包文件"boy_dream_datefield(日期组件)"很可能包含了这个自定义组件的所有源代码和资源,包括ActionScript或MXML文件,以及可能的样式和皮肤文件。 总的来说,这个自定义的DateField组件提供了更丰富的日期时间...

    Flex自定义DateField选择时分秒

    4. **事件监听**:为时间选择组件添加事件监听器,当用户更改小时、分钟或秒时,更新Date对象以反映新的时间信息。同时,需要确保DateField的`text`属性同步更新,以便正确显示选定的时间。 5. **本地化支持**:...

    flex3自定义DownloadProgressBar

    在Flex中,自定义组件是通过继承已有的UIComponent或Flex提供的其他基类,然后添加所需的功能和视觉元素来实现的。对于DownloadProgressBar,我们可能需要继承 mx.controls.ProgressBar 类,它是Flex提供的一种用于...

Global site tag (gtag.js) - Google Analytics