标签: Flex

Flex 国际化

问题背景:

项目中的Alert按钮有时显示中文“确定”,有时显示“OK”

问题原因:

flexbuilder使用的英文版本 编译器用于国际化的编译参数默认值为: -locale en_US 按钮默认显示为ok

使用中文版本参数默认值为 -locale zh_CN 按钮显示为确定

关于Flex中的木偶变量

在使用Flex开发时经常将程序拆分成许多模块,在载入模块时有些组件需要在application域中new一下才能起作用,这就是所谓的“木偶变量”。

通常将模块载入一个子域,那么模块里面的类定义都不是application域的,当module第一次使用组件时,将在它自己的域中拥有这些组件的类定义。如果别的module试图使用这些已经被另一个module使用的组件,它的定义将会不能匹配到现存的定义中。因此,为了避免组件的定义不匹配,在主应用程序中创建组件的实例,让所有的module去引用。

但是这个坏处很明显,这些声明莫名其妙,成为了一个”木偶变量”,所以需要另一种办法:

在ModuleLoader 的creationComplete方法中加入如下代码,表示将其加载到运行时库

var loader : Loader = new Loader();

var context : LoaderContext = new LoaderContext();

/* 加载到子域(模块) */

context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);

/* 加载到同域(共享库) */

context.applicationDomain = ApplicationDomain.currentDomain;

/* 加载到新域(独立运行的程序或模块) */

context.applicationDomain = new ApplicationDomain();

loader.load(new URLRequest(“loaded.swf”), context);

这样才使用组件时就不需要在application中事先声明。