我有一个带有 Box2D 物理的 Cocos2D 游戏。在我的 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 变量与动画的进度相匹配,因为它正在发生。根据 CCAction API 参考,CCAction 的更新方法根据动画的进度取 0 到 1 之间的 ccTime(0 刚刚开始,1 刚刚结束)。
如何从操作外部访问此 ccTime?我想在我的场景的更新方法中有这样的东西:
if(animating)
{
float progress = [action getProgress]; // How do I do this?
// Do math to update currentZoomLevel based on progress
}
我在这里遗漏了一些明显的东西,还是我必须继承 CCScaleTo?