4

这是我的基本文件夹结构:http: //i.stack.imgur.com/l1YnV.jpg

我的代码是这样的:

private var xmlLoader:URLLoader=new URLLoader();
private var url:URLRequest=new URLRequest("../src/NPClist.xml");

xmlLoader.load(url);

我得到以下信息:

Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: app:/src/NPClist.xml

无论我在 URLRequest 构造函数中放了多少“../”,它都只有在 NPClist.xml 与 .swf(bin-debug)位于同一文件夹中时才有效,我什至尝试复制它。似乎它忽略/不解决“../”。我也尝试导出发布版本,但它没有工作。有趣的是,类似的 Embeds 也可以工作(assets 文件夹与 src 和 bin-debug 处于同一级别)。

[Embed(source="assets/mainmenu/somefile.png")]

这是我如何让它工作的:

var xmlFile:File=new File(File.applicationDirectory.nativePath).resolvePath("../src/NPClist.xml");
var url:URLRequest=new URLRequest(xmlFile.url);

“../”最初不起作用,但如果您像这样使用它,它就会起作用。


回过头来,这似乎也是错误的。以下是它绝对按预期工作的方式:

我在安装程序中包含了资产,我正在使用

imgFile=File.applicationDirectory.resolvePath("assets/folder/file");
urlReq=new URLRequest(imgFile.nativePath);
ldr.load(urlReq);
4

2 回答 2

0

您必须将本地资产保存在 html-template 文件夹中,然后它将为 Web 应用程序加载没有 IOError 的资产,否则在 AIR 应用程序的情况下使用 file:/// 加载本地资产

于 2014-09-20T09:37:47.110 回答
-3

您不能使用 URLRequest 访问本地文件系统资源 - URLRequest 使用 HTTP 协议来获取资源。

URLRequest 只能访问应用了跨域安全的 Internet 资源。

如果要打开本地文件,您应该:

  • 或者明确地强制用户打开文件使用打开文件对话框(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html)

  • 或使用 AIR 运行时(使用 AIR,您可以打开本地文件,但不能使用 URLRequest 而是使用 File 类)。

于 2012-09-28T19:19:13.347 回答