0

我的 Flash 库中有一个图像(称为 sun.png),我想将它直接加载到位图(或等效)的实例中,而不使用 Actionscript 链接并创建它自己的类。

我试过了:

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

和:

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

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

如何在不创建类或从文件系统加载的情况下做到这一点?或者这甚至可能吗?

4

3 回答 3

4

不,这是不可能的。getDefinitionByName就像getDefinition在当前的 ApplicationDomain 中一样,除了其中一个是通过错误而不是返回 null。他们都使用仅查找链接符号。如果您不链接位图,它甚至不会被编译成输出 Flash 影片。

于 2013-10-10T13:46:06.567 回答
0

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

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;
}
于 2013-10-10T14:00:32.597 回答
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);
}
于 2013-10-11T04:13:16.747 回答