zoukankan      html  css  js  c++  java
  • flex4.6事件分派+组件+参数传递

    <?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" minWidth="955" minHeight="600"
    			   xmlns:hz="com.hz.*"
    			   creationComplete="initHandler(event)">
    	<fx:Script>
    		<![CDATA[
    			import Event.AddStuEvent;
    			
    			import mx.collections.ArrayCollection;
    			import mx.controls.Alert;
    			import mx.events.FlexEvent;
    			
    			protected function initHandler(event:FlexEvent):void
    			{
    				stuInfo.stuColl=new ArrayCollection();
    				addEventListener(AddStuEvent.ADD_USER,addBtn);
    			}
    			
    			protected function addBtn(event:AddStuEvent):void
    			{
    				
    				if(stuMana.stuName.text!=""&&stuMana.stuAge.text!="")
    				{
    				stuInfo.stuColl.addItem(event.object);
    				}
    				else
    				{
    					Alert.show("两项都要填三!","温馨提示");
    				}
    			}
    			
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
    	</fx:Declarations>
    	<s:layout>
    		<s:HorizontalLayout gap="30" paddingBottom="30" paddingLeft="30" paddingRight="30" paddingTop="30"/>
    	</s:layout>
    	<hz:StuInfo id="stuInfo" width="50%" height="100%"/>
    	<hz:StuManager id="stuMana" width="50%" height="100%"/>
    </s:Application>
    
    上面是主application文件:
    <?xml version="1.0" encoding="utf-8"?>
    <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
    		 xmlns:s="library://ns.adobe.com/flex/spark" 
    		 xmlns:mx="library://ns.adobe.com/flex/mx"
    		 title="添加学生"
    		 creationComplete="initHandler(event)">
    	<fx:Script>
    		<![CDATA[
    			import Event.AddStuEvent;
    			
    			import mx.events.FlexEvent;
    			
    			public function initHandler(event:FlexEvent):void
    			{
    				addBtn.addEventListener(MouseEvent.CLICK,addBtnHandler);
    			}
    			
    			protected function addBtnHandler(event:MouseEvent):void
    			{
    				var object:Object=new Object();
    				object={sName:stuName.text,sAge:stuAge.text};
    				dispatchEvent(new AddStuEvent(AddStuEvent.ADD_USER,object))
    			}
    			
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
    	</fx:Declarations>
    		<s:Form width="100%" height="100%">
    			<s:FormItem label="学生姓名:" required="true" width="100%">
    				<s:TextInput id="stuName" width="100%"/>
    			</s:FormItem>
    			<s:FormItem label="学生年龄" required="true" width="100%">
    				<s:TextInput id="stuAge" width="100%"/>
    			</s:FormItem>
    		</s:Form>
    		<s:controlBarContent>
    			<s:Button label="添加学生:" id="addBtn"/>
    			<s:Button label="修改信息" id="updateBtn"/>
    		</s:controlBarContent>
    		<s:controlBarLayout>
    			<s:HorizontalLayout horizontalAlign="center" gap="50" paddingTop="9" paddingBottom="9"/>
    		</s:controlBarLayout>
    </s:Panel>
    

       下面是自定义事件:定义了一个常量和要传递的参数,event属性只设置了string,bubble默认为false。

    package Event
    {
    	import flash.events.Event;
    	
    	public class AddStuEvent extends Event
    	{
    		public static const ADD_USER:String="addUser"; 
    		private var _object:Object=null;
    		public function AddStuEvent(type:String, object:Object)
    		{
    			super(type,true);
    			_object=object;
    		}
    
    		public function get object():Object
    		{
    			return _object;
    		}
    
    		public function set object(value:Object):void
    		{
    			_object = value;
    		}
    		override public function clone():Event
    		{
    			return new AddStuEvent(type,object);
    		}
    	}
    }


    <?xml version="1.0" encoding="utf-8"?>
    <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
    		 xmlns:s="library://ns.adobe.com/flex/spark" 
    		 xmlns:mx="library://ns.adobe.com/flex/mx"
    		 title="学生列表"
    		 creationComplete="initHandler(event)">
    	<fx:Script>
    		<![CDATA[
    			import mx.collections.ArrayCollection;
    			import mx.events.FlexEvent;
    			[Bindable]
    			public var stuColl:ArrayCollection=null;
    			protected function initHandler(event:FlexEvent):void
    			{
    				// TODO Auto-generated method stub
    				
    			}
    			private function stuArr(item:Object):String
    			{
    				var str:String=item.sName+"哈哈"+item.sAge;
    				return str;
    			}
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
    	</fx:Declarations>
    		<s:List id="stuList" width="100%" height="100%" dataProvider="{stuColl}" labelFunction="stuArr">
    			
    		</s:List>
    		<s:controlBarContent>
    			<s:Button label="删除学生" id="deleteBtn"/>
    		</s:controlBarContent>
    </s:Panel>
    


  • 相关阅读:
    Java Tread多线程(2)多线程安全问题
    Android 自己定义ViewGroup 实战篇 -&gt; 实现FlowLayout
    类的继承私有成员问题
    HTTP协议之响应头Date与Age
    《长寿的基因》:尝试挑战主流医学界的观点,态度不严谨,有点像民间科学家。2星。
    《医疗产业大棋局》,4星。有点旧了,依旧是比较难得的有深度的中美两国医疗市场的概括与分析。
    《时间的朋友2016》:吴伯凡写的稿子,比去年李翔写的差。3星。
    《你凭什么做好互联网》。5星。洞察力比较强的从业者的经验集。适合互联网行业各级别各角色阅读。
    《长安十二时辰》。5星。大唐首都反恐24小时。基本是大片剧本。有创意的穿越架空小说。
    读过MBA的CEO更自私?《哈佛商业评论》2016年第12期。4星
  • 原文地址:https://www.cnblogs.com/james1207/p/3339598.html
Copyright © 2011-2022 走看看