-(id) init
{
if( (self=[super init])) {
_targets = [[NSMutableArray alloc] init];
temp = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4",nil];
tempArray = [[NSMutableArray alloc] initWithArray:temp];
resultArray = [[NSMutableArray alloc] init];
[self thelogic];
}
return self;
}
-(void)thelogic
{
int i;
int count = 4;
for (i = 0; i < 3; i ++) {
int index = arc4random() % (count - i);
[resultArray addObject:[tempArray objectAtIndex:index]];
CCSprite *target = [CCSprite spriteWithFile:[NSString stringWithFormat:@"%@.png", [tempArray objectAtIndex:index]]];
target.tag = [[NSString stringWithFormat:@"%@",[tempArray objectAtIndex:index]] integerValue];
[self addChild:target];
[_targets addObject:target];
[tempArray removeObjectAtIndex:index];
}
}
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[_targets removeAllObjects];
[self thelogic];
}
从上面的代码中,我得到三个不同的数字,当他们进入这个场景时,他们制作了三个具有不同图像的精灵,我想要触摸屏幕,三个旧的精灵将被删除,三个新的精灵将会显示,但是up代码总是崩溃,所以我该如何解决?感谢
答案 0 :(得分:1)
很难理解您在theLogic
方法中尝试做什么,但我建议您更换
int index = arc4random() % (count - i);
与
int index = arc4random() % [tempArray count];
这将解决崩溃问题,但我怀疑您的程序是否会按预期运行。实际上,您只在init方法中填充tempArray
;第一次调用theLogic
将删除它的所有元素,据我所知,数组不再填充。因此,当您调用ccTouchesBegan
然后调用theLogic
时,tempArray将为空。
很抱歉,如果我错过任何积分。