Flex ResourceBundle获取密钥 - > `content`不再提供键值对

时间:2012-04-24 09:16:59

标签: actionscript-3 flex flex4 flex4.5 resourcebundle

我需要从属性文件中访问键值对,以及键的子字符串和准确的值,但这不应该改变任何内容。

当您检查Adobe文档和帮助页面(例如此http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7f2c.html(最后一段))时,您可以看到Adobe提到ResourceBundle的content属性包含来自给定包的键值对。

ResourceBundle的ASDoc还说: “子类重写此方法以返回包含bundle资源的键值对的Object。” 但是,ASDoc还表示此属性适用于Flex 3。

无论如何,内容属性(类型Object)似乎不存储键值对,因为我只获取值,而不是键。

我有点迷失在这里,如果有人有这方面的信息,请拍!

1 个答案:

答案 0 :(得分:1)

ResourceBundle的ASDoc表示此类及其API自Flex 3起可用。因此,该文档仍适用于Flex 4及更高版本。

确保使用“for in”循环而不是“for each”循环。 “for in”循环遍历Object的属性名称,而“for each”将迭代值。

此代码创建ResourceBundle并迭代属性:

var rb:ResourceBundle = new ResourceBundle("en_US", "bundleName");
rb.content["foo"] = "Bar";
rb.content["hello"] = "Howdy!";

for (var key:String in rb.content)
{
    trace("the key is: ", key);
    trace("the value is: ", rb.content[key]);
}

迭代时,每个键都存储在var key中,并且可以使用content[key]从内容对象中检索它的值。

在具有真实资源包文件的实际应用程序中,您从资源管理器(从您链接到的文档)检索资源包:

var rb:ResourceBundle =  ResourceBundle(resourceManager.getResourceBundle("en_US", "RegistrationForm"))

然后你应该能够如上所述迭代它的内容。