2011-05-25 121 views
1

我試圖設置一個加載一個SWF到另一個SWF皮膚的概念驗證。的設立是這樣的:將一個帶有.as的SWF加載到另一個SWF中?

  • app.fla,其具有附接的ActionScript類,AppMain.as
  • skin.fla,其包含UI組件

AppMain.as顯然會包含所有的應用程序的邏輯的;然後,我希望能夠根據該特定外觀中定義的實例名稱來影響加載的外觀文件中包含的UI組件。

因此,舉例來說,如果我有一個TextFieldmyTextField一個實例名稱,我想能夠設置文本字段的text屬性通過在AppMain.as

導出app.swf加載根據flashvar參數皮膚文件將被加載到這個樣子的HTML文檔:

<html> 
    <head> 
     <title>Test</title> 
    </head> 
    <body> 
     <div id="swf"><!--//--></div> 
     <script src="jquery.js"></script> 
     <script src="swfobject.js"></script> 
     <script> 
      $(document).ready(function() { 
       $('#swf').flash({ 
        swf: 'app.swf', 
        width: 550, 
        height: 400, 
        flashvars: { 
         skin: 'skin.swf' 
        } 
       }); 
      }); 
     </script> 
    </body> 
</html> 

這只是加載app.swf#swf<div>。任何關於如何將皮膚SWF文件導入我的主應用程序SWF的幫助將很感激。我目前有以下(不起作用)。

package 
{ 
    import flash.display.Loader; 
    import flash.display.MovieClip; 
    import flash.net.URLRequest; 

    public class AppMain extends MovieClip 
    { 
     public function AppMain() 
     { 
      var myLoader:Loader = new Loader(); 
      self.addChild(myLoader); 
      var myRequest:URLRequest = new URLRequest('skin.swf'); 
      myLoader.load(myRequest); 
     } 
    } 
} 

我試圖加載皮膚是,它有一個紅色的背景簡單,所以我可以看到,如果它被加載與否;它不像我輸出的HTML頁面仍然有白色背景。

我上面有錯誤嗎?在「編譯錯誤」選項卡下,Flash Professional CS5中的控制檯不會給我任何錯誤。

回答

0

我用較小的修改嘗試了你的代碼,它對我來說工作得很好。首先,檢查這一行:

self.addChild(myLoader); 

如果你的代碼寫在這裏的是完整的,自變量是未聲明(但在這種情況下,你應該得到一個錯誤「未定義的屬性的訪問」)。 如果聲明瞭該變量,則檢查是否已添加到顯示列表中。在沒有添加的情況下,您的問題可以在這種情況下進行復制:您看不到您的加載內容,並且不會出現任何錯誤。

如果仍然不能解決問題,請嘗試將一些事件偵聽器添加到Loader實例中,以查看加載過程中發生的情況。

myLoader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); 
    myLoader.contentLoaderInfo.addEventListener(Event.OPEN, openHandler); 
    myLoader.contentLoaderInfo.addEventListener(Event.UNLOAD , unLoadHandler); 
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE , completeHandler); 
    myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR , ioErrorHandler); 
    myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS , progressHandler); 
    myLoader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS , httpStatusHandler); 
    myLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR , securityErrorHandler); 

如果您有任何其他問題,請詢問。

乾杯

塔馬斯Gronas

+0

謝謝,塔馬斯。我會提出這些建議,並在這裏報告我的發現。 – 2011-05-25 12:59:45

+0

有趣。正在加載皮膚SWF *。我將皮膚SWF的背景顏色設置爲紅色,但是當我添加一些文本(黃色)並且出現了黃色文本(儘管在白色背景上)時,它被加載時是透明的。 – 2011-05-25 13:03:07

+0

如何在我的AppMain構造方法中拾取一個flashvar?我試過'this.loaderInfo.parameters.skin'來挑選一個名爲「skin」的flashvar,但這似乎不起作用。有任何想法嗎? – 2011-05-25 13:14:23

相關問題