这里的第一个计时器。
我一直在编写一个旨在部署到移动平台(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。)
答案 0 :(得分:3)
...好吧,我不知道这是否有记录,但显然我将LoadImagesFromDirectory调用到一个全部大写的目录名,因为在PC上,目标目录也是全部大写。
因此在测试平台中,目录解析为“app:/ assets / IMAGESDIRECTORY”。 但在导出时,设备显示目录而不是解析为“app:/ assets / Imagesdirectory”,因此对IMAGESDIRECTORY的调用无效。
奇怪的是,寻找“Imagesdirectory”适用于PC和设备,无需更改文件夹布局和名称。
看起来我已经陷入困境 - 记得永远不要在所有大写字母中提供目录名称......