我試圖允許在我的遊戲中暫停。目前,我有一個很好的改變狀態。對於暫停我有:遊戲狀態管理器,暫停和恢復
void PushState(int newState)
{
pauseID = stateID; ///save state number
Gstates.push_back(currentState); ///Set Current state to vector
nextState = newState; ///acquire new state
switch(nextState)
{
case STATE_INTRO:
currentState = new CIntroState(); ///create new state
break;
}
//Change the current state ID
stateID = nextState;
//NULL the next state ID
nextState = STATE_NULL;
}
以上部分似乎工作正常。
這是我的簡歷部分
void Resuming()
{
nextState = pauseID;
if(nextState != STATE_EXIT)
{
delete currentState; ///deletes current state
}
switch(nextState)
{
case STATE_INTRO:
currentState = Gstates.back(); ///sets current state to the saved state
Gstates.pop_back(); ///delets saved state
break;
}
//Change the current state ID
stateID = nextState;
//NULL the next state ID
nextState = STATE_NULL;
}
我得到一些奇怪的多線程錯誤。大約50%的時間是按預期的方式工作的,但其餘的時間都是崩潰的。
誤差基本上說,「這很可能是一個多線程的客戶端和XInitThreads沒有被調用
客戶端是不是多線程;)..總之,沒有任何人有任何想法是怎麼回事?在
http://tronche.com/gui/x/xlib/display/XInitThreads.html – Saqlain 2013-03-01 18:12:38