我有一个方法,从数组中选择一个随机精灵节点放在屏幕上。我的应用程序崩溃了。这是错误消息的片段:
* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFConstantString decodeObjectForKey:]:无法识别的选择器发送到实例0x47b4'
这是我写出来的方法。
-(SKSpriteNode *) gamePieces {
NSArray *things = [NSArray arrayWithObjects: @"piece1", @"piece2", @"piece3", nil];
int r = arc4random () % [things count];
SKSpriteNode *randomObject = [[SKSpriteNode alloc] initWithCoder:[things objectAtIndex:r]];
return randomObject;
}
关于问题是什么的任何想法?
答案 0 :(得分:0)
正如@HotLicks和@ LearnCocos2d已经提到的那样,-initWithCoder:
在这里不合适。从头开始创建新的SKSpriteNode通常使用其中一个指定的初始值设定项(+spriteNodeWithColor:size:
,+spriteNodeWithImageNamed:
或spriteNodeWithTexture:
)完成。假设您只想创建一个带有随机图像的SKSpriteNode,请查看以下代码。
- (SKSpriteNode *) randomGamePiece {
NSArray *filename = [NSArray arrayWithObjects: @"piece1", @"piece2", @"piece3", nil];
int r = arc4random () % [things count];
NSString * randomFilename = [things objectAtIndex:r];
SKSpriteNode *randomObject = [SKSpriteNode spriteWithImageNamed:randomFilename];
return randomObject;
}
我全心全意地建议浏览Sprite Kit Programming Guide,其中包含许多有用的新片段和中级Sprite Kit程序员片段和指针。