Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haxe flash在bytearray EOF错误中生成原始位图数据_Flash_Bitmap_Bytearray_Eof_Haxe - Fatal编程技术网

Haxe flash在bytearray EOF错误中生成原始位图数据

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;

我有位图字体的XML和原始位图数据。我想获取原始数据并在BitMapData中设置像素,这样我就可以创建我的字体

将haxe与flash库一起使用

每当我运行代码时,都会遇到以下错误:错误:错误#2030:遇到文件结尾。at flash.display::BitmapData/setPixels()


我试图在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