private function init():void{ hello.addEventListener(MouseEvent.CLICK,helloHandler); } function helloHandler(event:MouseEvent):void{ //var panel:Panel; var MyPanel:Class = getDefinitionByName("mx.containers.Panel") as Class; var mypanel:Object = new MyPanel();//可以这样来new一个Class为一个Object对象 mypanel.title = "this is a test"; mypanel.width = 200; mypanel.height = 200; this.addChild(DisplayObject(mypanel)); } ]]> </mx:Script> <mx:Button id="hello" label="hello"/> </mx:Application>
如果把//var panel:Panel;这行注释掉了,那么在单击按钮后会抛出异常提示:
如果此前申明了一个Panel类型的变量,即把上面的注释放开的放就不会抛异常。
原因如前面所解释,也行以后会支持所谓的“运行时的动态源码编译”。
如果需要调用的是类的静态方法,需要稍微修改下,如对于Alert的show方法,代码要改成如下:
function helloHandler(event:MouseEvent):void{ var a:Alert; var Alertclass:* = getDefinitionByName("mx.controls.Alert") as Class; Alertclass.show("hello"); }