Haxe flash在bytearray EOF错误中生成原始位图数据
我有位图字体的XML和原始位图数据。我想获取原始数据并在BitMapData中设置像素,这样我就可以创建我的字体 将haxe与flash库一起使用 每当我运行代码时,都会遇到以下错误:错误:错误#2030:遇到文件结尾。at flash.display::BitmapData/setPixels()Haxe flash在bytearray EOF错误中生成原始位图数据,flash,bitmap,bytearray,eof,haxe,Flash,Bitmap,Bytearray,Eof,Haxe,我有位图字体的XML和原始位图数据。我想获取原始数据并在BitMapData中设置像素,这样我就可以创建我的字体 将haxe与flash库一起使用 每当我运行代码时,都会遇到以下错误:错误:错误#2030:遇到文件结尾。at flash.display::BitmapData/setPixels() 我试图在haxe中使用此技术,但失败了: 我真的不知道是什么问题。 我没有包括下面所有的位图数据,因为它太大了,但是有310个条目 import flash.display.BitmapData;
我试图在haxe中使用此技术,但失败了: 我真的不知道是什么问题。 我没有包括下面所有的位图数据,因为它太大了,但是有310个条目
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
你是说位图数据有310个元素吗?它需要有
BITMAP_WIDTH * BITMAP_HEIGHT = 8192
您的代码提出了其他问题(为什么位图_数据是浮点向量,而不是整数数组?为什么不嵌入图像?),但这似乎是下溢的原因。对于haxe,您需要安装格式包:
我的问题还在于,我的机器上没有安装最新版本的OpenFL库。出于某种原因,haxe不接受它作为int数组!我试图减少字体的内存占用,所以我不想在我的项目中包含字体PNG。为什么位图数据需要310个元素。我试图从代码中构造一个图像。我试图在haxe中使用这种技术,但失败了:宽度*高度是8192。128*64.该方法中的解压非常关键——我没有检查,但我猜您示例中给出的数组解压为8192字节的数组。
public function get_texture() : BitmapFont {
var bmpData : BitmapData = new BitmapData( BITMAP_WIDTH, BITMAP_HEIGHT );
var bmpBytes : ByteArray = new ByteArray();
var numBytes : Int = BITMAP_DATA.length;
bmpBytes.position = 0;
for ( i in 0...numBytes ) {
bmpBytes.writeUnsignedInt( Std.int( BITMAP_DATA[i] ) );
}
bmpBytes.position = 0;
//bmpBytes.uncompress();
bmpData.setPixels( new Rectangle( 0, 0, BITMAP_WIDTH, BITMAP_HEIGHT ), bmpBytes );
return new BitmapFont().loadAngelCode( bmpData, XML_DATA );
}
BITMAP_WIDTH * BITMAP_HEIGHT = 8192