flash.utils包中顶级函数
? |
getDefinitionByName |
完全限定类名的字符串 ----类名
|
getQualifiedClassName |
对象------完全限定类名的字符串 |
getQualifiedSuperclassName |
对象------??基类的完全限定类名的字符串 |
1、 trace(getDefinitionByName("flash.display.Sprite"))??返回一个名称为Sprite的
类名
? ?? ?sp = new getDefinitionByName("flash.display.Sprite")?
()
??新建一个Sprite 实例
2、trace(getQualifiedClassName(sp) ) 返回sp的类的完全限定
类名
称:flash.display.Sprite
3、getQualifiedSuperclassName(sp) 返回sp的上一级基类的完全限定
称:flash.display.DisplayObject
flash.system.ApplicationDomain
?//此应用程序域保存有导入的外部swf中所有的公共定义(类、命名空间、函数)
getDefinition(name:String):Object?
从指定的应用程序域获取一个公共定义(类定义)。 |
hasDefinition(name:String):Boolean
|
检查指定的应用程序域之内是否存在一个公共定义。?
|
1、loader.contentLoaderInfo.applicationDomain.
getDefinition("Ball") 返回:导入的swf中的Ball的类定义
2、loader.contentLoaderInfo.applicationDomain.hasDefinition("Ball") 返回:导入的swf中是否有Ball的类定义
获取类信息
public function describeType(value:*):XML
生成一个 XML 对象来描述参数中指定的 ActionScript 对象,这个方法使 ActionScript 实现了反射编程的概念.
如果参数 value 是某类的实例,那么返回的 XML 对象包含了此类中所有的实例属性,但是不会包含任何的静态属性.
这种情况下你可以通过检查标签 <type> 中的 isStatic 属性来判断他,当参数为某类的实例时,这个值为 false.
要获取类的静态属性,可以通过传递类本身到参数 value,这样返回的 XML 对象不仅包括了类的静态属性,也包括所有的实例属性.
实例属性被包含在 <factory> 标签中使它们和静态属性区别开来. 在这种情况下,<type> 标签的 isStatic 属性为 true.
提示: 如果你只需要获取对象的继承结构而不需要 describeType() 提供的其他信息,可以使用 getQualifiedClassName() 和 getQualifiedSuperclassName() 来替代
下表描述了 describeType() 生成的 XML 的标签和属性 (按运行代码察看)
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
另外,由 describeType() 返回的类描述信息中只会含有所有可被访问的元素,即所有非定义为 private 的元素.
解释了这么多,我们来看看返回的 XML 格式
flash 的内置类 flash.display.Sprite :
trace(describeType(Sprite);
返回:
根据帮助中的描述,所有的实例属性都被嵌套在了 <factory> 标签里.