将CCSprite(NSObject)添加到MutableArray崩溃中

时间:2013-05-30 11:01:27

标签: ios objective-c cocos2d-iphone nsobject ccsprite

我在自己的班级中有一个“炸弹”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;像专业人员)中添加它,然后在我的HWLayer.m中导入Bomb.h以及我在我的地方使用它代码,在这里:

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),左边的东西输出了几千个:

enter image description here

其中说的是描述,所以我认为它在我的CCSprite子类中的错误是。但是炸弹。*日志工作正常!

有谁理解为什么它不起作用?

编辑:

enter image description here

2 个答案:

答案 0 :(得分:0)

编辑:

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

您的%@隐含NSString。 currentBombs可能是一个int。尝试

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

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

为此,您需要使用CCNode

CCNode* node = [CCNode new];

这是一个完整的Cocos2d对象,你可以移动等等。你可以添加你的炸弹,并移动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,有效地添加您可以添加的内容而无需显示任何内容,但是当您需要时,可以轻松完成。

祝你好运

答案 1 :(得分:-1)

尝试这种方法:

Bomb *bombe = [Bomb spriteWithFile:@"yourFile.png"];
bombe.position = explosionPoint;
bombe.length = player.explosionLength;
[currentBombs addObject:bombe];
NSLog(@"%@",currentBombs);