Adobe Flash Builder(flex4):addChild()在此类中不可用。

时间:2010-01-07 21:00:19

标签: flex flex4 loader flash-builder addchild

我想将swf加载到flex 4应用程序中以便使用它的类。

var ldr:Loader=new Loader();
ldr.load(new URLRequest("file://path/to/fileswf"));
ldr.contentLoaderInfo.addEventListener(Event.INIT, loaded);
function loaded(evt:Event):void { addChild(ldr); }

我收到错误:

  

错误:此类中没有addChild()。相反,如果你有皮肤,请使用addElement()或修改皮肤    在spark.components.supportClasses :: SkinnableComponent / addChild()[E:\ dev \ gumbo_beta2 \ frameworks \ projects \ spark \ src \ spark \ components \ supportClasses \ SkinnableComponent.as:966]
   在main / private:init / loaded()[C:\ Documents and Settings \ ufk \ Adob​​e Flash Builder Beta 2 \ xpogames-toolkit-test \ src \ main.mxml:22]

如果我将addChild()更改为addElement(),则会收到以下编译错误:

  

1067:flash.display类型值的隐式强制:对不相关类型的加载器mx.core:IVisualElement。 main.mxml path / dir line 22 Flex问题

有任何想法如何解决此问题?

4 个答案:

答案 0 :(得分:24)

创建另一个容器以将displayObject放在:

// container ( IVisualElement ) for DisplayObjects
var container:UIComponent = new UIComponent();
addElement( container );

// displayObject goes to container
var displayO:Sprite = new Sprite();
container.addChild( displayO );

答案 1 :(得分:2)

在Flash builder 4完整版中,没有任何this.rawChildren。

解决问题的最佳方法是将每个必需的类转换为flex组件并在Flex应用程序中使用它:

  1. 下载并安装flex组件工具包 http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins

  2. 制作影片剪辑

  3. 转换为flex组件

  4. 将相关功能添加到此课程

  5. 附加到即将转换为flex组件的movieclip的类的骨架:

    package {
    import mx.flash.UIMovieClip;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.MouseEvent;
    public dynamic class challenge_screen extends UIMovieClip {
    
        public function challenge_screen() {
            super();
        }
    }
    } 
    

答案 2 :(得分:1)

private var _loader:SWFLoader = new SWFLoader();
private var _uicomponent:UIComponent = new UIComponent();
private function swfLoaded(event:Event):void 
{
Alert.show("inside swf Loaded");
var content:DisplayObject =_loader.content;
_uicomponent.addChild(content);
} 
public function loadSWF () : void 
{   

_loader.addEventListener(Event.INIT, swfLoaded);
_loader.load("http://intelliveysoft.com:5080/myelearn/Admin.swf"); 
addElement(_uicomponent);
}

试试这个。它会起作用

答案 3 :(得分:0)

this.rawChildren.addChild(ldr) 应该工作