在FLEX国际化中遇到一个问题,对于DataProvider中的值不能随着改变localeChain的值而动态改变,google了找到以下两篇文章算是解决了问题
http://stackoverflow.com/questions/354811/flex-localization-refresh-dataprovider-values
http://www.puxiao.com/?p=201
大体思路是在改变localeChain 值时发布自定义事件,通过监听这个事件重新刷新DataProvider中的值,但是通过普通的dispatch方法不能全局监听到这个事件,这样通过第二篇文章中的方法设置静态
<mx:ToggleButtonBar dataProvider="{dataProviderToggleB} itemClick="clickHandler(event);" selectedIndex="0">
的EventDispatcher,就可以在FLEX应用中的任何地方都能监听到这个事件了。
---------------------------------------------------------------------------
Maybe if you make a getter bindable to a custom event for ex: "langChange"
[Bindable("langChange")]
public function get dataProviderToggleB():ArrayCollection
{
var arr :ArrayCollection = new ArrayCollection();
arr.addItem(resourceManager.getString('dashboard','daily'));
arr.addItem(resourceManager.getString('dashboard','monthly'));
return arr;
}
and in your "resourceManager.localeChain" setter you dispatch:
dispatchEvent(new Event("langChange"));
and you can used like this:
---------------------------------------------------------------------------
自定义CustomEvent类,继承Event,并且给他增加一个dispatcher:EventDispatcher属性。
使用这个类,就可以抛出事件并附带数据。
因为使用了 static 设置为静态属性,所以其他任意地方只要注册有这个事件侦听,就能捕获到。
CustomEvent:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class CustomEvent extends Event
{
public static const EVENT_NAME:String=”event_name”;
public static const dispatcher:EventDispatcher=new EventDispatcher();
public var data:Object;
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, data:Object=null)
{
super(type, bubbles, cancelable);
this.data=data;
}
override public function clone():Event{
return new CustomEvent(type, bubbles, cancelable, data);
}
}
}
抛出事件时:
var custom:CustomEvent=new CustomEvent(CustomEvent.CLICK);
//custom.data is Object;//发送事件同时,可以传值(可传可不传)
CustomEvent.dispatcher.dispatchEvent(custom);
侦听事件时:
CustomEvent.dispatcher.addEventListener(CustomEvent.CLICK,clickHandler);
分享到:
相关推荐
tree多数情况下操作xml比较方便,而本人却对xml有些排斥,说得更确切些,对xml用的不是那么得心应手,所以选择了ArrayCollection
动态填充DataGrid示例 博文链接:https://feiying-zone.iteye.com/blog/810267
介绍 Flex 项目 国际化的 具体方法
flex 入门介绍 flex 如何结合 j2ee 开发应用程序以及 flex 的国际化等
flex 国际化 可运行 资源文件 成功运行 flex4
Spring MVC+BlzeDS+Flex框架实践:HelloWorld篇 .docSpring MVC+BlzeDS+Flex框架实践:HelloWorld篇 .doc
Flex_4:开发RIA_应用程序.pdf Flex_4:开发RIA_应用程序.pdf
FLEX4 s:dataGrid单元格弹出可文本,就是单击单元格弹出自己定义的一个组件,
Flex 布局教程:语法篇.md
css - flex + overflow:hidden
Flex 布局教程:语法篇 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为 Flex 布局。 采用 Flex 布局的元素,称为 Flex 容器(flex container),简称...
flex实战报表:jFreeChart,cewolf,iText.doc
FLex 服务器端:配置remote-config.xml
《Flex_4:开发RIA_应用程序pdf》完整源代码,附带每个章节习题代码。
Flex Application Performance: Tips and Techniques for Improving Client Application and Server Performance November 2004 Brandon Purcell Deepa Subramanian
创 建过Java多语言本地化应用的朋友应该都很熟悉Java的本地...要本地化Flex2应用,我们需要将本地化资源文件编译为SWC库文件,然后在Flex应用中使用ActionScript或者MXML访问资源集(resource bundles )中的本地化值。
flex4 air开发中显示pdf,可以是本地pdf文件,也可以是服务端的资源文件。
Flex读取XML不刷新问题
Flex自动刷新