我有一個Box2D物理的Cocos2D遊戲。在我GameScene.mm,我工作的一種方法放大到給定規模:Cocos2D獲得CCAction的進展
-(void) zoomToScale:(float)zoom withDuration:(ccTime)duration
{
id action = [CCScaleTo actionWithDuration:duration scale:zoom];
[scrollNode runAction:action];
currentZoomLevel = zoom;
}
說我遇到的問題是,currentZoomLevel(這是在場景的更新中使用()方法)是立即設置爲變焦,並且不按照動畫逐漸調整。所以在動畫進行過程中,currentZoomLevel變量是完全錯誤的。
我試圖找出一種方法讓currentZoomLevel變量與動畫的進度匹配,因爲它發生了。根據CCAction API參考,CCAction的update方法根據動畫的進度採用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?