1

たとえば、チェックボックスを含むデータグリッドがあり、チェックボックスがマークされるたびに、オブジェクトをフレックス 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());
}

これは私が何ヶ月も使用してきたものですが、これが悪い習慣であるかどうかは決して知りませんでした.

または、悪い習慣は言うまでもなく、これを行う最適な方法は何ですか?

4

2 に答える 2

3

それは本当に「悪い」ことではありません。ただし、オブジェクトへの追加の参照が作成され、そのオブジェクトがメモリ内に長く保持される可能性があります (適切に管理されていない場合は無期限に保持される可能性があります)。

一般に、イベント インスタンスには、イベント自体に関連するデータのみを格納する必要があります。event.targetおよびプロパティを使用してevent.currentTarget、イベントを送出したオブジェクトを参照し、その方法でデータを取得できます。

あなたの場合、あなたのイベントはチェックボックスの状態の変化です。イベント自体 (チェックされている) は、チェックされているアイテム ('target' または 'currentTarget' で取得できます) 以外に関連付けられたデータを必要としません。したがって、私の意見では、次のことを行う方が適切です。

Alert.show(MyItemRenderer(event.currentTarget).data.toString());

これにより、イベントをより再利用しやすくなります

于 2012-12-13T17:51:53.470 に答える
1

データを含むイベントのベスト プラクティスは、説明のためにカスタム イベントを使用することです ( http://cookbooks.adobe.com/post_AS3__Creating_and_dispatching_Custom_Events-17609.htmlを参照)。

ところで、もう 1 つの「ベスト プラクティス」は、コード内でジェネリック オブジェクト クラスを使用しないことです。代わりに、値オブジェクト クラスを作成します。

于 2012-12-13T22:03:15.513 に答える