动态加载自定义component
我现在自己写了一个组件,命名为:ComSelUser.mxml, 现在我就想在我的一个弹出窗口里面动态显示,因为这个窗口可能显示的组件不确定,也有可能显示ComSelDep.mxml, 我能否根据组件名ComSelUser, ComSelDep把这个组件显示在VBox或Panle里面。
[解决办法]
var cu:ComSelUser=new ComSelUser();
panle.addChild(cu);或者
vbox.addChild(cu);
[解决办法]
var cls:Class =getDefinitionByName("mx.controls::TextInput") as Class; var txtinput:TextInput =new cls() as TextInput; // 把上面的代码,改成自己的类的全路径// var cls:Class =getDefinitionByName("com.xx.ComSelDep") as Class; // var txtinput:ComSelDep =new cls() as ComSelDep; txtinput.text='test'; co1.addChild(txtinput);
[解决办法]
getDefinitionByName可以根据组件全路径生成CLASS,有了class后可以new这个class就是对象了,但这个方法之支持少数内部组件,很多组件或自定义组件,你必须要先“导入”那个类,不是import,简单的办法就是定义一个木偶变量;
例如你要生成一个ClassA,你需要先在组件里定义一个这样的变量:
private var classA:ClassA;这个classA可以不被任何东西赋值或调用都可以;
有了class后,new classA()就可以得到实例了;
[解决办法]
或者做个工厂吧,去构造实例。
[解决办法]