0

在发布我的 AIR 应用程序 (CurrentFile) 时,我还在安装文件中包含了 chatFile.swf。在我的 AIR 设置面板 [AIR 3.7 for Desktop] 中,在“包含文件”下,我有以下内容:

  • 当前文件.swf
  • CurrentFile-app.xml
  • 聊天文件.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 的目的是什么?

4

2 回答 2

0

这里有两个目录。一个是“应用程序”目录,您的安装文件放置在其中。一个是“application-storage”目录,它是在运行时方便地写入文件的地方。要访问这些目录,您可以使用 File.resolvePath() 函数或使用 URI 方案快捷方式 app: 或 app-storage:。在您最初的尝试中,您只是在错误的目录中查找文件。

于 2013-06-14T16:53:26.670 回答
0

File.applicationStorageDirectory.resolvePath("somefile.swf").url 将等于 "app-storage:/somefile.swf"

File.applicationDirectory.resolvePath("somefile.swf").url 将等于 "app:/somefile.swf"

应用程序目录是您的应用程序的安装位置。应用程序存储目录是您的应用程序可以将文件保存到的文件夹。

resolvePath() 返回一个文件对象。您可以将它用于获取文件位置的跨平台 url 以外的其他目的,例如 fileObj.exists 和 fileObj.parent.createDirectory()。fileObj.url 只是您将与 URLLoader 一起使用的 url,以独立于平台的方式访问文件。

于 2015-08-21T14:59:09.370 回答