Iphone Cocos2D获得CCAction的进展
我有一个关于Box2D物理的Cocos2D游戏。在我的GameSecene.mm中,我正在研究一种缩放到给定比例的方法:Iphone Cocos2D获得CCAction的进展,iphone,ios,animation,cocos2d-iphone,ccaction,Iphone,Ios,Animation,Cocos2d Iphone,Ccaction,我有一个关于Box2D物理的Cocos2D游戏。在我的GameSecene.mm中,我正在研究一种缩放到给定比例的方法: -(void) zoomToScale:(float)zoom withDuration:(ccTime)duration { id action = [CCScaleTo actionWithDuration:duration scale:zoom]; [scrollNode runAction:action]; currentZoomLevel
-(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子类化?您应该能够在缩放动画时直接访问缩放 而不是
float progress=[action getProgress]代码>
试一试
float current\u scale=some\u node.scale代码>
其中“某个节点”是您正在设置动画/缩放的对象。您应该能够在缩放动画时直接访问缩放
而不是
float progress=[action getProgress]代码>
试一试
float current\u scale=some\u node.scale代码>
其中“some_node”是您正在设置动画/缩放的对象。实际上,您最好使用新的Cocos2D扩展名“CCLayerPanZoom”,它可以为您出色地处理所有这些问题!它应该是任何新cocos2D安装(v.1.0+)的一部分。实际上,您最好使用新的cocos2D扩展“CCLayerPanZoom”,它可以为您出色地处理所有这些问题!它应该是任何新cocos2D安装(v.1.0+)的一部分