Итак, я следовал учебнику из книги для Android & игра для iOS я использую cocos2d-x v2.2
на OS X 10.8
Я столкнулся с проблемой при расширении CCSprite
учебный класс. Всякий раз, когда я создаю объект из этого класса, проект перестает работать на Android. Затмение отказывается строить это. Я сузил проблему (как описано ниже), но я не знаю, как ее исправить.
GameSprite.h
#ifndef __GAMESPRITE_H__
#define __GAMESPRITE_H__
#include "cocos2d.h"
using namespace cocos2d;
class GameSprite : public CCSprite {
public:
...
GameSprite(void);
~GameSprite(void);
static GameSprite* gameSpriteWithFile (const char* pszFileName);
virtual void setPosition(const CCPoint &pos);
float radius();
};
#endif // __GAMESPRITE_H__
GameSprite.cpp
#include "GameSprite.h"
GameSprite::GameSprite(void) {
_vector = ccp(0,0);
}
GameSprite::~GameSprite(void) {
}
GameSprite* GameSprite::gameSpriteWithFile(const char* pszFileName) {
GameSprite* sprite = new GameSprite();
if (sprite && sprite->initWithFile(pszFileName)) {
sprite->autorelease();
return sprite;
}
CC_SAFE_DELETE(sprite);
return NULL;
}
...
Теперь по моему HelloWorld.cpp
файл, я создаю экземпляр моего GameSprite
Класс следующим образом:
Это заставляет Eclipse выдавать ошибку
GameSprite * player1;
player1 = GameSprite::gameSpriteWithFile("myPic.png");
player1->setPosition(ccp(_screenSize.width*0.5, player1->radius() * 2));
this->addChild(player1);
Это работает безупречно в iOS. Спрайт добавляется на экран в правильном положении. Но когда я пытаюсь построить этот проект для Android с помощью Eclipse, я получаю сообщение об ошибке, в котором говорится: «Ваш проект содержит ошибки. Пожалуйста, исправьте их перед запуском приложения».
Когда я удаляю этот кусок кода (выше) из моего HelloWorld.cpp
файл, приложение работает на Android без проблем.
Насколько я понимаю, существует проблема с методом GameSprite :: gameSpriteWithFile в GameSprite.cpp
файл. Но я не могу понять, в чем проблема и как я могу решить ее.
Любая помощь, ребята?
Спасибо
Я решил это благодаря simonc. Спасибо! 🙂 Я должен был добавить свой GameSprite.cpp
класс к Android.mk
файл. (JNI / hellocpp / Android.mk)
Затмение не смогло найти мой недавно созданный класс, следовательно, оно не создавало его.
Других решений пока нет …