2013-06-13 38 views
0

在發佈我的AIR應用程序(CurrentFile)時,我還將chatFile.swf包含在安裝文件中。 在我的AIR設置面板[AIR 3.7的桌面],在 '包含文件' 我有以下幾點:無法從應用程序存儲目錄加載SWF

  • CurrentFile.swf
  • CurrentFile-app.xml的
  • chatFile.swf

這裏是我的CurrentFile.swf的AS3代碼:

import flash.net.URLRequest; 
import flash.events.Event;  
import flash.display.Loader; 
import flash.filesystem.File; 
var chatLoaderWindow:Loader;  
    function loadchat(m:MouseEvent):void 
    { 

     chatLoaderWindow = new Loader(); 
     chatLoaderWindow.contentLoaderInfo.addEventListener(Event.COMPLETE, chatLoadComplete); 
     chatLoaderWindow.contentLoaderInfo.addEventListener(Event.INIT, chatInitLoad); 
     chatLoaderWindow.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, chatErrorLoad); 
     chatLoaderWindow.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, chatHttpStatus); 
     myclip.chatwindow.addChild(chatLoaderWindow); 
     var f:File = File.applicationStorageDirectory.resolvePath("chatFile.swf"); 
     chatLoaderWindow.load(new URLRequest(f.url)); 
     tracebox.text = "Chat URL" + f.url; 
    } 
    function chatLoadComplete(e:Event):void 
    { 
     tracebox.text = "chat loaded"; 

    } 
    function chatErrorLoad(io:IOErrorEvent):void 
    { 
     tracebox.text = "chat IO Error: "+io; 

    } 
    function chatInitLoad(i:Event):void 
    { 
     tracebox.text = "chat INIT"; 

    } 
    function chatHttpStatus(e:HTTPStatusEvent):void 
    { 
     tracebox.text = "chat Http"+e; 

    } 
    myclip.chatbut.addEventListener(MouseEvent.CLICK,loadchat); 


    /* 
    Output: 
    chat IO Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2035" errorID=2035] 

編輯:我想通了。這是非常簡單的

這不是必須的:

var f:File = File.applicationStorageDirectory.resolvePath("chatFile.swf"); 
chatLoaderWindow.load(new URLRequest(f.url)); 

插入這樣的:

chatLoaderWindow.load(new URLRequest("app:/chatFile.swf")); 

所以現在我的問題是: 什麼是File.applicationStorageDirectory.resolvePath的目的是什麼?

回答

0

這裏有兩個目錄。一個是「應用程序」目錄,在其中放置安裝文件。一個是「應用程序 - 存儲」目錄,它是在運行時寫入文件的便利場所。要訪問這些目錄,您可以使用File.resolvePath()函數或使用URI-scheme快捷方式app:或app-storage :.在你最初的嘗試中,你只是在錯誤的目錄中尋找你的文件。 。

0

File.applicationStorageDirectory.resolvePath( 「somefile.swf」)URL將等於 「應用程序的存儲:/somefile.swf」

File.applicationDirectory.resolvePath( 「somefile.swf」)URL將等於。 「app:/somefile.swf」

應用程序目錄是您的應用程序的安裝位置。應用程序存儲目錄是您的應用程序可以將文件保存到的文件夾。

resolvePath()返回一個文件對象。您可以將其用於獲取文件位置的跨平臺URL(例如fileObj.exists和fileObj.parent.createDirectory())以外的用途。 fileObj.url就是您要使用URLLoader以獨立於平臺的方式訪問文件的URL。

相關問題