Flash基础入门之flash反射机制基础知识
小标 2018-07-09 来源 : 阅读 1024 评论 0

摘要:本文主要向大家介绍了Flash基础入门之flash反射机制基础知识,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了Flash基础入门之flash反射机制基础知识,通过具体的内容向大家展现,希望对大家学习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>

27.     <method name="addChild" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">

28.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

29.     </method>

30.     <method name="swapChildren" declaredBy="flash.display::DisplayObjectContainer" returnType="void">

31.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

32.       <parameter index="2" type="flash.display::DisplayObject" optional="false"/>

33.     </method>

34.     <method name="getChildByName" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">

35.       <parameter index="1" type="String" optional="false"/>

36.     </method>

37.     <method name="getObjectsUnderPoint" declaredBy="flash.display::DisplayObjectContainer" returnType="Array">

38.       <parameter index="1" type="flash.geom::Point" optional="false"/>

39.     </method>

40.     <accessor name="textSnapshot" access="readonly" type="flash.text::TextSnapshot" declaredBy="flash.display::DisplayObjectContainer"/>

41.     <method name="removeChildAt" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">

42.       <parameter index="1" type="int" optional="false"/>

43.     </method>

44.     <method name="getChildIndex" declaredBy="flash.display::DisplayObjectContainer" returnType="int">

45.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

46.     </method>

47.     <method name="areInaccessibleObjectsUnderPoint" declaredBy="flash.display::DisplayObjectContainer" returnType="Boolean">

48.       <parameter index="1" type="flash.geom::Point" optional="false"/>

49.     </method>

50.     <accessor name="mouseChildren" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObjectContainer"/>

51.     <method name="removeChild" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">

52.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

53.     </method>

54.     <method name="setChildIndex" declaredBy="flash.display::DisplayObjectContainer" returnType="void">

55.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

56.       <parameter index="2" type="int" optional="false"/>

57.     </method>

58.     <method name="contains" declaredBy="flash.display::DisplayObjectContainer" returnType="Boolean">

59.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

60.     </method>

61.     <method name="addChildAt" declaredBy="flash.display::DisplayObjectContainer" returnType="flash.display::DisplayObject">

62.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

63.       <parameter index="2" type="int" optional="false"/>

64.     </method>

65.     <accessor name="numChildren" access="readonly" type="int" declaredBy="flash.display::DisplayObjectContainer"/>

66.     <method name="swapChildrenAt" declaredBy="flash.display::DisplayObjectContainer" returnType="void">

67.       <parameter index="1" type="int" optional="false"/>

68.       <parameter index="2" type="int" optional="false"/>

69.     </method>

70.     <accessor name="tabChildren" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObjectContainer"/>

71.     <accessor name="tabEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/>

72.     <accessor name="doubleClickEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/>

73.     <accessor name="contextMenu" access="readwrite" type="flash.ui::ContextMenu" declaredBy="flash.display::InteractiveObject"/>

74.     <accessor name="accessibilityImplementation" access="readwrite" type="flash.accessibility::AccessibilityImplementation" declaredBy="flash.display::InteractiveObject">

75.       <metadata name="Inspectable">

76.         <arg key="environment" value="none"/>

77.       </metadata>

78.     </accessor>

79.     <accessor name="mouseEnabled" access="readwrite" type="Boolean" declaredBy="flash.display::InteractiveObject"/>

80.     <accessor name="focusRect" access="readwrite" type="Object" declaredBy="flash.display::InteractiveObject"/>

81.     <accessor name="tabIndex" access="readwrite" type="int" declaredBy="flash.display::InteractiveObject"/>

82.     <accessor name="mask" access="readwrite" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/>

83.     <accessor name="scaleX" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

84.     <accessor name="scaleY" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

85.     <method name="getRect" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Rectangle">

86.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

87.     </method>

88.     <accessor name="mouseY" access="readonly" type="Number" declaredBy="flash.display::DisplayObject"/>

89.     <accessor name="alpha" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

90.     <accessor name="x" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

91.     <accessor name="name" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/>

92.     <accessor name="y" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

93.     <accessor name="root" access="readonly" type="flash.display::DisplayObject" declaredBy="flash.display::DisplayObject"/>

94.     <accessor name="width" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

95.     <accessor name="stage" access="readonly" type="flash.display::Stage" declaredBy="flash.display::DisplayObject"/>

96.     <accessor name="loaderInfo" access="readonly" type="flash.display::LoaderInfo" declaredBy="flash.display::DisplayObject"/>

97.     <accessor name="transform" access="readwrite" type="flash.geom::Transform" declaredBy="flash.display::DisplayObject"/>

98.     <accessor name="height" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

99.     <method name="localToGlobal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point">

100.       <parameter index="1" type="flash.geom::Point" optional="false"/>

101.     </method>

102.     <accessor name="filters" access="readwrite" type="Array" declaredBy="flash.display::DisplayObject"/>

103.     <accessor name="blendMode" access="readwrite" type="String" declaredBy="flash.display::DisplayObject"/>

104.     <accessor name="rotation" access="readwrite" type="Number" declaredBy="flash.display::DisplayObject"/>

105.     <method name="hitTestObject" declaredBy="flash.display::DisplayObject" returnType="Boolean">

106.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

107.     </method>

108.     <accessor name="scale9Grid" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/>

109.     <accessor name="accessibilityProperties" access="readwrite" type="flash.accessibility::AccessibilityProperties" declaredBy="flash.display::DisplayObject"/>

110.     <accessor name="scrollRect" access="readwrite" type="flash.geom::Rectangle" declaredBy="flash.display::DisplayObject"/>

111.     <accessor name="cacheAsBitmap" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/>

112.     <method name="globalToLocal" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Point">

113.       <parameter index="1" type="flash.geom::Point" optional="false"/>

114.     </method>

115.     <method name="getBounds" declaredBy="flash.display::DisplayObject" returnType="flash.geom::Rectangle">

116.       <parameter index="1" type="flash.display::DisplayObject" optional="false"/>

117.     </method>

118.     <accessor name="opaqueBackground" access="readwrite" type="Object" declaredBy="flash.display::DisplayObject"/>

119.     <accessor name="parent" access="readonly" type="flash.display::DisplayObjectContainer" declaredBy="flash.display::DisplayObject"/>

120.     <method name="hitTestPoint" declaredBy="flash.display::DisplayObject" returnType="Boolean">

121.       <parameter index="1" type="Number" optional="false"/>

122.       <parameter index="2" type="Number" optional="false"/>

123.       <parameter index="3" type="Boolean" optional="true"/>

124.     </method>

125.     <accessor name="visible" access="readwrite" type="Boolean" declaredBy="flash.display::DisplayObject"/>

126.     <accessor name="mouseX" access="readonly" type="Number" declaredBy="flash.display::DisplayObject"/>

127.     <method name="willTrigger" declaredBy="flash.events::EventDispatcher" returnType="Boolean">

128.       <parameter index="1" type="String" optional="false"/>

129.     </method>

130.     <method name="removeEventListener" declaredBy="flash.events::EventDispatcher" returnType="void">

131.       <parameter index="1" type="String" optional="false"/>

132.       <parameter index="2" type="Function" optional="false"/>

133.       <parameter index="3" type="Boolean" optional="true"/>

134.     </method>

135.     <method name="toString" declaredBy="flash.events::EventDispatcher" returnType="String"/>

136.     <method name="addEventListener" declaredBy="flash.events::EventDispatcher" returnType="void">

137.       <parameter index="1" type="String" optional="false"/>

138.       <parameter index="2" type="Function" optional="false"/>

139.       <parameter index="3" type="Boolean" optional="true"/>

140.       <parameter index="4" type="int" optional="true"/>

141.       <parameter index="5" type="Boolean" optional="true"/>

142.     </method>

143.     <method name="dispatchEvent" declaredBy="flash.events::EventDispatcher" returnType="Boolean">

144.       <parameter index="1" type="flash.events::Event" optional="false"/>

145.     </method>

146.     <method name="hasEventListener" declaredBy="flash.events::EventDispatcher" returnType="Boolean">

147.       <parameter index="1" type="String" optional="false"/>

148.     </method>

149.   </factory>

150. </type>

复制代码

返回:
根据帮助中的描述, 所有的实例属性都被嵌套在了 <factory> 标签里.

以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程