目前我有一项任务是必须让flex模块对2个客户端采取不同的行为 一些区别是文本差异和(可能)渲染器差异。但是,第一个客户将很快(2-3个月内)终止服务
所以我知道我有两个选择:
国际化,但这2个客户端都使用英语区域设置(并可能强制我创建新的区域设置),例如“en_Client2”。第一个客户端终止服务后,删除新的区域设置。 (第二个用户使用默认语言环境en_US)
状态,但这会将我的代码分散为if和else。
任何想法哪个更好?或者我错过了另一种选择?
答案 0 :(得分:0)
这个问题的答案并不是绝对的,这是一种观点。这是我要做的,设置一个xml文件,其中包含需要更改的文本以及用于渲染器的类的名称。然后使用URLLoader或HTTPService在运行时加载xml文件。使用类似下面的内容根据加载的XML解析类,然后在从XML文件读取数据后动态地将类指定为itemRenderer。您可以将所有这些内容存储在可以绑定到视图中的属性的模型中,以使其更容易。
var classReference:Class = getDefinitionByName(xmlResults.itemRendererNumberOne) as Class;
myList.itemRenderer = classReference;
然后你只为每个客户制作一个xml文件,你就可以了。
请注意,您希望在代码中包含对将使用getDefinitionByName加载的任何类的引用,否则它们将不会包含在swf中,并且无法在运行时解析它们。但是,任何类型的引用都可以,例如:
MyClass;