0

だから、Android と iOS のゲームの本のチュートリアルに従っていました。cocos2d-x v2.2OS 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 に答える