如何将动态图像资产加载到Adobe AIR

问题描述:

我正在处理的应用程序在一个点上显示四个随机图像。这四幅图像来自一组50幅图像。如果这是一个标准的Flex项目,我只想设置img.source属性:如何将动态图像资产加载到Adobe AIR

this.img1.source ="../assets/img/"+randomname+".png";` 

这不,虽然工作,我得到一个破碎的形象。另一种方式去了解它是加载对于URLLoader,这也是不加载图像的图像(勿庸置疑的,因为它是一个本地资产)

loader = new Loader(); 
var urlReq:URLRequest = new URLRequest("../assets/img/"+randomname+".png"); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); 
loader.load(urlReq) 

所以这是不工作要么,我我想把所有的图像加载到一个swc中,然后将swc链接到项目中。这显然不是很好,因为所有资产都在运行时加载到内存中。有没有另外一种方法呢?

我希望我失去了一些非常简单的东西。

如果.swc解决方案是最好的解决方案,有人能指出我正确的方向吗?我忘了整个业务是如何运作的,因为我已经使用Flex/Flash已经有几年了。

在此先感谢

+0

'URLLoader'会从文件系统中加载一个文件。您的图片可能有不正确的网址。项目的“src”文件夹中的“assets”文件夹在哪里? – NoobsArePeople2 2012-07-12 03:54:24

+0

“资产”文件夹与“src”文件夹处于同一级别。我已经使用“../assets/img”和“assets/img”作为文件路径开头的URLLoader。我得到一个错误#2044:未处理的IOErrorEvent :. text =错误#2035:找不到网址.'错误 – cside23 2012-07-12 23:41:33

+0

您是否正在使用Flash Builder执行此操作?资产文件夹是否被复制到bin-debug文件夹中? – NoobsArePeople2 2012-07-13 00:41:59

你可以试试:

var urlReq:URLRequest = new URLRequest("assets/img/"+randomname+".png"); 
+0

感谢您的回复迈克尔。不幸的是,这似乎并不奏效。 'assets'和'src'文件夹位于同一级别,并且作为'URLRequest'参数的“assets/img”和“../assets/img”都会给出错误#2044:未处理的IOErrorEvent :. text =错误#2035:URL Not Found.'错误,这就是为什么我认为Air可能无法加载本地文件(至少简单地说)。有任何想法吗? – cside23 2012-07-12 23:44:00

+0

我可以获取该文件,但我的资产文件夹位于src文件夹下。或者你可以尝试输入完整的路径,例如。 “c:/”+你的项目的路径+“/ assets/img /”+ randomname +“。png”。 “项目路径”与窗口环境中的“用户/用户名/ Adob​​e Flash Builder 4.6 /您的项目名称”类似。 – michael 2012-07-13 00:07:37

您应该添加您的资产目录是 “源” 目录。

然后,您应该知道资产目录的内容将被复制到您的应用程序的根目录。所以当你有图像“assets/interface/bg.png”时,你应该使用新的URLRequest(“interface/bg.png”)加载它。