我的Flash库中有一个图像(名为sun.png),我想直接将它加载到Bitmap(或等效的)实例中,而不使用Actionscript链接并创建自己的类。
我试过了:
var sun:Bitmap = flash.utils.getDefinitionByName("sun.png") as Bitmap;
和
var sun:Bitmap = this.loaderInfo.applicationDomain.getDefinition("sun.png") as Bitmap;
但这些都不起作用(我相信这些函数用于加载类)
如何在不创建类或从文件系统加载的情况下执行此操作? 或者这甚至可能吗?
答案 0 :(得分:4)
getDefinitionByName
与当前ApplicationDomain中的getDefinition
类似,除了其中一个错误而不是返回null。
两者都用于仅查找链接符号。如果你没有链接位图,它甚至不会编译成输出flash影片。
答案 1 :(得分:0)
您可以在静态对象中创建一些别名,例如: 您可以定义它们一次,然后根据需要多次使用对象。在Bitmaps的情况下,在获得位图后,在新的Bitmap()中使用bitmapdata,因为您需要使用相同的bitmapData进行更多不同的引用。
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;
}
答案 2 :(得分: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);
}