所以,我正在学习一本关于Android和iOS游戏的书中的教程。我在 OS X 10.8 上使用cocos2d-x v2.2
我在扩展CCSprite
类时遇到了一个问题。 每当我从此类创建对象时,项目都会停止在 Android 上运行。Eclipse拒绝建造它。我已经缩小了问题的范围(如下所述),但我不知道如何解决它。
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中完美运行。角色被添加到屏幕的正确位置。但是当我尝试使用 Eclipse 为 android 构建此项目时,我收到一条错误消息:"您的项目包含错误。请在运行应用程序之前修复它们"。
当我从HelloWorld.cpp
文件中删除这段代码(上图)时,该应用程序在Android上运行没有任何问题。
据我所知,GameSprite.cpp
文件中的GameSprite::gameSpriteWithFile方法存在问题。但是我无法弄清楚问题是什么以及如何解决它。
有什么帮助吗?
谢谢
多亏了simonc,我解决了它。谢谢!:)我不得不将我的GameSprite.cpp
类添加到Android.mk
文件中。(jni/hellocpp/Android.mk)
Eclipse 找不到我新创建的类,因此它没有构建它。