- 浏览: 134398 次
- 性别:
- 来自: 苏州
最新评论
-
lanliying:
主窗体报错Multiple markers at this l ...
Flex自定义事件 -
Alex丿:
12年的帖子,难得~。~
Flex编译参数设置
声明:转载
以前在学习自定义事件的时候一直不太明白为什么要重载克隆方法,虽然官方的说法是必须要这样做以便复制自定义事件中的属性,但是实际使用中不重载也没有出现过问题,于是这个问题就这样糊里糊涂的隐藏了下来;直至今天看到这篇文章,才明白了。
原来,一个定义事件如果不重载clone方法一般情况下不出问题,但是如果这个事件要进行中继的话,也就是说被继续派发下去的情况下,重载就非常有必要了,比如:
private function relay(customEvent:CustomEvent):void { dispatchEvent(customEvent); }
这个relay方法就是对CustomEvent的第一次响应,然后在这个方法里继续向外派发这个事件,由另一个事件处理器来继续处理;在重新派发事件的过程中,flash内部的事件框架将会调用事件的clone方法来生成这个事件的一个新实例,
如果没有重载clone方法,也就是说使用的是默认的重载方法,那么新的事件实例就是一个普通的event,而不是自定义事件,这时,在下一个事件监听器
中如果期待的是自定义事件的话,就会发生:Error #1034: 强制转换类型失败:无法将
flash.events::Event@5e514f1 转换为.....的错误;
下面就一个例子来说明这个自定义事件的使用方法,下面的例子中EnableChangeEvent 没有重载clone方法(注释掉了),结果在主应用中的relistenEvent监听器方法中就无法得到这个EnableChangeEvent,如果将自定义事件的注释去掉,就正常了。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:MyComp="mycomponents.*" creationComplete="initApp()"> <mx:Script> <![CDATA[ import myevents.EnableChangeEvent; import mx.controls.Alert; private function initApp():void{ this.addEventListener(EnableChangeEvent.ENABLE_CHANGED,relistenEvent); } private function enableChangedListener(event:EnableChangeEvent):void { // Handle event. myTA.text = "Event isEnabled: "+event.isEnabled; dispatchEvent(event); } private function relistenEvent(event:EnableChangeEvent):void{ Alert.show("isEnabled? "+event.isEnabled,"EventHandled"); } ]]> </mx:Script> <MyComp:MyButton label="ClickMe" enableChanged="enableChangedListener(event)"/> <mx:TextArea id="myTA"/ </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Button xmlns:mx="http://www.adobe.com/2006/mxml" click="buttonClickHandler()"> <mx:Script> <![CDATA[ import myevents.EnableChangeEvent; public function buttonClickHandler():void{ dispatchEvent(new EnableChangeEvent('enableChanged',true)); } ]]> </mx:Script> <mx:Metadata> Event(name="enableChanged", type="myevents.EnableChangeEvent")] </mx:Metadata> </mx:Button>
package myevents { import flash.eventsEvent; public class EnableChangeEvent extends Event { public static const ENABLE_CHANGED:String="enableChanged"; public var isEnabled:Boolean; public function EnableChangeEvent(type:String, isEnabled:Boolean=false) { super(type); this.isEnabled=isEnabled; } //override public function clone():Event //{ //return new EnableChangeEvent(type, isEnabled); //} } }
发表评论
-
清除flash player缓存-SharedObject
2012-06-18 14:02 2183http://www.macromedia.com/suppo ... -
Flash Builder4.6破解
2012-06-10 13:41 5具体步骤如下:1.到Adobe官网下载FlashBuilder ... -
SharedObject
2012-04-11 16:05 1623共享对象可以简单理解为类似浏览器的cookies,可以将一定 ... -
RollOver和MouseOver的区别
2012-03-20 10:22 1709共同点:都是针对鼠标的进入和进出事件。 不同点: 1、 ... -
wmode参数详解,对flash以及html元素的影响(转载)
2012-03-08 14:16 3634在页面中经常会用到需 ... -
Datagrid动态添加列
2012-02-19 17:34 1918Datagrid的列是一个数组,动态添加列的方法是创建一个新的 ... -
一个简单的画板
2012-02-17 11:22 1427Flex中画图,有两种方法: 1、直接在canvas中画 ... -
给特效加上缓动效果
2012-02-17 11:21 1019给特效的结束前加上缓动效果,比如模拟篮球落地->弹起-& ... -
BitmapData
2012-02-17 11:21 1878可以使用BitmapData对象加载图片,BitmapData ... -
TitleWindow自定义标题栏
2012-02-17 11:21 1633应用场景: TitleWindow宽度固定,titl ... -
Image拉伸
2012-02-17 11:21 1324应用场景: 当使用Image加载图片或swf文件时, ... -
TextArea设置文本的局部样式
2012-02-16 13:21 3418var tr:TextRange = new TextR ... -
HtmlText中加入超链接
2012-02-16 13:20 1254以下是Label中加入超链接的例子: prote ... -
Flex滤镜
2012-02-16 13:20 1794使用滤镜可以改变文本和控件显示效果,Flex滤镜如下: ... -
Flex字体
2012-02-16 13:20 17551、嵌入字体 嵌入字体会把字体文件编译到应用中,所以 ... -
Flex的Combobox组件
2012-02-16 13:19 85571、显示提示 设置Prompt ... -
Flex中ToolTip的使用
2012-02-15 10:12 26981、为ToolTip加入动画效 ... -
Flex常用特效
2012-02-15 10:12 1054Flex常用特效列表: -
Flex回调函数
2012-02-15 10:12 1221应用场景:父子窗体之间的通信,比如想把弹出窗口中的数据传给弹出 ... -
Flex内存优化(转载)
2012-02-15 10:12 14631. 使用合适的显示对象,对于非交互的简单形状用Sha ...
相关推荐
- `clone()`:覆盖`Event`的`clone()`方法,用于创建事件的副本。 5. **事件分发**: - `EventDispatcher`是Flex中的事件调度器,负责处理事件的分发。在示例中,`CustomEvent`类使用静态的`EventDispatcher`实例...
最后,要触发自定义事件,你需要从事件源(通常是组件)调用`dispatchEvent`方法: ```actionscript dispatchEvent(new MyEvent(MyEvent.MY_EVENT, false, false, "自定义数据")); ``` 自定义事件的一个重要注意...
自定义事件通常通过继承`Event`类或其子类并重写`clone()`和`toString()`方法来创建。 总结来说,Flex事件学习涵盖了事件的定义、派发、监听以及处理,是构建交互式Flex应用的关键。通过理解和熟练运用这些概念,...
详细的描述了Java中 clone方法使用
首先,我们需要在创建事件时添加一个代表颜色的属性,例如`color`。然后,在fullCalendar的初始化配置中,利用`eventColor`或者`eventBackgroundColor`来指定事件的颜色依据。例如: ```javascript $('#calendar')....
为了实现深拷贝,通常需要在自定义类中重写`clone()`方法,并且确保所有的引用字段也被正确复制。 4. **安全性与并发考虑**: - `clone()`方法不会调用构造函数,因此不能用于初始化新对象。此外,在多线程环境中...
2. 避免空指针异常:在覆盖`clone`方法时,确保检查并处理可能的空引用,以防止`NullPointerException`。 3. 类的可变性:如果类的对象是可变的(即包含可变成员变量),那么克隆后的对象也可能是可变的,这可能导致...
- 重写`clone()`方法时,需要处理非基本类型的成员变量,确保它们也能够被正确地复制。 总的来说,Java中的克隆机制提供了复制对象的能力,这在很多场景下都非常有用,比如数据备份、并发操作、状态恢复等。但需要...
在使用高版本版KEIL时,提示要升级固件,升级后就出现JLINK is Clone的提示!“the emulator is JLink-Clone, the segger software only support orginal segger device” 然后闪退,IDE崩溃关闭! 解决方案: 1....
在Java编程语言中,`clone()`方法是一个非常重要的概念,特别是在处理对象复制和克隆时。这个方法源自`Object`类,是所有Java类的基类。`clone()`的使用通常涉及到深度复制和浅复制的概念,这两者在数据结构和内存...
在实现`clone`方法时,通常我们会覆盖类中的`clone`方法,以便进行特定类型的克隆操作。例如: ```java public class CloneClass implements Cloneable { public int aInt; @Override protected Object clone()...
因此,如果我们想要实现深复制,需要自定义`clone()`方法,并确保所有嵌套的对象也被正确复制。 在`A`类中,我们首先需要实现`Cloneable`接口,这是一个标记接口,表明类支持克隆。然后,我们需要重写`clone()`方法...
在Java编程语言中,`clone()`方法是一个非常重要的概念,特别是在处理对象复制和数据持久化时。本示例将深入探讨`clone()`方法的工作原理、使用场景以及如何在实际编程中应用。首先,我们来理解一下`clone()`方法的...
Java中的clone方法详解_动力节点Java学院,动力节点口口相传的Java黄埔军校
要实现深拷贝,通常需要在子类中重写`clone`方法,并确保复制所有引用类型的字段。例如,对于上述的`Account`类,可以这样实现: ```java @Override public Account clone() throws CloneNotSupportedException { ...
要使用`clone()`方法,一个类需要实现`Cloneable`接口。这个接口没有定义任何方法,但它的存在表明这个类允许被克隆。如果一个类没有实现`Cloneable`接口,然后尝试调用`clone()`,系统会抛出`...
- **应用场景**:当多个类之间需要共享一些资源或方法时,但又不希望这些资源对外部可见,可以使用`internal`包来实现。 ### 9. 如何阻止事件的传播 - **方法**:`stopPropagation()`方法。 ```actionscript ...
要在自定义类中使用`clone`,首先,你的类需要实现`Cloneable`接口,这是一个空接口,不包含任何方法,但它是`clone`方法工作的标志。实现`Cloneable`接口表明你的类支持克隆。然后,你需要覆盖`clone`方法,通常...