1

我一直在尝试使用 AS3 解码 TMX 文件中数据元素的 Base64 内容。我mx.utils.Base64Decoder用来解码内容。

这是我没有编码的 1x1 层数据(我不确定编码数据是否为 ​​XML 格式):

<tile gid="1"/>

这是我的层编码:

AQAAAA==

当我尝试解码数据时,返回值为空。我尝试使用在线 Base64 解码器解码数据,但也显示为空值。

4

1 回答 1

1

base64 编码的数据是二进制的,其中每 8 个字节是一个 32 位无符号 little-endian 全局切片 ID,在您的情况 1 中。因此,解码后的数据不能直接表示为字符串。

在您的情况下,数据的字节值将是:

1 0 0 0

由于 1 的 ASCII 值是表示 SOH(标题开始)的控制字符,而 0 通常用于标记字符串的结尾,因此当您尝试打印时不会显示任何内容。您应该将这些字节组合到 32 位无符号全局 tile id,如下所示:

unsigned global_tile_id = data[tile_index] |
                          data[tile_index + 1] << 8 |
                          data[tile_index + 2] << 16 |
                          data[tile_index + 3] << 24;

有关更多详细信息和完整示例代码,请参阅TMX 格式参考:

于 2015-05-28T08:50:33.987 回答