2012-04-23 36 views
2

我有一個OpenLaszlo/AS3應用程序(olapp.lzx)和一個Flex應用程序(flexapp.swc)。 我想包括在olapp.lzx flexapp.swc如下:從AS3內部實例化Flex應用程序/ OpenLaszlo

olapp.lzx (AS3): 
=============== 
... 
var flexapp:Sprite = new FlexApp(); 
flexapp.doSomething(); 
... 

的flexapp.swc從該MXML編譯:

flexapp.mxml: 
============ 
<?xml version="1.0"?> 
<!-- intro/FlexApp.mxml --> 
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 
    <mx:ComboBox> 
     <mx:dataProvider> 
      <s:ArrayList> 
       <fx:String>AK</fx:String> 
       <fx:String>AL</fx:String> 
       <!-- Add all other states. --> 
      </s:ArrayList> 
     </mx:dataProvider> 
    </mx:ComboBox> 
</mx:Application> 

當我編譯flexapp.mxml爲SWF,它運行很好,但從AS3 實例化失敗(TypeError:Error#2007)。我研究了mxml-> as3集成不是通常的方式,但是對於這種特殊情況我需要。我不得不承認,我還不太熟悉Flex,只有OpenLaszlo。 flexapp.mxml中應該改變什麼?謝謝!

+0

SWC是一個ActionScript庫;不是可運行的應用程序....我從來沒有聽說過任何人試圖將應用程序標籤添加到SWC;但我想這應該是技術上可能的。我懷疑 - 但不確定 - 在創建基於允許應用程序真正運行的應用程序標記的SWF時,MXMLC編譯器會發揮一些神奇功效。創建SWC時,這些步驟可能不存在。如果我是你,我會考慮從你的Flex代碼創建一個SWF,然後在你的OpenLaszlo應用程序的運行時加載它。 – JeffryHouser 2012-04-23 15:09:03

+0

由於某些原因,我無法在OpenLaszlo中包含swf文件,但會在另一個場合嘗試。但是我能夠包含一個由純粹的.as代碼創建的swc,除了擴展Sprite並在其中繪製一些圓之外別無其他。當我從UIComponent而不是Sprite繼承時,它不再顯示任何圖形,雖然也沒有錯誤消息。難道Flex組件一般不能在不使用mxml的情況下完成,因此不包含在OpenLaszlo中? – 2012-04-23 17:19:51

+0

OpenLaszlo部署到許多平臺,Flash Player只是其中之一,是否正確?您應該可以使用加載器對象http://livedocs.adobe.com/flex/3/html/help.html?content=Working_with_MovieClips_7.html在Flash Player的運行時加載SWF。不過,我不知道OpenLaszlo如何適合OpenLaszlo。你的Flex SWC不工作的原因很可能是因爲Flex Framework沒有被初始化[我相信我在我原來的評論中提到過] – JeffryHouser 2012-04-23 18:46:17

回答

0

OpenLaszlo並未正式支持將Flash SWF應用程序導入到其中。唯一的例外是編碼爲SWF格式的電影。 (如果您的應用程序使用Flash 9(SWF9)或更高版本,則SWF電影需要以AVM2格式進行編碼,對於Flash 8或更低版本,AVM1編解碼器)。

如果您嘗試將非簡單SWF電影的SWF加載到OpenLaszlo視圖中,則結果將不可預測。