Flex で Swiz フレームワークを使用しています。私はmediate
いくつかの運でタグを使用しようとしていますが、ここに私の問題があります:
public class Locale {
private static function onLoadSuccess(event:Event):void
{
// I have a break point here. I can tell that this code is being executed sucessfully
Swiz.dispatchEvent(new DynamicEvent(ConfigConstants.LOCALE_RESOURSE_LOADED));
}
}
別のクラスでは、このコードをここに持っています:
public class AcordianPane {
...
[Mediate( event="localeResourseLoaded")]
public function onLocaleResourseLoaded( ...rest):void
{
this.label = Locale.getUiString("title.map.broadcast");
}
...
}
上記のコードは期待どおりに機能します。Mediate
タグを定数に変更すると問題が発生します。
public class AcordianPane {
...
[Mediate( event=ConfigConstants.LOCALE_RESOURSE_LOADED)]
public function onLocaleResourseLoaded( ...rest):void
{
// THIS IS NOT EXECUTED NOW!
this.label = Locale.getUiString("title.map.broadcast");
}
...
}
なぜこれが起こっているのか誰にも分かりますか?参考までに、これは私の ConfigConstants クラスです。
public class ConfigConstants {
public static const LOCALE_RESOURSE_LOADED:String = "localeResourseLoaded";
}
注: Mediate タグは、数リリース前に名前が変更されたばかりの EventListener タグと同じです。現在は減価償却されていることはわかっていますが、コード ベースで検索と置換を行う理由はないと思います。
編集1 : で置き換えEventHandler
てみましMediate
たが、同じ問題が発生します。
編集 2 : これは、Swiz Web ページの関連ドキュメントです。
編集3:イベントを次のように引用してみました(@Gerhardに感謝します):
[EventHandler( event="ConfigConstants.LOCALE_RESOURSE_LOADED")]
public function onLocaleResourseLoaded( ...rest):void
{
this.label = Locale.getUiString("title.map.broadcast");
}
しかし、イベントはまだ受信されていません。問題は、Swiz を初期化するメインの mxml ファイルにある可能性があると思います。
<swiz:SwizConfig
strict="true" // set by a co-worker
mediateBubbledEvents="true" // set by a co-worker
viewPackages="com.sixtyfootersdude.views" // set by a co-worker
eventPackages="com.sixtyfootersdude.model" // <-- Just added!
beanLoaders="{ [ com.sixtyfootersdude.admin.AdminBeans ] }" /> // set by a co-worker
また、
AcordianPane
にあるcom.sixtyfootersdude.views
Locale
にあるcom.foxtrot.util
ConfigConstants
にあるcom.sixtyfootersdude.model
編集4 :私が最後に試したのはこれです:
[EventHandler( event="com.sixtyfootersdude.model.ConfigConstants.LOCALE_RESOURSE_LOADED")]
public function onLocaleResourseLoaded( ...rest):void{
this.label = Locale.getUiString("title.map.broadcast");
}
と
<swiz:SwizConfig
strict="true"
mediateBubbledEvents="true"
viewPackages="com.sixtyfootersdude.views"
beanLoaders="{ [ com.sixtyfootersdude.admin.AdminBeans ] }" />