1
var zip:FZip = new FZip();
zip.load(new URLRequest("xx.obb"));

此代码不起作用。它抛出“未知记录签名:”错误。

你是如何提取 .obb 文件的?

4

2 回答 2

0

如果您的obb文件与任何其他zip文件一样,那么您可以这样对待它。首先,您需要一个要提取的文件列表(可能是您知道的所有文件)。

这是获取文件的一种方法:

 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 文件,在 allWinner A10 处理器上提取最多可能需要 3 分钟。直接加载意味着它可以立即获取文件。而且几乎没有延迟。

于 2012-12-29T16:06:06.363 回答
0

那你需要读吗?如果要加载游戏,我认为这是加载它的好方法,因此最好从特定路线加载它

例如:sdcard/android/obb/filename.obb

于 2012-12-27T05:01:33.123 回答