用于访问.SWF成员的索引语法('content ['xxx']“)

时间:2010-12-14 16:10:34

标签: flex actionscript-3

我实际上是在寻找在线的adobe文档,其中包含以下语法:

的SWFLoader(event.target)。内容[ 'wrFont']

这是我自己的代码,所以很明显我知道它有效,只是经过2年的Flex编程,我还没有遇到任何关于管理这种访问方法的规则的正式文档(即如上所述我通过数组索引语法和字符串访问加载的SWF的wrFont成员。

具体来说,确定引用的成员是否存在是这样的 - 这样做的标准方法是什么(当然不仅仅是一个try-catch块?)。但不仅如此,还有关于上述所有相关方面的正式Adobe文档。我已经从他们的实时文档站点下载了所有压缩的adobe文档 - 所有这些都完全记录在案。

在旁注上,有些东西总是让我对谷歌产生误解,就像搜索字符串一样“.content [”它只是忽略了“[”字符无关紧要,不过如果我能找到那个搜索字符串我会有我的答案。但谷歌并没有明显地搜索“[”这样的字符。 Bing也没有。有没有搜索引擎这样做。

3 个答案:

答案 0 :(得分:2)

[和] - “数组”访问 - 可用于任何对象,或一个派生(即除数字,字符串,布尔值之外的所有内容)。

要正确查看子项是否存在,请使用.hasOwnProperty方法。

答案 1 :(得分:1)

如果您想确保您的某个成员存在,您可以进行以下代码测试:

if(SWFLoader(event.target).content['wrFont']) = null)

但实际上并不推荐这样做,因为如果您加载的内容类型实际上具有此属性,则实际上并不这样做。

在将SWFLoader的“content”属性强制转换为实际类时,您应该做些什么,甚至更好,使用接口来解耦SWF文件:

public interface IWRFontContainer {
   function get wrFont():Font;
}

让您的SWF主/文档类实现此接口,然后将内容转换为您加载它的内容:

var swf:IWRFontContainer = SWFLoader(event.target).content as IWRFontContainer;
trace(swf.wrFont);

要确保您的内容属于IWRFont类型,您可以使用is检查类型以检查类型或使用try / catch块。

答案 2 :(得分:0)

Object ASDoc有一些解释:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Object.html

“所有未声明显式基类的类都会扩展内置的Object类。

您可以使用Object类创建关联数组。关联数组的核心是Object类的实例,每个键值对由属性及其值表示。使用Object数据类型声明关联数组的另一个原因是,您可以使用对象文字来填充关联数组(但仅在您声明它时)。下面的示例使用对象文字创建关联数组,使用点运算符和数组访问运算符访问项目,然后通过创建新属性添加新的键值对:...“