Отправитель cocos2d V3 в CCActionCallBlock

Как и в cocos2d V2, я хочу узнать отправителя в CCActionCallBlock.

id callFunc = [CCCallFuncN actionWithTarget:self selector:@selector(finishSeq:)]; //V2 style
id sequence = [CCSequnece actions: move, callFunc, nil];
[ship runAction:squence];

-(void) finishSeq: (id) sender {
          CCSprite* sprite = (CCSprite*) sender;
          sprite.opacity = 150;
}

Теперь в cocos2d V3 я должен использовать блок и заменить callFunc:

id callFunc = [CCActionCallBlock actionWithBlock:^{
      //how do I know the sender to change it's opacity ??
 }]

В данном случае я знаю, что это "корабль", но я хочу использовать последовательность для разных объектов.


person user3675160    schedule 26.05.2014    source источник
comment
поскольку вы выдаете runAction на предполагаемом узле, у вас есть этот узел в области видимости, поэтому ваш блок может его использовать. То есть в цикле for, где вы получаете узлы из массива для запуска действия с блоком вызова, текущий перечисляемый узел — это тот, который вам нужно использовать в блоке. Блок запоминает, с каким экземпляром узла он был создан при перечислении.   -  person LearnCocos2D    schedule 26.05.2014


Ответы (1)


Просто добавьте код, который раньше был в вашем методе finishSeq:, в блок, например:

id callFunc = [CCActionCallBlock actionWithBlock:^{
      ship.opacity = 150;
}];

id sequence = [CCSequnece actions: move, callFunc, nil];

[ship runAction:sequence];
person lucianomarisi    schedule 26.05.2014