在Flex中使用Dynamic DispalyObject添加AddChild

时间:2010-08-05 03:51:58

标签: flex flash actionscript

我很确定这完全是我需要的,但是由于某些原因我不能让它工作。我想做的是调用扩展Canvas的任意组件。由于可能存在名为TestCanvasA,TestCanvasC,TestCanvasC的各种组件,直到运行时我才知道,我认为这将是实现它的方法。这就是我所拥有的。

<mx:Script>
    <![CDATA[
        import component.TestCanvas;
        import mx.containers.Canvas;
        import flash.display.Sprite;
        import flash.utils.getDefinitionByName;

        private function init(evt:Event):void{
            var Type:String="TestCanvas";
            var controlClass:Class = getDefinitionByName(Type) as Class;
            this.addChild(new controlClass() as Canvas);
        }
    ]]>
</mx:Script>

任何想法都会很棒!

1 个答案:

答案 0 :(得分:1)

为其提供完全限定的类名:

var type:String="component.TestCanvas";
var controlClass:Class = getDefinitionByName(Type) as Class;

同样仅仅是import语句不需要在编译的SWF中包含类的定义,除非在应用程序内部引用了类。只需在SWF中的某处声明(无需初始化)该类型的变量,以确保确实包含该定义。

var dummy:TestCanvas;