Actionscript 3 一个人应该通过事件传递多少信息?
比如说,我有一个带有复选框的datagrid,每次标记复选框时,我都将对象存储在flex ResultEvent的data属性中Actionscript 3 一个人应该通过事件传递多少信息?,actionscript-3,events,Actionscript 3,Events,比如说,我有一个带有复选框的datagrid,每次标记复选框时,我都将对象存储在flex ResultEvent的data属性中 public class MyItemRenderer extends ItemRenderer{ public static var CLICK:String = "CheckBoxClick"; protected function itemRendererClickListener(data:Object):void{ di
public class MyItemRenderer extends ItemRenderer{
public static var CLICK:String = "CheckBoxClick";
protected function itemRendererClickListener(data:Object):void{
dispatchEvent(new ResultEvent(MyItemRenderer.CLICK, data))
}
}
我在这里处理结果
protected function checkbox_clicked(event:ResultEvent):void{
//Here I do everything I want with the data.
Alert.show(event.result.toString());
}
这是我几个月来一直使用的方法,但我从不怀疑这是否是一种不好的做法
或者更不用说坏习惯了,什么是最好的方法呢?这并不是真的“坏”。但它确实创建了一个对对象的附加引用,该引用可能会使该对象在内存中保留更长的时间(如果管理不当,则无限期地保留该对象) 一般来说,您应该只在事件实例中存储与事件本身相关的数据。您可以使用
event.target
和event.currentTarget
属性来引用发送事件的对象并以这种方式获取数据
在您的情况下,您的事件是一个复选框状态更改。事件本身(正在检查)不需要任何与之关联的数据,除了正在检查的项(您可以使用“target”或“currentTarget”获取)。因此,我认为采取以下措施更为恰当:
Alert.show(MyItemRenderer(event.currentTarget).data.toString());
这使您的事件更加可重用这并不是真的“坏”。但它确实创建了一个对对象的附加引用,该引用可能会使该对象在内存中保留更长的时间(如果管理不当,则无限期地保留该对象) 一般来说,您应该只在事件实例中存储与事件本身相关的数据。您可以使用
event.target
和event.currentTarget
属性来引用发送事件的对象并以这种方式获取数据
在您的情况下,您的事件是一个复选框状态更改。事件本身(正在检查)不需要任何与之关联的数据,除了正在检查的项(您可以使用“target”或“currentTarget”获取)。因此,我认为采取以下措施更为恰当:
Alert.show(MyItemRenderer(event.currentTarget).data.toString());
这样可以使事件更加可重用对于具有数据的事件,最佳做法是使用自定义事件(请参阅)进行解释
顺便说一句,另一个“最佳实践”是避免代码中的通用对象类,而是创建一个值对象类。对于具有数据的事件,最佳实践是使用自定义事件(请参阅)进行解释
顺便说一句,另一个“最佳实践”是避免代码中的通用对象类,而是创建一个值对象类哦,是的,我意识到对象,我在这里使用它只是为了示例和笑声。哦,是的,我意识到对象,我在这里使用它只是为了示例和笑声。