public function getDefinitionByName(name:String):Object
返回
Object — 返回 name 参数指定的类的类对象引用。 |
引发:
ReferenceError — 不存在具有指定名称的公共定义。 |
例1:builtin
var ClassReference:Class = getDefinitionByName("flash.display.Sprite") as Class;
例2:已编译进内存的?
var tClass:Class=getDefinitionByName("className") as Class;var t:*=new tClass();
前提是类className在文档中被引用过。无论前后
例3:利用loader载入swf,通过domain引入类定义
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
loader.load(new URLRequest("test1.swf"));
function onComplete(evt:Event):void{
trace("complete"+evt.target);
var clsss:Class = (evt.target as LoaderInfo).applicationDomain.getDefinition("example") as Class;
var c:Sprite = new clsss();
addChild(c);
}
ps 例3中细化规范写法:
var loadedSWF:LoaderInfo=evt.target as LoaderInfo;
//SWF文件中的所有代码被定义为存在于应用程序域中
var domain:ApplicationDomain=loadedSWF.applicationDomain as ApplicationDomain;
var RectClass:Class=domain.getDefinition(className) as Class;//获取类名
var RectA:MovieClip=(new RectClass()) as MovieClip;
var RectB:MovieClip=(new RectClass()) as MovieClip;
RectA.x=10,RectA.y=10;
RectB.x=10,RectB.y=100,RectB.alpha=0.5;
addChild(RectA),addChild(RectB);
addChild(loadedSWF.content as MovieClip).alpha=0.2;