2012-04-17 2 views
0

я не могу показаться, чтобы получить 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"]; 

ответ

0

Я понял это с помощью чего-то ужасных форумов , Если в массив добавлен спрайт, вы должны назначить родительское свойство вручную.

В Инициализировать JoinedMapsLayer я сделать временный указатель на индекс массива:

tempHummingChar.parent = Я;

Смежные вопросы