2010-01-07 89 views
9

我想加载一个SWF到Flex 4应用程序中以使用它的类。Adob​​e Flash Builder(flex4):addChild()在此类中不可用。

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); } 

我收到的错误:

Error: addChild() is not available in this class. Instead, use addElement() or modify the skin, if you have one.
at spark.components.supportClasses::SkinnableComponent/addChild()[E:\dev\gumbo_beta2\frameworks\projects\spark\src\spark\components\supportClasses\SkinnableComponent.as:966]
at main/private:init/loaded()[C:\Documents and Settings\ufk\Adobe Flash Builder Beta 2\xpogames-toolkit-test\src\main.mxml:22]

如果我改变addChild()addElement(),我收到以下编译错误:

1067: Implicit coercion of a value of type flash.display:Loader to an unrelated type mx.core:IVisualElement. main.mxml path/dir line 22 Flex Problem

任何想法如何解决这个问题?

回答

2

以及在Flash Builder 4正式版,没有任何this.rawChildren。

来解决问题。将每个需要的类转换为Flex组件,并把它用在你的Flex应用程序的最佳方法:

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

  2. 制作影片剪辑

  3. 转换为弹性组件

  4. 添加相关的功能,以这个类

用于附接到一个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(); 
    } 
} 
} 
+0

扩展到MovieClip,然后添加到UIComponent的作品。 – ufk 2011-08-16 08:11:06

0

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

24

创建另一个容器放置在displayObject的:

​​
+0

与ActionScript SDK的Facebook Distractor配合使用。谢谢。 – 2010-11-29 23:38:25

+0

这是在mxml标记中,它工作的一种享受 - 谢谢! – 2012-06-05 05:01:32

+0

@LaceySnr你是如何在mxml标记中做到这一点的? – Scott 2013-11-25 15:01:42

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); 
} 

试试这个。它将工作

+2

而不是只发布一段代码,请*解释*为什么这段代码解决了问题。没有解释,这不是一个答案。 – 2012-12-05 11:25:18