我在自己的类中有一个“炸弹” 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
添加到我的游戏层(像专业版一样)中,并将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 ^
如前所述,它在
@class Bomb;
行上崩溃。我真的不明白为什么,因为我只是用addObject:
类替换了未分类的CCSprite。崩溃只是一个
Bomb
,左边的东西输出其中数千个:它说的是描述,所以我假设它在我的CCSprite子类中是错误的。但是轰炸。*记录正常!
有谁知道为什么它不起作用?
编辑:
最佳答案
编辑:
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
的目的。您将为此目的使用
myBomb
: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)
这使您可以从节点中删除,从而有效地添加一些内容,而无需显示任何内容即可添加所需的任何内容,但是在需要时可以轻松完成。
祝好运
关于ios - 将CCSprite(NSObject)添加到MutableArray崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16834431/