我有一个我在-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();
}
现在我不知道如何通过标签访问我的动作..有人会介意给我一个小例子吗?
答案 0 :(得分:3)
您的代码会为自动变量分配新操作,但不会运行它。任何人都不会保留anAction
,因此会自动释放:
...
CCAction *anAction = [CCBlink actionWithDuration:5 blinks:10];
anAction.tag = 15;
}
如果您使用[self runAction:anAction]
安排行动,则可以[sprite getActionByTag:15]
访问该行动。但是,如果您想在不运行动作的情况下创建动作,则应将动作保存在类属性中,并通过将节点强制转换为类来访问它。