1

AS3 を使用して、TMX ファイル内のデータ要素の Base64 コンテンツをデコードしようとしています。mx.utils.Base64Decoderコンテンツをデコードするために使用しています。

エンコードなしの 1x1 レイヤー データを次に示します (エンコードされたデータが XML 形式かどうかはわかりません)。

<tile gid="1"/>

エンコードされた私のレイヤーは次のとおりです。

AQAAAA==

データをデコードしようとすると、戻り値が空です。オンライン Base64 デコーダーでデータをデコードしようとしましたが、空の値も表示されました。

4

1 に答える 1

1

Base64 でエンコードされたデータはバイナリで、各 8 バイトは 32 ビットの符号なしリトル エンディアン グローバル タイル ID です (ケース 1)。したがって、デコードされたデータは文字列として直接表すことはできません。

あなたの場合のデータのバイト値は次のようになります。

1 0 0 0

1 の ASCII 値は SOH (見出しの開始) を意味する制御文字であり、0 は一般に文字列の終わりを示すために使用されるため、これを印刷しようとしても何も表示されません。代わりに、次のように、これらのバイトを 32 ビットの符号なしグローバル タイル 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 に答える