2013-10-10 27 views
0

我有我的Flash库中的图像(称为sun.png),我想直接加载到一个位图的实例(或等效),而无需使用Actionscript链接和创建自己的班级。直接从库中没有类加载图像在ActionScript 3

我曾尝试:

var sun:Bitmap = flash.utils.getDefinitionByName("sun.png") as Bitmap; 

和:

var sun:Bitmap = this.loaderInfo.applicationDomain.getDefinition("sun.png") as Bitmap; 

但这些都不能工作(我相信这些功能用于加载类)

我怎样才能做到这一点没有的从文件系统创建一个类或加载? 或者这甚至可能吗?

回答

4

不,这是不可能的。 getDefinitionByName就像当前ApplicationDomain中的getDefinition,除了其中一个通过错误而不是返回null。 它们都只用于找到链接的符号。如果你不链接位图,它甚至不会被编译到输出Flash电影中。

+0

我想我得坚持使用图片来自文件系统,然后 –

0

您可以在静态对象中创建一些别名,例如: 您可以定义它们一次,然后根据需要多次使用对象。在位图的情况下,获取位图后,请在新的位图()中使用位图数据,因为您需要对同一位图数据使用更多不同的引用。

class Refs 
{ 
    public static const PNG_0 : Bitmap= flash.utils.getDefinitionByName("com.example.MyImage") as Bitmap; 
    public static const PNG_1 : Bitmap= flash.utils.getDefinitionByName("com.example.OtherImage") as Bitmap; 
} 
0

什么,我想你想做的事:第一,确保图像文件在同一文件夹中FLA文件(没有必要把它在库)。那么你可以通过编写此得到位图:

import flash.display.Bitmap; 
import flash.display.BitmapData; 
import flash.events.Event; 
import flash.net.URLRequest; 

bitmap:Bitmap; 
ldr = new Loader(); 
ldr.load(new URLRequest ("sun.png")); 
ldr.contentLoaderInfo.addEventListener (Event.COMPLETE, onloaded); 

function onloaded (e:Event):void { 
e.target.removeEventListener (Event.COMPLETE, onloaded); 
bmd = new BitmapData (ldr.width, ldr.height); 
bmd.draw (ldr.content); 
bitmap = new Bitmap (bmd); 
}