在as中监听自定义事件
发布时间:2020-12-15 04:18:45 所属栏目:百科 来源:网络整理
导读:场景描述:点击一张图片,响应事件。必须在AS中,去监听事件,并处理事件。 1 自定义了一个事件,如下: package bridge {import flash.events.Event;import mx.events.FlexEvent;public class MyEvent extends Event {public static const myclick:String="
场景描述:点击一张图片,响应事件。必须在AS中,去监听事件,并处理事件。 1 自定义了一个事件,如下: package bridge { import flash.events.Event; import mx.events.FlexEvent; public class MyEvent extends Event { public static const myclick:String="myclick"; public function MyEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false) { super(type,bubbles,cancelable); } } }2 ?监听事件处理的AS类,如下: package handler { import bridge.MyEvent; import flash.events.Event; import mx.controls.Alert; import skin.ImgHanderSkin; import spark.components.BorderContainer; import spark.components.Image; public class ImgHander extends BorderContainer { [SkinPart(required="true")] public var img:Image;// 打开按钮 public function ImgHander() { super(); this.setStyle("skinClass",ImgHanderSkin); this.percentHeight=100; this.percentWidth=100; } //初始化监听 override public function initialize():void{ super.initialize(); img.addEventListener(MyEvent.myclick,SetImgShouZhanUrl); } private function SetImgShouZhanUrl(event:Event):void { Alert.show("Preview"); } } }3 新建MXML外观,皮肤类,在这里发送自定义事件。(在assert文件夹下有一张图片哦:柯南.jpg)如下: <?xml version="1.0" encoding="utf-8"?> <!-- ADOBE SYSTEMS INCORPORATED Copyright 2008 Adobe Systems Incorporated All Rights Reserved. NOTICE: Adobe permits you to use,modify,and distribute this file in accordance with the terms of the license agreement accompanying it. --> <!--- The default skin class for a Spark SkinnableContainer container. @see spark.components.SkinnableContainer @langversion 3.0 @playerversion Flash 10 @playerversion AIR 1.5 @productversion Flex 4 --> <s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled="0.5"> <fx:Metadata>[HostComponent("spark.components.BorderContainer")]</fx:Metadata> <fx:Script fb:purpose="styling"> <![CDATA[ import bridge.MyEvent; /** * @private */ override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number) : void { // Push backgroundColor and backgroundAlpha directly. // Handle undefined backgroundColor by hiding the background object. if (isNaN(getStyle("backgroundColor"))) { background.visible = false; } else { background.visible = true; bgFill.color = getStyle("backgroundColor"); bgFill.alpha = getStyle("backgroundAlpha"); } super.updateDisplayList(unscaledWidth,unscaledHeight); } private function img_mouSEOutHandler(event:MouseEvent):void{ // TODO Auto-generated method stub var e:MyEvent= new MyEvent(MyEvent.myclick); img.dispatchEvent(e); } ]]> </fx:Script> <s:states> <s:State name="normal" /> <s:State name="disabled" /> </s:states> <!--- Defines the appearance of the SkinnableContainer class's background. --> <s:Rect id="background" left="0" right="0" top="0" bottom="0"> <s:fill> <!--- @private --> <s:SolidColor id="bgFill" color="#FFFFFF"/> </s:fill> </s:Rect> <!-- Note: setting the minimum size to 0 here so that changes to the host component's size will not be thwarted by this skin part's minimum size. This is a compromise,more about it here: http://bugs.adobe.com/jira/browse/SDK-21143 --> <!--- @copy spark.components.SkinnableContainer#contentGroup --> <s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" minWidth="0" minHeight="0"> <s:layout> <s:BasicLayout/> </s:layout> <s:Image id="img" click="img_mouSEOutHandler(event)" source="assert/柯南.jpg"> </s:Image> </s:Group> </s:Skin>4 ?最后,创建一个MXML应用程序里面,去调用,AS类。直接运行。 <?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:handler="handler.*"> <handler:ImgHander> </handler:ImgHander> </s:Application> 结束! 注意:1 发送自定义事件: var e:MyEvent= new MyEvent(MyEvent.myclick); img.dispatchEvent(e);? ? ? ? ? ? 2 ?接收并处理事件: img.addEventListener(MyEvent.myclick,SetImgShouZhanUrl); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |