AS3动态获取对象类名及类的方法,getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName

首先先告诉大家,我要讲的是flash.utils包中的
getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
可能帮助文档写的过于专业,程序底子差的不一定能看明白,我用我理解的,通俗的讲一遍给大家听。。

1、getDefinitionByName
如果你已知这个类的类名类路径,但是你又没办法得到这个类的原型,那么可以通过该函数,将已知的类名类路径转换为类的原型,然后还可以将得到的类原型进行实例化,比如:

  1. var Tmp = getDefinitionByName("flash.display.Sprite");
  2. var spr = new Tmp;
  3. trace(spr is Sprite);
  4. //输出 true

复制代码

通过getDefinitionByName得来的其实就是Sprite类,然后实例化,再判断spr是否为Sprite,得出的结果是true

2、getQualifiedClassName
如果你现在有个引用值,你不知道这个引用所表示的什么类,什么类路径,或许是个类不知道类名等等,想得到这个类的完整名字,那么可以使用它,比如:

  1. var spr:Sprite = new Sprite;
  2. trace(getQualifiedClassName(spr));
  3. trace(getQualifiedClassName(Sprite));
  4. //两者都是输出 flash.display::Sprite

复制代码

3、getQualifiedSuperclassName
这个方法就比较好玩了,是获取自己父类的类原型,比如你一系列的类是继承某个抽象类,而现在你无法得到这个抽象类,那么你可以使用该方法获得该抽象类的类原型,比如:

  1. var spr:Sprite = new Sprite;
  2. trace(getQualifiedSuperclassName(spr));
  3. trace(getQualifiedSuperclassName(Sprite));
  4. //两者都是输出 flash.display::DisplayObjectContainer

复制代码

其实这个三方法在日常编程很少用得到,但是了解一下并无害,而且这个三个方法,也经常出现在各大公司的面试题上,因为这几个用处不大,但是可以了解你对AS3的熟悉程度到了哪儿。
举一反三,竟然可以获得他的父类,那么抽象类的父类也可以获得拉?
请看:

  1. var tmp = Sprite;
  2. while(tmp != Object){
  3. tmp = getDefinitionByName(getQualifiedSuperclassName(tmp));
  4. trace(getQualifiedClassName(tmp));
  5. }
  6. /**
  7. * 输出:
  8. * flash.display::DisplayObjectContainer
  9. * flash.display::InteractiveObject
  10. * flash.display::DisplayObject
  11. * flash.events::EventDispatcher
  12. * Object
  13. */

复制代码

刨根揭底,把Sprite的长辈都挖出来了,不管父亲还是爷爷,或者爷爷的爷爷。。。
有意思吧?了解了解吧。。实质作用没多大,全当小说看吧

转自:http://blog.csdn.net/fengsser/article/details/8703808

时间: 2024-08-08 22:00:00

AS3动态获取对象类名及类的方法,getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName的相关文章

【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; private String name; private Boolean flag; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getNam

python动态获取对象的属性和方法 (转载)

首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__(self, name='Kitty'): self.name = name def sayHi(self): print self.name, 'says Hi!' cat = Cat() print Cat.sayHi print cat.sayHi 有时候我们会碰到这样的需求,需要执行对象的某

python动态获取对象的属性和方法

http://blog.csdn.net/kenkywu/article/details/6822220首先通过一个例子来看一下本文中可能用到的对象和相关概念.01     #coding: UTF-802     import sys #  模块,sys指向这个模块对象03     import inspect04     def foo(): pass # 函数,foo指向这个函数对象05      06     class Cat(object): # 类,Cat指向这个类对象07    

反射 学习笔记(二) 动态获取外部程序集中的类类型及成员类型

之前熟悉了反射相关的基本概念,知道了如何获取Assembly类和Type类,接下来通过一个小程序来练习.体验通过反射动态获取给定的*.dll或*.exe程序集所包含的所有类型的列表(列表包括给定类型定义的方法.字段.属性.事件.支持的接口.方法参数.基类.命名空间等).目标:使用Winform写一个小工具,可以查看指定dll的元数据. 界面如下: 使用的控件包括:按钮.OpenFileDialog对话框.ComboBox(DropDownList类型).TextBox(MultiLine为tru

PHP类和对象之定义类的方法

方法就是在类中的function,很多时候我们分不清方法与函数有什么差别,在面向过程的程序设计中function叫做函数,在面向对象中function则被称之为方法. 同属性一样,类的方法也具有public,protected 以及 private 的访问控制. 访问控制的关键字代表的意义为:public:公开的protected:受保护的private:私有的 我们可以这样定义方法: class Car { public function getName() { return '汽车'; }

asp.net core不通过构造方法从容器中获取对象及解决通过这种方法NLog获取对象失败的问题

一般想从容器中获取对象,我们都是通过构造方法获取对象,但有些条件不允许不能通过构造方法获取对象,我们必须单独从容器中单独创建获取找个对象,这样我们就不行把找个容器静态保存起来供全局diaoy 一. 简单些一下步骤如下:(从某一个大神视频或者代码中学习到的,具体哪个不记得了) 1.先做一个构建对象的接口IEngine public interface IEngine { /// <summary> /// 构建一个实例 /// </summary> /// <typeparam

【Python】动态获取python类名、函数名&amp;多线程

import time import random import threading import inspect def get_current_function_name(): return inspect.stack()[1][3] class Inclass: def __init__(self): print 'Inclass 初始化' def execIn(self,i): rand = int(random.random() * 10) print i,'[%s.%s]---%s-

Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 注意点: self ,我们讲过了,self = 对象,实例化后的对象调用类的各种成员的时候的self就是这个对象. 而且我们也讲过了

Java反射获取对象VO的属性值(通过Getter方法)

有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个Excel导出的工具类,导出的批量数据是以List类型传入的,List里的对象自然每次都不同,这取决于需要导出什么信息. 为了使用方便,将对象的属性名与属性值存于Map当中,使用时就可以直接遍历Map了. 此次的思路是通过反射和Getter方法取得值,然后记录在一个Map当中. Kick start