2013-06-11 35 views
1

我正在使用box2d和cocos2d-x進行遊戲,並且我想在過度設計它之前檢查一個細節:TouchDispatcher調用的回調(如ccTouchesBegan,ccTouchesEnded,ccTouchesMoved)是否可能中斷Box2d的世界一步?例如,如果我的ccTouchesEnded回調是沿着線:在Cocos2d-X中,TouchDispatcher是否會干擾Box2d的世界步驟?

void GameLayer::ccTouchesEnded(cocos2d::CCSet* touches, cocos2d::CCEvent* event) 
{ 
    world->DestroyBody(myBody);//obviously an oversimplification but you get the idea 
} 

...這將是可能的,這有可能被意外堪稱世界一步的執行過程中,從而刪除的東西,世界上一步目前處理?

我看着它...

Box2D and wrapping worlds

...我已經看到了一些可以干擾,但出現這個時候討論的只有一個是ContactListener,給我留下這樣的印象:這是一個特殊情況或某事。任何回調都會干擾嗎?或者是世界上的原子到外部(非box2d)線程?

PS。我明白所給出的示例代碼並不完全遵守MVC設計原則,說實話我正在考慮改變它(儘管考慮到項目的狀態會導致很多延遲),但即使如此,我我仍然想知道更多關於這個世界的原子究竟是多麼的原子,即使只是爲了我自己的參考。

在此先感謝

回答

1

除非你不從另一個調用線程自己Step - 沒有。通常你從圖層的update方法調用Step。而且cocos不是多線程的。所以保證什麼都不會被調用,直到update和它下面的callstack被彈出