1

以下代码是我正在处理的一个更大项目的片段。问题是当我在 Flash CS6 中测试应用程序时,urlLoader 完美读取 25Notes.txt,但是当我尝试在我的 Android 设备(HTC Incredible)上调试应用程序(通过 Flash 内置的“调试>调试电影>通过 USB 在设备上”)时引发流错误 #2032。

我正在使用 Flash CS6 从 AIR 3.2 部署具有 Captive Runtime 的应用程序,并且我的项目被组织起来,没有多余的文件或文件夹。

如果您有任何见解或建议,以及是否需要更多解释或代码,请告诉我。

我也不确定 Flash CS6 中的 Captive Runtime 是打包根项目文件夹中的所有本地文件,还是只打包应用程序中使用的文件,或者根本没有打包。任何有关此的信息也将不胜感激。

    var FILE_LIST_PATH:String = "/25Notes/25Notes.txt";
var mp3List:Array = new Array();

LoadFile();

function LoadFile()
{
    var urlRequest:URLRequest = new URLRequest(FILE_LIST_PATH);
    var urlLoader:URLLoader = new URLLoader();

    urlLoader.addEventListener(Event.COMPLETE, processTextFile);
    urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
    urlLoader.load(urlRequest);
}

function onIOError(e:IOErrorEvent){
    trace("can't load file list:   " + e);
}


function processTextFile(event:Event):void
{
    var loader:URLLoader = URLLoader(event.target);
    var textFile:String = loader.data;
    mp3List = textFile.split("\n");
    for (i=0;i<mp3List.length;i++){
        trace(mp3List[i],i);
    }
}

以下是 IOError 跟踪返回的内容:

can't load file list:   [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: app:/25Notes/25Notes.txt" errorID=2032]

我完全被难住了。请帮忙!!

4

1 回答 1

1

该文件是否在运行时由应用程序保存并且您正在尝试检索它?如果不是,则该 URL 不正确。该app:/目录是设备上的 applicationStorageDirectory,而不是应用程序本身的位置。您需要将 txt 文件作为类嵌入并以这种方式访问​​它

[Embed(source="assets/ui/images/phone/menu-myvideos-active-160.png")]
var MyVideosActive160:Class;

那是我现在正在完成的一个项目中的一些东西。这嵌入了一个图像,并允许我之后访问它。要访问它,我只需这样做

var bmp:Bitmap = new MyVideosActive160();

如果您不嵌入,我不相信您可以实际访问该文件。必须嵌入需要包含在应用程序中的每个文件。

如果您在某个时间点在运行时保存文件,您会希望这样做

var path:String = new File(new File.applicationStorageDirectory.resolvePath("/25Notes/25Notes.txt").nativePath).url;

这将输出一个file:///URL,而不是使用app:/. 我正在使用这种方法在我的应用程序中播放下载的视频。Adobe 应该在 SDK 中内置了一个糟糕的解决方法,但这是我们必须处理的。

于 2012-11-07T23:17:40.300 回答