Как я могу получить доступ к цели runAction с помощью функции обратного вызова? - PullRequest
0 голосов
/ 14 марта 2012

У меня есть следующий код:

    id enterRight = [CCMoveBy actionWithDuration:1.5f position:ccp(-600, 0)];
    id exitLeft = [CCMoveBy actionWithDuration:1.5f position:ccp(-600, 0)];
    id reset = [CCMoveBy actionWithDuration:0 position:ccp(1200, 0)];
    id actionCallFunc = [CCCallFunc actionWithTarget:self selector:@selector(cleanPatterns)];

    id seq1 = [CCSequence actions: [[exitLeft copy] autorelease],
    [[actionCallFunc copy] autorelease], [[reset copy] autorelease],
    [[enterRight copy] autorelease],  nil];


    [sprite runAction: [CCRepeatForever actionWithAction:[seq1 copy]]];      

Я хочу, чтобы моя функция обратного вызова cleanPatterns могла ссылаться на объект 'sprite'.

Есть ли какой-нибудь метод, с помощью которого метод может определить, с каким объектом происходит действие runAction?

1 Ответ

1 голос
/ 15 марта 2012

Как упомянул Ultrakorne в своем комментарии, вы можете получить доступ к целевому объекту непосредственно в обратном вызове, если определите его следующим образом:

-(void) cleanPatterns:(id)sender 
{
    // sender is your target object
    CCSprite *sprite = (CCSprite *)sender;

    // Then do something to your sprite...
} 

Вернувшись туда, где вы определили свой actionCallFunc ,не забудьте добавить двоеточие за cleanPatterns, поскольку ваш метод обратного вызова теперь принимает один аргумент:

id actionCallFunc = [CCCallFuncN actionWithTarget:self selector:@selector(cleanPatterns:)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...