Доступ к действию по тегу в Cocos2D - PullRequest
1 голос
/ 28 декабря 2011

У меня есть действие, которое я объявил в методе -init.

  -(id) init
{
        if( (self=[super init])) {
            sprite = [CCSprite spriteWithFile:@"Icon@2x.png"];
            sprite.position = ccp(150,150);
            [self addChild:sprite];
            sprite.tag = 13;
            self.isTouchEnabled = YES;

            CCAction *anAction = [CCBlink actionWithDuration:5 blinks:10];
            anAction.tag = 15;
    }
    return self;
}

Теперь я могу получить доступ к спрайту без проблем.

-(void)ccTouchesBegan:(NSSet *)touch withEvent:(UIEvent *)event {

CCNode *node = [self getChildByTag:13];
NSAssert([node isKindOfClass:[CCSprite class]],@"is NOT member of CCSprite");
CCSprite *sprite = (CCSprite *)node;
sprite.scale = CCRANDOM_0_1();

}

Теперь я не знаю, как получить доступ к своему действию через тег ... Кто-нибудь возражал бы показать мне небольшой пример?

1 Ответ

3 голосов
/ 28 декабря 2011

Ваш код назначает новое действие автоматической переменной и не запускает его. anAction никто не хранит, поэтому он автоматически освобождается:

    ...
    CCAction *anAction = [CCBlink actionWithDuration:5 blinks:10];
    anAction.tag = 15;
}

Если вы запланируете свое действие с помощью [self runAction:anAction], вы можете получить к нему доступ с помощью [sprite getActionByTag:15]. Но если вы хотите создать действие без его запуска, вам следует сохранить свое действие в свойстве класса и получить к нему доступ, приведя узел к вашему классу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...