Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将CCSprite(NSObject)添加到可变数组崩溃_Ios_Objective C_Cocos2d Iphone_Nsobject_Ccsprite - Fatal编程技术网

Ios 将CCSprite(NSObject)添加到可变数组崩溃

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

我在自己的类中有一个“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
    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)