2011-03-07 96 views
1

我正在開發針對iOS的tic tac toe遊戲,我正在使用UIButtons和UIImageViews的組合來允許用戶進行交互並顯示所做的動作。我的問題是,在CPU移動之前,按鈕繼續接受用戶輸入,這打破了我的遊戲邏輯。我做了幾次嘗試切換userInteractionEnabled屬性,但我只能關閉它。獲取所有內容的引擎是我的buttonPressed方法。我還切換此方法中的userInteractionEnabled屬性,其中存在我的問題:禁用用戶交互後,如何重新啓用屬性?是否有可以覆蓋的事件之間調用的方法?無法在iOS中切換userInteractionEnabled屬性

我已經在網上搜索,我已經通過蘋果公司提供的開發者文檔搜索,我發現對信息的touchesBegan和touchesEnded方法。然而,據我所知,這些方法需要明確調用,這使我回到了原來的問題,即無法在沒有用戶交互的情況下調用這些函數。

如果有人能幫助,我將不勝感激!在過去的幾周裏,我一直在關注這個問題,而我只是沒有看到解決方案。

回答

0

我會認爲像井字棋遊戲,計算對策應該是如此之快,它可以響應按下第一個按鈕立即進行。如果你正在做一些複雜的事情來計算下一步行動,比如踢開一條線索,你可能想重新考慮一下。

但是,讓我們假設你的遊戲是象棋或去的地方,但想出一個反衝動可能需要更長的時間。您的視圖控制器應該有一個方法來爲當前播放器進行移動,我們稱之爲-makeMove :.您的按鈕壓縮操作應該調用該方法來爲用戶做出移動。作爲迴應,-makeMove:應該更新遊戲狀態,將當前玩家切換到下一個玩家。如果新的當前玩家是電腦,那麼它應該禁用這些控件並開始計算下一步棋的過程。讓我們想象這是通過調用一些NSOperation完成的,所以下一步移動是一個異步任務。一旦操作產生了移動,它應該再次調用-makeMove :(通過調用-performSelectorOnMainThread :),它將再次更新遊戲狀態和當前玩家。但是這一次,它應該看到新的當前播放器不是電腦,所以它應該重新啓用控件。

+0

Caleb,謝謝你的建議。我想我應該多解釋我的設置。我調用performSelector:withObject:afterDelay:延遲繪製計算機的移動。問題是,標誌我用它來確定它是否是計算機的轉彎或計算機計算出它的舉動後,玩家的回合被翻轉。所以我對你的建議有類似的設置,但似乎並不奏效。在performSelector調用後,我嘗試更改標誌,但用戶仍然能夠在計算機的移動被繪製之前點擊並更新電路板。執行選擇器工作切換輸入? – mblPrgr 2011-03-07 20:30:09