在Actionscript 3中直接从库中加载没有类的图像

时间:2013-10-10 13:42:07

标签: image actionscript-3 flash actionscript

我的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;

但这些都不起作用(我相信这些函数用于加载类)

如何在不创建类或从文件系统加载的情况下执行此操作? 或者这甚至可能吗?

3 个答案:

答案 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);
}