我對Flex相當陌生,當我有一個主要的Flex程序(我們稱之爲「Parent.swf」)時嘗試加載另一個Flex應用程序(Child.swf )通過SWFLoader類/組件。 FlashDevelop上的環境是Flex 4.6。Flex mx:SWFLoader加載不正確的SWF文件
調用似乎正常工作(即沒有返回IO或沙箱錯誤),只是它似乎將「Parent.swf」重新加載到SWFLoader而不是「Child.swf」中。
例如,我有含有Parent.swf:
<s: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"
initialize="doStartup()"
width="1024" height="768">
...
<fx:Script>
<![CDATA[
private function doStartup():void
{
trace("STARTING UP!");
}
....
]]>
</fx:Script>
<mx:VBox top="10" left="10" width="100%" horizontalAlign="center">
<mx:Label text="I'M A LOADER!" />
</mx:VBox>
<mx:VBox top="10" left="10" width="100%" horizontalAlign="center">
<mx:SWFLoader
id="pluginLoader"
source="plugins/Child.swf"
autoLoad="true"
height="400" width="400"
complete="onPluginLoaded(event);"
ioError="onPluginLoadError(event);"
securityError="onPluginSecurityError(event);"
httpStatus="onHttpStatus(event);"
init="onInit(event);"
open="onOpen(event);"
progress="onProgress(event);"
unload="onUnload(event);"
/>
</mx:VBox>
....
子swf包含:
....
<mx:Label text="I'M A PLUGIN!" />
....
上述跡上重複的負荷(即 「啓動!」)的Child.swf,然後再次嘗試加載失敗的Child.swf,因爲調用的工作目錄現在位於「插件」目錄中。 所以它似乎知道該文件存在並加載它,但以某種方式在Parent.swf上方交換。 請注意,如果我直接執行Child.swf,我可以驗證它是我所期望的(例如,帶有單個標籤的Flex應用程序說「我是插件!」)。
我也嘗試了各種其他的方法,例如通過代碼實例化SWFLoader,但同樣的問題發生。我甚至試圖切換到模塊,但也有相同的行爲。 無論本地運行還是通過Web服務器運行,它都會失敗。
有沒有人有任何想法如何發生?有沒有一些方法可以讓Parent.swf的main.mxml覆蓋Child.swf? (對不起,本文)
Gaah,我覺得像這樣一個白癡被命名爲一個新名稱。這與你的第二點有關......這兩個應用程序都使用main作爲mxml文件名。如果我將其中一個更改爲不同的名稱,那麼它一切正常! 乾杯哈里森。 – user4667964 2015-03-18 00:31:15