Вам просто нужно привязаться к событию изменения ResourceManager и заново отправить его для выполнения привязок для _s
. Как то так:
import flash.events.Event;
import mx.binding.utils.BindingUtils;
import mx.resources.IResourceManager;
import mx.resources.ResourceManager;
/**
* Convenience function to return a localized string
* */
[Bindable("change")]
public function _s(bundle:String, resourceName:String):String
{
return (resourceManager.getString(bundle, resourceName));
}
override protected function createChildren():void
{
super.createChildren();
BindingUtils.bindSetter(dispatchChange, resourceManager, "change");
}
private function dispatchChange(event:Event):void
{
dispatchEvent(new Event("change"));
}
Это просто пример сценария включения (include "resource_wrapper.as"
), он не должен работать "из коробки", но вы можете изменить его, однако.
Единственная проблема с include
заключается в том, что вы должны включать его в большое количество файлов вручную. Но это единственный способ сделать его на одну «точку» глубиной:
include
: делает так: getString()
(или _s()
);
- нормальный: делает это как
resourceManager.getString()
- singleton: делает это как
ResourceManager.getInstance().getString()
Надеюсь, это поможет,
Lance