加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash 反射机制基础知识

发布时间:2020-12-15 17:49:28 所属栏目:百科 来源:网络整理
导读:flash.utils包中顶级函数 ? getDefinitionByName 完全限定 类名 的字符串 ---- 类名 getQualifiedClassName 对象------完全限定 类名 的字符串 getQualifiedSuperclassName 对象------??基类的完全限定 类名 的字符串 1、 trace(getDefinitionByName("flash.
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);

  1. <type name="flash.display::Sprite" base="Class" isDynamic="true" isFinal="true" isStatic="true">
  2. ??<extendsClass type="Class"/>
  3. ??<extendsClass type="Object"/>
  4. ??<accessor name="prototype" access="readonly" type="*" declaredBy="Class"/>
  5. ??<factory type="flash.display::Sprite">
  6. ? ? <extendsClass type="flash.display::DisplayObjectContainer"/>
  7. ? ? <extendsClass type="flash.display::InteractiveObject"/>
  8. ? ? <extendsClass type="flash.display::DisplayObject"/>
  9. ? ? <extendsClass type="flash.events::EventDispatcher"/>
  10. ? ? <extendsClass type="Object"/>
  11. ? ? <implementsInterface type="flash.display::IBitmapDrawable"/>
  12. ? ? <implementsInterface type="flash.events::IEventDispatcher"/>
  13. ? ? <accessor name="hitArea" access="readwrite" type="flash.display::Sprite" declaredBy="flash.display::Sprite"/>
  14. ? ? <method name="startDrag" declaredBy="flash.display::Sprite" returnType="void">
  15. ? ?? ?<parameter index="1" type="Boolean" optional="true"/>
  16. ? ?? ?<parameter index="2" type="flash.geom::Rectangle" optional="true"/>
  17. ? ? </method>
  18. ? ? <accessor name="buttonMode" access="readwrite" type="Boolean" declaredBy="flash.display::Sprite"/>
  19. ? ? <accessor name="graphics" access="readonly" type="flash.display::Graphics" declaredBy="flash.display::Sprite"/>
  20. ? ? <accessor name="soundTransform" access="readwrite" type="flash.media::SoundTransform" declaredBy="flash.display::Sprite"/>
  21. ? ? <method name="stopDrag" declaredBy="flash.display::Sprite" returnType="void"/>
  22. ? ? <accessor name="dropTarget" access="readonly" type="flash.display::DisplayObject" declaredBy="flash.display::Sprite"/>
  23. ? ? <accessor name="useHandCursor" access="readwrite" type="Boolean" declaredBy="flash.display::Sprite"/>
  24. ? ? <method name="getChildAt" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">
  25. ? ?? ?<parameter index="1" type="int" optional="false"/>
  26. ? ? <method name="addChild" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">
  27. ? ?? ?<parameter index="1" type="flash.display::DisplayObject" optional="false"/>
  28. ? ? <method name="swapChildren" declaredBy="flash.display::DisplayObjectContainer" returnType="void">
  29. ? ?? ?<parameter index="2" type="flash.display::DisplayObject" optional="false"/>
  30. ? ? <method name="getChildByName" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">
  31. ? ?? ?<parameter index="1" type="String" optional="false"/>
  32. ? ? <method name="getObjectsUnderPoint" declaredBy="flash.display::DisplayObjectContainer" returnType="Array">
  33. ? ?? ?<parameter index="1" type="flash.geom::Point" optional="false"/>
  34. ? ? <accessor name="textSnapshot" access="readonly" type="flash.text::TextSnapshot" declaredBy="flash.display::DisplayObjectContainer"/>
  35. ? ? <method name="removeChildAt" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">
  36. ? ? <method name="getChildIndex" declaredBy="flash.display::DisplayObjectContainer" returnType="int">
  37. ? ? <method name="areInaccessibleObjectsUnderPoint" declaredBy="flash.display::DisplayObjectContainer" returnType="Boolean">
  38. ? ? <accessor name="mouseChildren" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObjectContainer"/>
  39. ? ? <method name="removeChild" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">
  40. ? ? <method name="setChildIndex" declaredBy="flash.display::DisplayObjectContainer" returnType="void">
  41. ? ?? ?<parameter index="2" type="int" optional="false"/>
  42. ? ? <method name="contains" declaredBy="flash.display::DisplayObjectContainer" returnType="Boolean">
  43. ? ? <method name="addChildAt" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">
  44. ? ? <accessor name="numChildren" access="readonly" type="int" declaredBy="flash.display::DisplayObjectContainer"/>
  45. ? ? <method name="swapChildrenAt" declaredBy="flash.display::DisplayObjectContainer" returnType="void">
  46. ? ? <accessor name="tabChildren" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObjectContainer"/>
  47. ? ? <accessor name="tabEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/>
  48. ? ? <accessor name="doubleClickEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/>
  49. ? ? <accessor name="contextMenu" access="readwrite" type="flash.ui::ContextMenu" declaredBy="flash.display::InteractiveObject"/>
  50. ? ? <accessor name="accessibilityImplementation" access="readwrite" type="flash.accessibility::AccessibilityImplementation" declaredBy="flash.display::InteractiveObject">
  51. ? ?? ?<metadata name="Inspectable">
  52. ? ?? ???<arg key="environment" value="none"/>
  53. ? ?? ?</metadata>
  54. ? ? </accessor>
  55. ? ? <accessor name="mouseEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/>
  56. ? ? <accessor name="focusRect" access="readwrite" type="Object" declaredBy="flash.display::InteractiveObject"/>
  57. ? ? <accessor name="tabIndex" access="readwrite" type="int" declaredBy="flash.display::InteractiveObject"/>
  58. ? ? <accessor name="mask" access="readwrite" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/>
  59. ? ? <accessor name="scaleX" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  60. ? ? <accessor name="scaleY" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  61. ? ? <method name="getRect" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Rectangle">
  62. ? ? <accessor name="mouseY" access="readonly" type="Number" declaredBy="flash.display::DisplayObject"/>
  63. ? ? <accessor name="alpha" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  64. ? ? <accessor name="x" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  65. ? ? <accessor name="name" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/>
  66. ? ? <accessor name="y" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  67. ? ? <accessor name="root" access="readonly" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/>
  68. ? ? <accessor name="width" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  69. ? ? <accessor name="stage" access="readonly" type="flash.display::Stage" declaredBy="flash.display::DisplayObject"/>
  70. ? ? <accessor name="loaderInfo" access="readonly" type="flash.display::LoaderInfo" declaredBy="flash.display::DisplayObject"/>
  71. ? ? <accessor name="transform" access="readwrite" type="flash.geom::Transform" declaredBy="flash.display::DisplayObject"/>
  72. ? ? <accessor name="height" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  73. ? ? <method name="localToGlobal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point">
  74. ? ? <accessor name="filters" access="readwrite" type="Array" declaredBy="flash.display::DisplayObject"/>
  75. ? ? <accessor name="blendMode" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/>
  76. ? ? <accessor name="rotation" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>
  77. ? ? <method name="hitTestObject" declaredBy="flash.display::DisplayObject" returnType="Boolean">
  78. ? ? <accessor name="scale9Grid" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/>
  79. ? ? <accessor name="accessibilityProperties" access="readwrite" type="flash.accessibility::AccessibilityProperties" declaredBy="flash.display::DisplayObject"/>
  80. ? ? <accessor name="scrollRect" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/>
  81. ? ? <accessor name="cacheAsBitmap" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/>
  82. ? ? <method name="globalToLocal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point">
  83. ? ? <method name="getBounds" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Rectangle">
  84. ? ? <accessor name="opaqueBackground" access="readwrite" type="Object" declaredBy="flash.display::DisplayObject"/>
  85. ? ? <accessor name="parent" access="readonly" type="flash.display::DisplayObjectContainer" declaredBy="flash.display::DisplayObject"/>
  86. ? ? <method name="hitTestPoint" declaredBy="flash.display::DisplayObject" returnType="Boolean">
  87. ? ?? ?<parameter index="1" type="Number" optional="false"/>
  88. ? ?? ?<parameter index="2" type="Number" optional="false"/>
  89. ? ?? ?<parameter index="3" type="Boolean" optional="true"/>
  90. ? ? <accessor name="visible" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/>
  91. ? ? <accessor name="mouseX" access="readonly" type="Number" declaredBy="flash.display::DisplayObject"/>
  92. ? ? <method name="willTrigger" declaredBy="flash.events::EventDispatcher" returnType="Boolean">
  93. ? ? <method name="removeEventListener" declaredBy="flash.events::EventDispatcher" returnType="void">
  94. ? ?? ?<parameter index="2" type="Function" optional="false"/>
  95. ? ? <method name="toString" declaredBy="flash.events::EventDispatcher" returnType="String"/>
  96. ? ? <method name="addEventListener" declaredBy="flash.events::EventDispatcher" returnType="void">
  97. ? ?? ?<parameter index="4" type="int" optional="true"/>
  98. ? ?? ?<parameter index="5" type="Boolean" optional="true"/>
  99. ? ? <method name="dispatchEvent" declaredBy="flash.events::EventDispatcher" returnType="Boolean">
  100. ? ?? ?<parameter index="1" type="flash.events::Event" optional="false"/>
  101. ? ? <method name="hasEventListener" declaredBy="flash.events::EventDispatcher" returnType="Boolean">
  102. ??</factory>
  103. </type>
复制代码
返回:
根据帮助中的描述,所有的实例属性都被嵌套在了 <factory> 标签里.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读