【问题标题】:Haxe flash build raw bitmap data in bytearray EOF errorHaxe flash 在 bytearray EOF 错误中构建原始位图数据
【发布时间】:2014-03-11 18:54:11
【问题描述】:

我有位图字体的 XML 和原始位图数据。我想获取原始数据并在 BitMapData 中设置像素,以便制作我的字体。

在 flash 库中使用 haxe。

每当我运行我的代码时,我都会不断收到此错误:错误:错误 #2030:遇到文件结尾。在 flash.display::BitmapData/setPixels()

我正在尝试在 haxe 中使用这种技术,但失败了:https://github.com/PrimaryFeather/Starling-Framework/blob/master/starling/src/starling/text/MiniBitmapFont.as

我真的不知道问题是什么。 我没有包括下面的所有位图数据,因为它太大但有 310 个条目。

import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

...

private var BITMAP_WIDTH : Int = 128;
private var BITMAP_HEIGHT : Int = 64;

private var BITMAP_DATA : Array<Float> = [ 
        2027613533, 3413039936,  202148514, 2266925598, 4206886452, 4286853117,    2034947, 
        3202703399,  352977282, 2957757964, 3113652880, 2158068882, 1468709156, 2268063717, 
        2779310143, 2101025806, 3416509055, 4215794539, 3602168838, 1038056207, 1932393374 ];

...

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 );
}

【问题讨论】:

    标签: flash bitmap bytearray eof haxe


    【解决方案1】:

    你是说BITMAP_DATA 有 310 个元素吗?它需要有

    BITMAP_WIDTH * BITMAP_HEIGHT = 8192
    

    您的代码引发了其他问题(为什么 BITMAP_DATA 是浮点向量,而不是整数数组?为什么不嵌入您的图像?),但这似乎是下溢的根源。

    【讨论】:

    • 出于某种原因,haxe 不会接受它作为 Ints 数组!我正在尝试减少字体的内存占用,所以我不想在我的项目中包含字体 png。为什么位图数据需要 310 个元素。我正在尝试从代码构建图像。
    • 我正在尝试在 haxe 中使用这种技术,但它失败了:github.com/PrimaryFeather/Starling-Framework/blob/master/…
    • WIDTH*HEIGHT 为 8192. 128*64。
    • 该方法中的解压缩很关键——我没有检查过,但我猜你的示例中给出的数组解压缩为一个 8192 字节的数组。
    【解决方案2】:

    haxe需要安装格式包:http://www.openfl.org/archive/community/general-discussion/what-if-format-compile-time-constant-about-flashutilsbytearray/

    另外我的问题是我的机器上没有安装最新版本的 OpenFL 库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      相关资源
      最近更新 更多