1

独自のクラスに「爆弾」を持ってCCSpriteいます(cocos2dを使っていない人がこれを読むと、CCSpriteはかなりNSObjectです)。

CCSprite ファイルは次のようになります。

Bomb.h: 
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import <OpenAL/al.h>

@class HelloWorldLayer;

@interface Bomb : CCSprite {
    @private
    int length;


}
@property (readwrite) int length;

@end



Bomb.m:
#import "Bomb.h"


@implementation Bomb
@synthesize length = _length;

@end

.h を使用してゲーム レイヤー (HelloWorldLayerプロのように)に追加@class Bomb;し、Bomb.h を HWLayer.m にもインポートします。コードで使用する場所は次のとおりです。

Bomb *bombe = [[Bomb alloc] init];
bombe.position = explosionPoint;
bombe.length = player.explosionLength; //player is another CCSprite class. This one is from the method. ....fromPlayer:(PlayerSprite *)player
//Logging here works, tested and the bombe.position is valid and .length is valid 
[currentBombs addObject:bombe];
NSLog(@"%@",currentBombs); //Here doesn't, guessing crash is at ^

言ったように、それはライン上でクラッシュしaddObject:ます。クラス化されていない CCSprite をBombクラスに置き換えただけなので、その理由はよくわかりません。クラッシュは単なる(lldb)もので、左側のものはこれらのうちの数千を出力します:

ここに画像の説明を入力

これは説明を言っているので、CCSpriteサブクラスにエラーがあると思います。しかし、bombe.* ログは正常に機能しました。

なぜそれが機能しないのか誰かが理解していますか?

編集:

ここに画像の説明を入力

4

2 に答える 2

-1

この方法を試してください:

Bomb *bombe = [Bomb spriteWithFile:@"yourFile.png"];
bombe.position = explosionPoint;
bombe.length = player.explosionLength;
[currentBombs addObject:bombe];
NSLog(@"%@",currentBombs);
于 2013-05-30T11:07:05.597 に答える