使用cocos2d-x加载zip时崩溃

时间:2013-01-23 21:50:45

标签: android cocos2d-x

我在android上使用cocos2d-x时遇到问题。 我正在尝试使用

加载.zip文件
CCFileUtils::sharedFileUtils()->getFileDataFromZip(...)

由于这个项目设计为多平台,我们也在iPad3上尝试了这个代码,并且在那里工作没有问题。 问题是应用程序在加载zip文件时会出现Segmentation Fault。

以下是包含一些额外注释的整个代码

void Map::loadChunk(int index, CCPoint startPoint) {
    chunks[index]->startPoint = startPoint;
    std::stringstream filename;
    filename << (int)startPoint.x << "_" << (int)startPoint.y << ".map";

    unsigned long filesize = 0;
    const char* path = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath("map1.zip");

    CCLog(path);
    CCLog(filename.str().c_str());

    // In the following two lines the error occurs
    const char* buffer =(const char*) CCFileUtils::sharedFileUtils()->getFileDataFromZip(path, filename.str().c_str(), &filesize);    
    std::istringstream fileBuffer(buffer);


    CCLog("filesize %d", (int)filesize);
    std::string line;

    // Here some code follows but this code does not produce the problem so I left it out

}

使用的包括:

#include <iostream>
#include <fstream>
#include <sstream>
#include <map>

#include "cocos2d.h"

路径文件名的值为 map1.zip -128_-128.map

map1.zip位于assets文件夹中,.map文件存在于map1.zip

提前致谢

1 个答案:

答案 0 :(得分:0)

我已经弄明白为什么这不起作用了。

将另一个.zip包装到.apk中似乎是个问题。 在

收到的文件夹中播放.zip时
CCFileUtils::sharedFileUtils()->getWriteablePath()

然后用

打开zip
CCFileUtils::sharedFileUtils()->getFileDataFromZip(...)

zip正确加载,我能够从zip内部读取某些文件。