0

因此,我正在学习一本关于 Android 和 iOS 游戏的教程。我cocos2d-x v2.2在 OS X 10.8 上使用

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 方法存在问题。但我无法弄清楚问题是什么,我该如何解决它。

有帮助吗?

谢谢

4

1 回答 1

0

感谢simonc我解决了它。谢谢!:) 我不得不将我的GameSprite.cpp课程添加到Android.mk文件中。(jni/hellocpp/Android.mk)

Eclipse 找不到我新创建的类,因此它没有构建它。

于 2013-10-19T18:24:29.050 回答