扩展C++类时出错(使用 cocos2d-x 框架)



所以,我正在学习一本关于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 找不到我新创建的类,因此它没有构建它。

相关内容

  • 没有找到相关文章

最新更新