as3.0 反射 主方法:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.getDefinitionByName;
import pages.Page;
import pages.PageA;
import pages.PageB;
public class MyReflection extends Sprite {
private static const PAGES:Array = [PageA,PageB];
public function MyReflection() {
stage.addEventListener(MouseEvent.CLICK, onClick);
}
protected function onClick(event:MouseEvent):void {
this.load("PageA");
}
public function load(pageType:String):void {
//加载Class.
var pageClass:Class = getDefinitionByName("pages."+pageType) as Class;
//实例化Class.用接口接收
var instance:Page = new pageClass() as Page;
//调用方法.
instance.print();
}
}
}
接口:
package pages {
public interface page {
function print():void;
}
}
PageA:
package pages {
public class PageA implements Page {
public function PageA() { }
public function print():void {
trace("PageA");
}
}
}
PageB:
package pages {
public class PageB implements Page {
public function PageB():void { }
public function print():void {
trace("PageB");
}
}
}