У меня есть игра Cocos2D с физикой Box2D. В моем GameScene.mm я работаю над методом увеличения масштаба до заданного масштаба:
-(void) zoomToScale:(float)zoom withDuration:(ccTime)duration
{
id action = [CCScaleTo actionWithDuration:duration scale:zoom];
[scrollNode runAction:action];
currentZoomLevel = zoom;
}
Проблема, с которой я сталкиваюсь, заключается в том, что currentZoomLevel (который используется в методе update () Сцены) сразу устанавливается на увеличение и не регулируется постепенно согласно анимации. Поэтому во время анимации переменная currentZoomLevel совершенно неверна.
Я пытаюсь найти способ, чтобы переменная currentZoomLevel соответствовала ходу анимации по мере ее появления. Согласно Ссылке API CCAction, метод обновления CCAction принимает значение ccTime, которое находится между 0 и 1 в зависимости от хода анимации (0 только начинается, 1 только что закончено).
Как я могу получить доступ к этому ccTime извне действия? Я хочу, чтобы в методе обновления моей сцены было что-то вроде этого:
if(animating)
{
float progress = [action getProgress]; // How do I do this?
// Do math to update currentZoomLevel based on progress
}
Я что-то упускаю здесь очевидное или мне придется подкласс CCScaleTo?