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

我将它添加到我的游戏层(HelloWorldLayer如专业人士)@class Bomb;中,并使用 .h,并将 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:在线上崩溃。我真的不明白为什么,因为我只是用一个Bomb类替换了一个未分类的 CCSprite。崩溃只是一个(lldb),左边的东西输出了几千个:

在此处输入图像描述

其中说描述,所以我会假设它在我的 CCSprite 子类中是错误的。但是炸弹。*记录工作正常!

有谁明白为什么它不起作用?

编辑:

在此处输入图像描述

4

2 回答 2

0

编辑:

NSLog(@"%@",currentBombs); //Here doesn't, guessing crash is at ^

你的 %@ 暗示NSString。currentBombs 可能是一个整数。尝试

NSLog(@"%i",currentBombs); //Here doesn't, guessing crash is at ^

CCSprite需要纹理。你可以(也许?)CCSprite没有一个,但这不是CCSprite目的。

您将要用CCNode于此目的:

CCNode* node = [CCNode new];

这是一个成熟的 Cocos2d 对象,您可以移动等。您可以将 Bomb 添加到其中,然后移动 CCNode,如下所示:

Bomb *myBomb = [Bomb new]; //or whatever
CCNode* bombNode = [CCNode new];

//add the bomb to the node
[bombNode addChild:myBomb];

//move the node
bombNode.position = CGPointMake(10, 20)

这使您可以myBomb从节点中删除,有效地拥有可以添加任何内容而无需显示任何内容的内容,但是当您需要时,可以轻松完成。

祝你好运

于 2013-05-30T11:14:20.683 回答
-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 回答