Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 一个人应该通过事件传递多少信息?_Actionscript 3_Events - Fatal编程技术网

Actionscript 3 一个人应该通过事件传递多少信息?

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

比如说,我有一个带有复选框的datagrid,每次标记复选框时,我都将对象存储在flex ResultEvent的data属性中

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());

这样可以使事件更加可重用

对于具有数据的事件,最佳做法是使用自定义事件(请参阅)进行解释


顺便说一句,另一个“最佳实践”是避免代码中的通用对象类,而是创建一个值对象类。对于具有数据的事件,最佳实践是使用自定义事件(请参阅)进行解释


顺便说一句,另一个“最佳实践”是避免代码中的通用对象类,而是创建一个值对象类

哦,是的,我意识到对象,我在这里使用它只是为了示例和笑声。哦,是的,我意识到对象,我在这里使用它只是为了示例和笑声。