2010-01-07 70 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