我有一个使用Box2D物理的Cocos2D游戏。在我的GameScene.mm中,我正在研究一种缩放到给定比例的方法:
-(void) zoomToScale:(float)zoom withDuration:(ccTime)duration
{
id action = [CCScaleTo actionWithDuration:duration scale:zoom];
[scrollNode runAction:action];
currentZoomLevel = zoom;
}
我遇到的问题是currentZoomLevel(在Scene的update()方法中使用)被立即设置为缩放,并且没有按照动画进行逐步调整。因此,在进行动画时,currentZoomLevel变量完全错误。
我试图找出一种方法来使currentZoomLevel变量与动画的进度匹配。根据CCAction API参考,CCAction的update方法基于动画的进度(0刚刚开始,1刚刚完成)采用介于0和1之间的ccTime。
如何从动作外部访问此ccTime?我想在我的场景的更新方法中添加以下内容:
if(animating)
{
float progress = [action getProgress]; // How do I do this?
// Do math to update currentZoomLevel based on progress
}
我是否在这里缺少明显的东西,还是必须将CCScaleTo子类化?
最佳答案
在制作动画时,您应该可以直接访问该比例。
代替float progress = [action getProgress];
尝试float current_scale = some_node.scale ;
其中“ some_node”是您要设置动画/缩放比例的对象。