я не могу показаться, чтобы получить CCCallFuncO работы с actionWithTarget установлен (JoinedMapsLayer *) self.parentCocos2d: CCCallFuncO с мишенью в качестве родителя
JoinedMapsLayer является родительским узлом, класс спрайта будет добавлен.
Внутри класса спрайтов У меня есть метод:
-(void) playAction:(NSString*)name withMessagePart:(NSString *)messagePart {
id displayMessageBox = [CCCallFuncO actionWithTarget:(JoinedMapsLayer*)self.parent
selector:@selector(displayMessageBox:)
object:[NSString stringWithFormat:messagePart]];
if([name isEqualToString:@"shiver"]){
id a1 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x+2, self.sprite.position.y)];
id a2 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x-4, self.sprite.position.y)];
id a3 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x+4, self.sprite.position.y)];
id a4 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x-2, self.sprite.position.y)];
[self.sprite runAction:[CCSequence actions:a1,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a4,displayMessageBox, nil]];
}
else if([name isEqualToString:@"spin"]){
id a1 = [CCRotateBy actionWithDuration:.5 angle:360];
[self.sprite runAction:[CCSequence actions:a1,displayMessageBox, nil]];
}
}
выполняет действия просто отлично на спрайт, но я стараюсь, чтобы заставить его вызвать метод в родительском узле. У меня есть NSLog там, чтобы проверить, и ничего не происходит. Любые очевидные причины?
В инициализации моего родительского узла класс добавляется изменяемый массив
HummingClass *hummingChar = [[HummingClass alloc] init];
[characterArr addObject:hummingChar]
И доступ к классу позже, как:
HummingClass *hummingChar = [characterArr objectAtIndex:interactionIndex];
Интересно то, что он не откажет с self.parent, поэтому я думаю, что я не правильно указываю на родительский узел. В заголовке объектов У меня есть
#import "JoinedMapsLayer.h"
@class JoinedMapsLayer
редактировать: даже если я регулярный вызов метода, как это, он не будет работать:
[(JoinedMapsLayer*)self.parent displayMessageBox:@"whatever"];