1

在其他平台上,我可以只使用 [Embed(source="logo.gif")] 或 @:bitmap 之类的东西,但对于 Windows/其他 Cpp 平台,似乎没有选择。

我尝试使用EmbedAssets库,但它已经过时了。

我也尝试使用 nmml 文件资源标签。有了这个,我可以将图像作为 haxe.sys.io.Bytes,但要使用我需要将 haxe.sys.io.Bytes 转换为 nme.utils.ByteArray。我还没有找到一种方法来做到这一点。

那么,在部署到 Windows 时,如何在 haxe/nme 项目中嵌入图像?

4

2 回答 2

4

除了openfl.Assets,OpenFL 还支持、 和@:bitmapembed@:sound标签。@:font@:file

前者需要<assets path="to/assets" />在您的项目 XML 文件中,并且在 Windows 上,将文件与您的可执行文件一起复制。

嵌入标签要求您的资产文件根据它们的嵌入方式位于您的源路径中,因此<source path="to/assets" />请在项目文件中使用。

下面是一个使用@:bitmap标签的例子:

package;


import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;

@:bitmap("nme.png") class Image extends BitmapData {}


class Main extends Sprite {


    public function new () {

        super ();

        var bitmap = new Bitmap (new Image (0, 0));
        addChild (bitmap);

        bitmap.x = (stage.stageWidth - bitmap.width) / 2;
        bitmap.y = (stage.stageHeight - bitmap.height) / 2;

    }


}

使用嵌入标签,资产将在您的可执行文件中。

于 2013-06-14T15:55:22.163 回答
0

使用 NME 或 OpenFL,您应该能够调用Assets.getBitmapData("assets/myImg.png");而无需将资产添加到 NMML 文件(尽管您可能需要添加<assets path="Assets" rename="assets"/>或重命名资产目录)。然后,您应该能够将此 bitmapData 添加到显示列表上的位图对象。

例如:

var bd:BitmapData = Assets.getBitmapData("assets/myImg.png");
var bitmap:Bitmap = new Bitmap(bd);
addChild(bitmap);
于 2013-06-13T11:55:01.670 回答