2013-08-29 2 views
0

У меня есть CCSprite, который подвергается анимации положения. Он отлично анимируется. В какой-то момент времени, между началом анимации и достижения конечной позиции, я хочу, чтобы получить точное положение CCSpriteCocos2s: получить позицию CCSprite во время анимации до достижения цели

Я знаю, что sprite.position возвращает конечную позицию

Вот является код анимации:

sprite = [CCSprite spriteWithFile:@"sprite.png"]; 
[sprite setPosition:ccp(winSize.width/2, 170)]; 
[self addChild:sprite]; 

CCMoveTo *moveSpriteUp = [CCMoveTo actionWithDuration:2.0 position:ccp(winSize.width/2, 210)]; 
CCEaseOut *upEase = [CCEaseOut actionWithAction:moveSpriteUp rate:2]; 

CCMoveTo *moveSpriteDown = [CCMoveTo actionWithDuration:2.0 position:ccp(winSize.width/2, 170)]; 
CCEaseOut *downEase = [CCEaseOut actionWithAction:moveSpriteDown rate:2]; 

CCSequence * spriteMoveSeq = [CCSequence actions:upEase, downEase, nil]; 
CCRepeatForever *spriteRepeat = [CCRepeatForever actionWithAction:spriteMoveSeq]; 

[sprite runAction:spriteRepeat]; 
//1 or 1.x seconds later, the sprite's Y postion will be somewhere between 170 and 210, this is what I want to catch 

В любом случае я могу это сделать?

ответ

0

Что относительно CCDelayTime + CCCallFunc? Что-то like.-

CCDelayTime *delay = [CCDelayTime actionWithDuration:kDelay]; 
CCCallFunc *func = [CCCallFunc actionWithTarget:self selector:@selector(getSpritePosition)]; 

[sprite runAction:spriteRepeat]; 
[self runAction:[CCSequence actionOne:delay two:func]]; 

В getSpritePosition вы могли бы получить sprite положение (при условии, sprite доступна из вашей сферы сцены), и делать все, что вам нужно с ним.