flash 反射机制基础知识

本文详细解析了Flash中utils包中的顶级函数及其用途,包括getDefinitionByName、getQualifiedClassName、getQualifiedSuperclassName等,提供了丰富的示例和XML描述类型方法的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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> 标签里.

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值