报错的图片在附件里面,我把项目里面其中三个文件剔除,项目不会报错,加上那三个文件就会报错,我觉着问题就在那三个文件里面。真心求大神帮我看看啊,我熬到现在。。。。。。。。。。。。。。。。。。。。。。。。。。。哎
三个文件的代码,我会贴出来
LevelData.h 文件
#ifndef MemoryCard_LevelData_h
#define MemoryCard_LevelData_h
struct LevelData{
int rows; //行数
int columns; //列数
int loss; //损耗
};
MermoryCardLevel.h文件
#ifndef __MemoryCard__MemoryCardLevel__
#define __MemoryCard__MemoryCardLevel__
#include
#include "cocos2d.h"
#include"LevelData.h"
#include
#include "Card.h"
USING_NS_CC;
class MemoryCardLevel:public Layer{
//关卡数据
LevelData _levelData;
std::vector<std::vector> _cardTable;
//剩余卡片
int _unfinishedCard;
public:
MemoryCardLevel();
virtual ~MemoryCardLevel();
static MemoryCardLevel* create(LevelData levelData);
virtual bool initWithLevelData(LevelData levelData);
protected:
void initCardLayout();
};
#endif
MermoryCardLevel.cpp文件
#include "MemoryCardLevel.h"
#include "CardFactory.h"
MemoryCardLevel::MemoryCardLevel()
{
}
MemoryCardLevel::~MemoryCardLevel()
{
this->removeAllChildren();
}
MemoryCardLevel* MemoryCardLevel::create(LevelData levelData)
{
MemoryCardLevel *cl=new MemoryCardLevel();
if (cl && cl->initWithLevelData(levelData)) {
cl->autorelease();
return cl;
}
CC_SAFE_DELETE(cl);
return nullptr;
}
bool MemoryCardLevel::initWithLevelData(LevelData levelData)
{
if (Layer::init() == false){
return false;
}
if ((levelData.rows*levelData.columns) % 2 != 0){
return false;
}
_levelData=levelData;
initCardLayout();
return true;
}
void MemoryCardLevel::initCardLayout()
{
//产生随机的颜色
int backId = CCRANDOM_0_1() * 8;
//初始化卡片table
for (int row = 0; row < _levelData.rows; ++row) {
std::vector r(_levelData.columns);
_cardTable.push_back(r);
}
//初始化卡片并填充到卡片数组
CardFactory factory;
int number = 0;
for (int row = 0; row < _levelData.rows; ++row) {
for (int column = 0; column < _levelData.columns; column++)
{
//创建卡片
Card* card = dynamic_cast(factory.createCard(backId, number / 2));
card->getCardData()->row = row;
card->getCardData()->column = column;
number++;
//设置卡片坐标
int space = 20;//间距
auto cardSize = card->getContentSize();
card->setPosition(Vec2(
(cardSize.width + space)*column + cardSize.width / 2,
(cardSize.height + space)*row + cardSize.height / 2
));
_cardTable = card;
//添加至显示列表
this->addChild(card);
//设置图层大小
if (column == _levelData.columns - 1 && row == _levelData.rows - 1) {
this->setContentSize(Size(
(cardSize.width + space)*column + cardSize.width,
(cardSize.height + space)*row + cardSize.height
));
}
}
}
this->_unfinishedCard = number;
}
#endif
```