AS3动态获得类名及类的方法
1.获得某个实例对象的类名:getQualifiedClassName (实例名字符串表达式);
1 stage.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandle);
2 function mouseOverHandle(e:Event):void {
3 trace("over");
4 // 返回instance**之类的
5 trace(e.target.name);
6 //返回元件名
7 trace(getQualifiedClassName(e.target));
8 }
2 function mouseOverHandle(e:Event):void {
3 trace("over");
4 // 返回instance**之类的
5 trace(e.target.name);
6 //返回元件名
7 trace(getQualifiedClassName(e.target));
8 }
2.获得某个实例对象的类:constructor
1 dynamic class A {}
2 trace(A.prototype.constructor); // [class A]
3 trace(A.prototype.constructor == A); // true
4 var myA:A = new A();
5 trace(myA.constructor == A); // true
2 trace(A.prototype.constructor); // [class A]
3 trace(A.prototype.constructor == A); // true
4 var myA:A = new A();
5 trace(myA.constructor == A); // true
3.根据类名获得类: getDefinitionByName(类名);
1 package {
2 import flash.display.DisplayObject;
3 import flash.display.Sprite;
4 import flash.utils.getDefinitionByName;
5
6 public class GetDefinitionByNameExample extends Sprite {
7 private var bgColor:uint = 0xFFCC00;
8 private var size:uint = 80;
9
10 public function GetDefinitionByNameExample() {
11 var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
12 var instance:Object = new ClassReference();
13 instance.graphics.beginFill(bgColor);
14 instance.graphics.drawRect(0, 0, size, size);
15 instance.graphics.endFill();
16 addChild(DisplayObject(instance));
17 }
18 }
19 }
2 import flash.display.DisplayObject;
3 import flash.display.Sprite;
4 import flash.utils.getDefinitionByName;
5
6 public class GetDefinitionByNameExample extends Sprite {
7 private var bgColor:uint = 0xFFCC00;
8 private var size:uint = 80;
9
10 public function GetDefinitionByNameExample() {
11 var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
12 var instance:Object = new ClassReference();
13 instance.graphics.beginFill(bgColor);
14 instance.graphics.drawRect(0, 0, size, size);
15 instance.graphics.endFill();
16 addChild(DisplayObject(instance));
17 }
18 }
19 }
4.用得到的类实例化对象:一般中间要用一个无类型变量传递类,进行实例化;如:
1 var i=0;
2 var c:*=getDefinitionByName(getQualifiedClassName ("MyClass"+i));
3 var myClass:*=new c();
4
2 var c:*=getDefinitionByName(getQualifiedClassName ("MyClass"+i));
3 var myClass:*=new c();
4