Android 文件路径的 AS3 Air
AS3 Air for Android filepath
您好,在此先感谢您的帮助...
我有以下功能可以显示应用程序存储目录的子文件夹中的所有图像:
public function mygallery():void
{
var gallery:File = File.applicationStorageDirectory.resolvePath("IMAGES/");
var gfiles:Array = gallery.getDirectoryListing();
var gcount:int = 0;
gcount = gfiles.length;
var x_counter:Number = 0;
var y_counter:Number = 0;
createContainer();
callThumbs();
function createContainer():void
{
container_mc = new MovieClip();
container_mc.x = gx;
container_mc.y = gy;
//container_mc.width = gthumbw;
//container_mc.height = gthumbh;
addChild(container_mc);
}
function callThumbs():void
{
for (var j:uint = 0; j < gcount; j++)
{
var thumb_url = gfiles[j].nativePath;
var thumb_loader = new Loader();
thumb_loader.load(new URLRequest(thumb_url));
thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
thumb_loader.x = (gthumbw+gspw)*x_counter;
thumb_loader.y = (gthumbh+gsph)*y_counter;
if (x_counter+1 < gcol)
{
x_counter++;
}else
{
x_counter = 0;
y_counter++;
}
//trace(gfiles[j].nativePath);
}
}
function thumbLoaded(e:Event):void
{
var my_thumb:Loader = Loader(e.target.loader);
my_thumb.width = gthumbw;
my_thumb.height = gthumbh;
container_mc.addChild(my_thumb);
}
}
gcount returns 文件夹中文件的正确数量,但由于某种原因,图像根本不显示。
当我在 windows 中 运行 时,它工作正常,这让我相信这是 Android 的沙盒问题,或者我使用的文件路径不正确。
非常感谢任何建议
如果使用加载程序,您应该引用 File
对象的 url
属性 而不是 nativePath
。这将为您提供一个加载程序友好的 app-storage:/
方案,而不是 file:/
样式参考。
不过首先也是最重要的是,您应该在加载文件时监听错误:
thumb_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
thumb_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
您好,在此先感谢您的帮助...
我有以下功能可以显示应用程序存储目录的子文件夹中的所有图像:
public function mygallery():void
{
var gallery:File = File.applicationStorageDirectory.resolvePath("IMAGES/");
var gfiles:Array = gallery.getDirectoryListing();
var gcount:int = 0;
gcount = gfiles.length;
var x_counter:Number = 0;
var y_counter:Number = 0;
createContainer();
callThumbs();
function createContainer():void
{
container_mc = new MovieClip();
container_mc.x = gx;
container_mc.y = gy;
//container_mc.width = gthumbw;
//container_mc.height = gthumbh;
addChild(container_mc);
}
function callThumbs():void
{
for (var j:uint = 0; j < gcount; j++)
{
var thumb_url = gfiles[j].nativePath;
var thumb_loader = new Loader();
thumb_loader.load(new URLRequest(thumb_url));
thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);
thumb_loader.x = (gthumbw+gspw)*x_counter;
thumb_loader.y = (gthumbh+gsph)*y_counter;
if (x_counter+1 < gcol)
{
x_counter++;
}else
{
x_counter = 0;
y_counter++;
}
//trace(gfiles[j].nativePath);
}
}
function thumbLoaded(e:Event):void
{
var my_thumb:Loader = Loader(e.target.loader);
my_thumb.width = gthumbw;
my_thumb.height = gthumbh;
container_mc.addChild(my_thumb);
}
}
gcount returns 文件夹中文件的正确数量,但由于某种原因,图像根本不显示。
当我在 windows 中 运行 时,它工作正常,这让我相信这是 Android 的沙盒问题,或者我使用的文件路径不正确。
非常感谢任何建议
如果使用加载程序,您应该引用 File
对象的 url
属性 而不是 nativePath
。这将为您提供一个加载程序友好的 app-storage:/
方案,而不是 file:/
样式参考。
不过首先也是最重要的是,您应该在加载文件时监听错误:
thumb_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
thumb_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);