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>
    


  • 相关阅读:
    洛谷—— P2234 [HNOI2002]营业额统计
    BZOJ——3555: [Ctsc2014]企鹅QQ
    CodeVs——T 4919 线段树练习4
    python(35)- 异常处理
    August 29th 2016 Week 36th Monday
    August 28th 2016 Week 36th Sunday
    August 27th 2016 Week 35th Saturday
    August 26th 2016 Week 35th Friday
    August 25th 2016 Week 35th Thursday
    August 24th 2016 Week 35th Wednesday
  • 原文地址:https://www.cnblogs.com/james1207/p/3339598.html
Copyright © 2011-2022 走看看