アプリケーション全体にデータを配信するのに役立つことを発見したことを共有しようと思った 他の人がこれについてどう思うか疑問に思っている 他のコンポーネントにバブリングするイベントをキャプチャする方法が欲しかったが、それが簡単になる方法で5月のアプリのどこでも使用できるので、これが私が思いついたものです。
Application クラスを拡張し、あらゆるコンポーネントの関数を任意の場所に登録する抽象関数をラップし、それを最上位レベルでキャプチャして、選択した場所に渡します。
public class AxApplication extends Application
{
public var ___registeredEvents:Array = new Array();
public var ___registeredFunctions:Array = new Array();
function AxApplication()
{
super();
}
public function localRegisterForEvent(e:Event,func:*,caller:*):void
{
caller.addEventListener(e.type,localCallerEventHandler,true,3);
caller.addEventListener(e.type,localCallerEventHandler,false,3);
___registeredEvents.push(e);
___registeredFunctions.push(func);
}
public function localCallerEventHandler(e:*):void
{
if(e!=null)
{
for(var i:int = 0 ; i< ___registeredEvents.length; i++)
{
if(e.type == ___registeredEvents[i].type)
{
___registeredFunctions[i](e);
//登録された関数が呼び出されます //ガベージ コレクションは実装されていません!
}
}
}
}
}