在部署到Windows时embedded和读取图像资产

在其他平台上,我可以使用像[Embed(source =“logo.gif”)]或@:bitmap,但似乎没有selectWindows /其他Cpp平台。

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

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

那么,当部署到Windows时,我可以做些什么来将图像embedded到haxe / nme项目中?

除了openfl.Assets ,OpenFL还支持@:bitmap@:sound@:font@:file嵌入标签。

前者需要项目XML文件中的<assets path="to/assets" /> ,并在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; } } 

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

使用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);