var zip:FZip = new FZip();
zip.load(new URLRequest("xx.obb"));
このコードは機能しません。「不明なレコードの署名:」エラーがスローされます。
.obbファイルをどのように抽出しましたか?
var zip:FZip = new FZip();
zip.load(new URLRequest("xx.obb"));
このコードは機能しません。「不明なレコードの署名:」エラーがスローされます。
.obbファイルをどのように抽出しましたか?
あなたのobb
ファイルが他のzip
ファイルと同じであるなら、あなたはそれをそのように扱うことができます。まず、抽出するファイルのリストが必要になります(知っているすべてのファイルである可能性があります)。
ファイルを取り出す1つの方法は次のとおりです。
private function obbFileUnpackingRoutine(event:Event):void{
addChild(obbUnpackScreen);
obbUnpackScreen.obbProgress.scaleX = zipCount/filesToUnpack.length;
setChildIndex(obbUnpackScreen, numChildren -1);
for (var i:uint = 0; i<24; i++){
if (zipCount == filesToUnpack.length){
zipDone = true;
removeEventListener(Event.ENTER_FRAME, obbFileUnpackingRoutine);
removeChild(obbUnpackScreen);
var fr:FileStream=new FileStream();
var str:String = File.applicationStorageDirectory.nativePath;
var cacheDir= new File(str +"/YourSettings");
fr.open(cacheDir.resolvePath("isObbUnpacked.pnr"),FileMode.WRITE);
fr.writeObject([zip.getFileCount(),zipCount]);
fr.close();
return
}
var file:FZipFile = zip.getFileByName(filesToUnpack[zipCount])
var cacheDir:File= null;
var str:String = File.applicationStorageDirectory.nativePath;
cacheDir= new File(str);
var fileContents = file.content
var fr:FileStream=new FileStream();
fr.open(cacheDir.resolvePath(file.filename),FileMode.WRITE);
fr.writeBytes(fileContents);
fr.close();
zipCount++;
}
}
メモリが許せば、ファイルをzipファイルから直接ロードして、解凍する必要がないようにすることができます。もちろん、urlRequestでのみアクセスできるファイルはすべて抽出する必要がありますが、byteArraysを使用してpngファイル、mp3ファイル、および独自のカスタムファイルをロードできます。
私のobbファイルには何千もの小さなmp3ファイルがあり、allWinnerA10プロセッサで抽出するのに最大3分かかる場合があります。直接ロードとは、ファイルを即座に取得できることを意味します。そして、ほとんど遅延はありません。
そのようにあなたはそれを読む必要がありますか?ゲームをロードするならロード方法が良いと思うので特定のルートからロードした方が良いと思います
例: sdcard/android/obb/filename.obb