- 浏览: 131040 次
- 性别:
- 来自: 苏州
最新评论
-
lanliying:
主窗体报错Multiple markers at this l ...
Flex自定义事件 -
Alex丿:
12年的帖子,难得~。~
Flex编译参数设置
对于自定义组件,我们通常希望能够把它写的通用一些,比如一个自定义的按钮,在A处调用,我们希望它能弹出一个窗口,而在B处调用,我们希望它能够发送请
求到后台服务等。我们希望在调用自定义组件的地方能够定制这些功能,这就需要使用自定义事件把自定义组件和调用程序关联起来。
下面我们就来看一下,如何实现这样的功能,有两种方法:
第一种:
自定义组件myButton的代码:
<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> <fx:Script> <![CDATA[ private function onClick(event:MouseEvent):void{ dispatchEvent(new Event("customClick")); } ]]> </fx:Script> <s:Button label="click me" click="onClick(event)" /> </s:Group>
*点击自定义组件中的按钮时,创建一个Event对象,在构造函数中添加自定义的事件类型,然后使用dispatchEvent方法发送。在主窗体中对该组件添加事件监听。
<?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" xmlns:components="com.fgj.components.*" creationComplete="init()"> <fx:Script> <![CDATA[ private function init():void{ myBtn.addEventListener("customClick", onClickHandler); } private function onClickHandler(event:Event):void{ trace("123"); } ]]> </fx:Script> <components:MyButton id="myBtn"/> </s:Application>
*主窗体中对该组件监听类型为customClick的事件。通过这种方式就把两个文件关联起来了。
如果要由自定义组件向主窗体传递参数,可以创建一个事件对象,将参数赋值给该对象的属性进行传递。
自定义事件:
public class MyEvent extends Event { public var param:String = ""; public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); } }
<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> <fx:Script> <![CDATA[ import com.fgj.events.MyEvent; private function onClick(event:MouseEvent):void{ var e:MyEvent = new MyEvent("passParam"); e.param = "abc"; this.dispatchEvent(e); } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:Button label="Click" click="onClick(event)" /> </s:Group>
customBtn.addEventListener("passParam", onClick); private function onClick(event:MyEvent):void{ trace(event.param); } <components:CustomEventComp id="customBtn" />
第二种(标签式监听):
这里需要用到元数据标签,这是一种特殊的标签,它在代码中的作用是像编译器提供如何编译程序的信息。实际上,这些标签并没有被编译进swf文件中,而只是告诉编译器如何生成swf文件。
Flex为事件定义了[Event]元标签,用来声明那些被自定义类派发的事件。
<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> <fx:Metadata> [Event(name="customClick", type="flash.events.Event")] </fx:Metadata> <fx:Script> <![CDATA[ private function onClick(event:MouseEvent):void{ dispatchEvent(new Event("customClick")); } ]]> </fx:Script> <s:Button label="click me" click="onClick(event)" /> </s:Group>
<?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" xmlns:components="com.fgj.components.*"> <fx:Script> <![CDATA[ private function onClickHandler(event:Event):void{ trace("123"); } ]]> </fx:Script> <components:MyButton id="myBtn" customClick="onClickHandler(event)" /> </s:Application>
个人比较推荐第二种做法,因为动态添加事件监听器(addEventListener),会使程序的可读性变差。
评论
1 楼
lanliying
2013-08-22
主窗体报错
Multiple markers at this line:
-Line breakpoint: demoMXML.mxml [line: 21]
-1120: Access of undefined property customBtn.
-1120: Access of undefined property onClick.
这行customBtn.addEventListener("passParam",onClick);
要什么解决?
Multiple markers at this line:
-Line breakpoint: demoMXML.mxml [line: 21]
-1120: Access of undefined property customBtn.
-1120: Access of undefined property onClick.
这行customBtn.addEventListener("passParam",onClick);
要什么解决?
发表评论
-
清除flash player缓存-SharedObject
2012-06-18 14:02 2111http://www.macromedia.com/suppo ... -
Flash Builder4.6破解
2012-06-10 13:41 5具体步骤如下:1.到Adobe官网下载FlashBuilder ... -
SharedObject
2012-04-11 16:05 1559共享对象可以简单理解为类似浏览器的cookies,可以将一定 ... -
RollOver和MouseOver的区别
2012-03-20 10:22 1641共同点:都是针对鼠标的进入和进出事件。 不同点: 1、 ... -
wmode参数详解,对flash以及html元素的影响(转载)
2012-03-08 14:16 3521在页面中经常会用到需 ... -
Flex自定义事件时为什么要重载clone()方法(转载)
2012-02-19 17:35 1351声明:转载 以前在学习自定义事件的时候一直不太明白为什 ... -
Datagrid动态添加列
2012-02-19 17:34 1851Datagrid的列是一个数组,动态添加列的方法是创建一个新的 ... -
一个简单的画板
2012-02-17 11:22 1367Flex中画图,有两种方法: 1、直接在canvas中画 ... -
给特效加上缓动效果
2012-02-17 11:21 978给特效的结束前加上缓动效果,比如模拟篮球落地->弹起-& ... -
BitmapData
2012-02-17 11:21 1830可以使用BitmapData对象加载图片,BitmapData ... -
TitleWindow自定义标题栏
2012-02-17 11:21 1572应用场景: TitleWindow宽度固定,titl ... -
Image拉伸
2012-02-17 11:21 1209应用场景: 当使用Image加载图片或swf文件时, ... -
TextArea设置文本的局部样式
2012-02-16 13:21 3296var tr:TextRange = new TextR ... -
HtmlText中加入超链接
2012-02-16 13:20 1170以下是Label中加入超链接的例子: prote ... -
Flex滤镜
2012-02-16 13:20 1718使用滤镜可以改变文本和控件显示效果,Flex滤镜如下: ... -
Flex字体
2012-02-16 13:20 16481、嵌入字体 嵌入字体会把字体文件编译到应用中,所以 ... -
Flex的Combobox组件
2012-02-16 13:19 84781、显示提示 设置Prompt ... -
Flex中ToolTip的使用
2012-02-15 10:12 26291、为ToolTip加入动画效 ... -
Flex常用特效
2012-02-15 10:12 1008Flex常用特效列表: -
Flex回调函数
2012-02-15 10:12 1161应用场景:父子窗体之间的通信,比如想把弹出窗口中的数据传给弹出 ...
相关推荐
flex自定义事件的含义 简单例子说明 。。。。。。。。。。
flex4 自定义事件 用法 源码 完整项目导入可运行
flex自定义组件事件DEMO,一个简单的flex自定义组件的demo
Flex自定义组件和自定义事件的使用。 Flex自定义组件和自定义事件的使用。
flex 自定义组件,UI,flex 自定义组件。
flex自定义的树形结构,展开,收缩,多级目录支持
Flex自定义加载条的一个小示例。里面有readMe文本
Flex 自定义ToolTip源代码,可以运行的源代码
研究Flex 组件声明周期,了解组件的生成步骤
flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单
Flex 自定义 时间 日历 控件
FLEX自定义等待图标资源 18个SWF资源,19个GIF资源
Flex自定义右键菜单
FLex自定义写的控件,有时间,datagrid,tree,combox等,以及常用的处理字符串,弹出窗口
flex自定义创建css样式,很有用的资源··
Flex 自定义公共包,可以在项目里直接使用
flex 高级自定义组件 需要重写的方法,以及为什么要重写,何时调用等。
NULL 博文链接:https://whp0731.iteye.com/blog/726223
flex 自定义右键菜单
flex 自定义 datagrid 列头带组合框进行过滤