Ios 将CCSprite(NSObject)添加到可变数组崩溃
我在自己的类中有一个“bomb”Ios 将CCSprite(NSObject)添加到可变数组崩溃,ios,objective-c,cocos2d-iphone,nsobject,ccsprite,Ios,Objective C,Cocos2d Iphone,Nsobject,Ccsprite,我在自己的类中有一个“bomb”CCSprite(如果不使用cocos2d的人读到这个,CCSprite几乎就是一个NSObject) CCSprite文件如下所示: Bomb.h: #import <Foundation/Foundation.h> #import "cocos2d.h" #import <OpenAL/al.h> @class HelloWorldLayer; @interface Bomb : CCSprite { @private
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
如上所述,它在addObject:
行崩溃。我真的不明白为什么,因为我只是用炸弹类替换了一个未分类的CCSprite。
崩溃只是一个(lldb)
,左边的东西输出了几千个:
上面写着描述,所以我假设它在我的CCSprite子类中是错误的。但是炸弹,伐木很好
有人知道它为什么不起作用吗
编辑:
尝试以下方法:
Bomb *bombe = [Bomb spriteWithFile:@"yourFile.png"];
bombe.position = explosionPoint;
bombe.length = player.explosionLength;
[currentBombs addObject:bombe];
NSLog(@"%@",currentBombs);
编辑:
您的%@表示NSString
。当前炸弹可能是一个整数。试试看
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
,有效地实现了无需显示任何内容就可以添加任何内容的功能,但如果需要,可以轻松完成
祝你好运我其实不希望它有图像,但我还是尝试了,结果还是崩溃了。这看起来像CCSprite描述方法中的“无限”递归。如果将调试导航器底部的滑块放在最右边,以便显示所有帧,则可能会发现问题。@MartinR耶!看看这个编辑过的问题,它还告诉你什么吗?它看起来确实像一个无限递归。你可以发布方法:-[CCSprite description]
和(如果你已经实现了它)-[Bomb description]
?Currentbombs是一个NSMurableArray;)Edt:将其子类化为CCNode使其停止崩溃。将调查功能是否保留-1您的%@字符串。currentBombs很可能是一个int
:两者都错了。@Mar0ux有更好的方法记录数组吗?我总是使用%@%@
暗示id
/Objective-C对象(而不是NSString
)来完成它。这是记录数组或任何其他Obj-C对象的正确方法。@Mar0ux啊,你刚才跟他谈过。我理解。布莱恩,这把它修好了,我学到了一些新东西,一切都很好!
CCNode* node = [CCNode new];
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)