У меня есть следующий код:
-(void) changeAnimation:(NSString*)name forTime:(int) times {
if(currentAnimation != @"attack")
{
id action = [CCAnimate actionWithAnimation:[self animationByName:name]];
id repeatAction = [CCRepeat actionWithAction:action times:times];
currentAction = [self runAction:repeatAction];
lastANimation = currentAnimation;
currentAnimation = name;
}
else if(currentAction.isDone)
{
//Here is where I would change the animation
//but I commented the code for now
}
}
Поэтому, когда я запускаю это и нажимаю на кнопку, которая изменяет анимацию на «атаку» (вызывая [mysprite changeAnimation: @ «attack» forTime: 1];), Я получаю ошибку EXC_BAD_ACCESS из строки «currentAction.isDone», при следующем вызове функции (джойстик вызовет changeAnimation, чтобы попытаться изменить анимацию на «run» или «idle», но я хочуанимация атаки, чтобы закончить первым).Есть мысли о том, почему я это понимаю?currentAction объявлен в моем классе.
Edit: в остальной части класса нет ничего, что взаимодействует с currentAction, кроме getter.Его объявление находится в формате .h (CCAction * surrentAction).Нужно ли его инициализировать?Я думал, что возвращенное значение из runAction будет достаточно?В любом случае, когда я запускаю отладчик, он не равен nil и ему назначено правильное действие.
Спасибо,
Дейв
Редактировать: в итоге я создал последовательность, когда«атакующий», вызывающий функцию, изменяющую currentAnimation, поэтому я избежал этой проблемы.До сих пор не знаю, что происходит.Вот ответ, если вы заинтересованы: Другое сообщение