0

これは C++ 固有のものである必要があります。

ヘッダー ファイルにプロパティm9ReloadAnimがあり、コンストラクターからアクセスできますが、他の関数からアクセスしようとすると、EXC_BAD_ACCESS などのエラーが発生します。

次のようなヘッダークラ​​スがあります。

#ifndef __SWAT__Weapon__


#define __SWAT__Weapon__

#include "cocos2d.h"

class Weapon : public cocos2d::CCSprite
{
private:
    cocos2d::CCAnimation *m9ReloadAnim = cocos2d::CCAnimation::create();
public:
    Weapon();
    ~Weapon();
    void reloadM9();
};

#endif 

そして、次のようなcppファイル:

enter code here
#include "Weapon.h"
#include "cocos2d.h"


Weapon::Weapon(){ 
 m9ReloadAnim->setDelayPerUnit(1.1f);
}

Weapon::~Weapon(){
}

void Weapon::reloadM9(){
    m9ReloadAnim->setDelayPerUnit(1.1f);

}
4

2 に答える 2

3

次のように変数を初期化できませんでした。

cocos2d::CCAnimation *m9ReloadAnim = cocos2d::CCAnimation::create();

クラス宣言でのみstatic const intinit にすることができます。

この init を ctor に移動します。

Weapon::Weapon()
  : m9ReloadAnim(cocos2d::CCAnimation::create())
{
    m9ReloadAnim->setDelayPerUnit(1.1f);
}

また

Weapon::Weapon()
{
    m9ReloadAnim = cocos2d::CCAnimation::create();
    m9ReloadAnim->setDelayPerUnit(1.1f);
}
于 2013-03-29T14:35:29.183 に答える
0

が壊れて、エラーの発生場所がわからない場合があります。各メソッドのエントリ ポイントにブレークポイントを配置し、コードを 1 行ずつステップ実行して、reloadM9 メソッドでトリガーされていることを確認することをお勧めします。m9ReloadAnim が NULL であるか、初期化時に作成されたオブジェクトを指しているかどうかを確認してください。さらに、ライブラリを適切に使用しているかどうかを確認する必要があります。

于 2013-03-29T14:45:35.840 に答える