2

ActionScript 3 / Flex 3 - クラスへのカスタム イベントの追加

次のイベントがあるとします。

import flash.events.Event;
public class SomeEvent extends Event
{
    public static const EVENT_ACTION:String = "eventAction";

    public function SomeEvent(type:String) {
        super(type);
    }

    override public function clone():Event {
        return new SomeEvent(this.type);
    }
}

...そして次のクラス:

public class SomeClass extends EventDispatcher
{
    public function someFunction():void
    {
        dispatchEvent(new SomeEvent("eventAction"));
    }
}

「SomeClass」が「SomeEvent」をスローすることを示す最良の方法は何ですか? 私が見つけた唯一の方法は、次のように [Event] 属性で「SomeClass」を装飾することです。

[Event (name="eventAction", type="SomeEvent")]

これにより、次のようにしてクラスをインスタンス化し、イベント リスナーを追加できます。

var someClassInstance:SomeClass = new SomeClass();
someClassInstance.addEventListener(SomeEvent.EVENT_ACTION, mycallbackmethod);

これを行うより良い方法はありますか?クラスに [Event] 属性を配置し、その後にいくつかの文字列リテラルを配置するのは、単に間違っていると感じます。助けてくれてありがとう!

4

2 に答える 2

3

あなたはそれを正しくやっています。現在、AS3 コンパイラは、メタデータで文字列リテラルのみを許可しています。定数は使用できません。

ちなみに、Adobe の公開バグ データベースには、メタデータで ActionScript 定数を許可する機能のリクエストがあります。お気軽に投票してください。

于 2009-01-16T23:38:09.903 に答える
0

私も同じように感じています。文字列リテラルの使用は、どういうわけか少し間違っているようです。しかし、私の知る限りでは、私が見たすべてのドキュメントや参加した講演、そして Flex のソース コードなどを読んでみると、それが適切な方法であるように思われます。

于 2009-01-16T21:06:03.487 に答える