パーティクルシステムエディタでも非常によく似た処理を行いました。Cocos2Dplistファイルの読み取りをサポートしています。plistファイルにはテクスチャデータがあります。これは、gzipで圧縮されてからbase64に変換されたpngです。これが私がそれをする方法です:
var input = 'byu9g1RZpINUpVtoKoiKIqJYoris...'; // really long string
// from base64 to ascii binary string
var decodedAsString = atob(input);
// ascii string to bytes in gzipped format
var data = this._binaryStringToArray(decodedAsString);
// raw, uncompressed, binary image data into an array using gzip.js
var uncompressed = require('gzip-js').unzip(data);
// now take the raw uncompressed png and convert it
// back to base64 to use it as a data url
var asString = this._arrayToBinaryString(uncompressed);
var encodedForDataUrl = btoa(asString);
var img = new Image();
img.src = encodedForDataUrl;
私はgzip.jsを使用して手間のかかる作業を行っています。ここでこれらすべての動作を確認できます。ここでいくつかのplistをロードできます。BoilingFoam.plistは機能します。「インポート/エクスポート」セクションにロードするだけです。
上記のコードでは、2つのメソッドを呼び出します。ここでは、次のようになります。
_binaryStringToArray: function(binaryString) {
var data = [];
for (var i = 0; i < binaryString.length; ++i) {
data[i] = binaryString.charCodeAt(i);
}
return data;
},
_arrayToBinaryString: function(array) {
var str = '';
for (var i = 0; i < array.length; ++i) {
str += String.fromCharCode(array[i]);
}
return str;
},
シバン全体がここにあります