打包适用于Android / IOS的​​Flash Builder应用程序 - 资产目录问:

时间:2012-03-07 10:25:07

标签: android air directory adobe packaging

这里的第一个计时器。

我一直在编写一个旨在部署到移动平台(iOS和Android)上的应用程序。这使用Flash Builder 4.6的android构建目标 - 它使用/ assets /目录中的子目录,该子目录包含任意数量的.png文件。

我对目录加载器进行编码:

public function LoadFromDirectory(directoryName:String, store:Vector.<BitmapData>):Boolean
{
    //Changed here: this should work on both the development environment, AND the device.  
    //Guess what...

    imageDirectory = File.applicationDirectory.resolvePath("assets/" +directoryString);

    //This is triggering on Android. Doesn't do so in ADL. Not tested on iOS yet, 
    //but come on, if it doesn't work here, it won't work on iOS...

    if (!imageDirectory.isDirectory) 
    { 
        trace("Directory not found:" +imageDirectory.url);
        return false;
    }

    /*Snip loop through the contents of this directory, loading anything that is
    a PNG and storing the bitmapData of all loaded PNGs into the vector, one by one*/

   /*This of course, ALL works in ADL*/
}

这适用于空中虚拟设备,但不适用于移动设备或部署。这就是我被困住的地方。

编辑:好的,我已经把文件代码缩减到一行了。我应该使用resolvePath来实现跨平台兼容性;此外,Flash Builder中的打包程序看不到“assets \”子目录,除非我把它放在“bin-debug”中,因为那是编译后的SWF所在的位置。

仍然没有解决问题 - 至少对于Android版本,我可以在apk中看到资产文件夹(通过将其重命名为.zip并将其全部解压缩),并且它是正确的(与应用程序的XML文件和SWF)。

apk安装并运行,但当我在设备上调试时,isDirectory仍会返回false(再一次,不在ADL上 - 仅在设备上)。评论整个if ...段会使应用程序崩溃,因为它无法找到assets \目录。

我接近于解决这个问题;如果有人帮助我完成最后一步,我会很感激,因为这需要血腥的年龄才能弄明白。

PS:我很乐意只是简单地将图像嵌入FLA或SWC中,这是我以前做过的,并且有效。不幸的是,该特定目录中图像的数量和名称是任意;我唯一确定的是支持的扩展。

PPS:使用此功能:LoadImagesFromDirectory(“imagesdirectory”),应该在任何平台的app:/ assets / imagesdirectory下查看。布尔返回用于调试(如果不存在具有该名称的目录,则返回false。)

1 个答案:

答案 0 :(得分:3)

...好吧,我不知道这是否有记录,但显然我将LoadImagesFromDirectory调用到一个全部大写的目录名,因为在PC上,目标目录也是全部大写。

因此在测试平台中,目录解析为“app:/ assets / IMAGESDIRECTORY”。 但在导出时,设备显示目录而不是解析为“app:/ assets / Imagesdirectory”,因此对IMAGESDIRECTORY的调用无效。

奇怪的是,寻找“Imagesdirectory”适用于PC和设备,无需更改文件夹布局和名称。

看起来我已经陷入困境 - 记得永远不要在所有大写字母中提供目录名称......