2012-03-27 63 views
-1

是否有可能等待用戶在while循環內觸摸?我的意思是,如果我有一個內部的「完成」按鈕的景色,我有這樣一個循環:等待用戶在循環中觸摸

while (ending == FALSE) { 
    ... 
    /* Do something */ 
    ... 

    /* WAIT for user to touch "Finish" button and when this occurs, set ending=TRUE so the loop can finish */ 

    ... 
    /* Do something more*/ 
    ... 
} 

我想與另一個while循環是這樣做的:

while (myVar == FALSE) { 
    /* Do nothing */ 
} 

而且修改按鈕操作以更改這兩個變量(「結束」和「myVar」),但我認爲這不是最有效的解決方案,它會消耗大量內存或CPU?

+1

你不能只使用事件嗎?爲什麼你必須在一個while循環內? – 2012-03-27 07:48:56

+0

嗨 我正在使用它進行遊戲。當遊戲開始while循環開始時,玩家在遊戲未完成時即開始動作(這是條件) 我有3個非人類玩家做它的動作,當它是人類玩家轉向時,我需要問他他行動和這裏有點,我需要「等待」觸摸 我希望我已經明確解釋 – rai212 2012-03-27 08:26:45

+0

@ rai212你可以不使用NSTimer。基本上設置一個10秒的時間(甚至不需要那麼長),只需要LOOP,並且當用戶做某種事件時,就像[theTimer invalidate]一樣使時間無效。然後,您可以通知用戶他們需要多長時間才能轉身。 – Popeye 2012-03-27 08:45:59

回答

0

我很確定你的while循環實際上會拖延你的程序,並且不允許任何接觸。如果您確實需要做某些事情(例如更新屏幕),同時等待按鈕被按下,您可以使用NSTimer定期激活一種方法。當按鈕被按下時,它會在你的更新方法不適用於其他任何地方的某個點觸發相關的答案。如果你在等待時需要做的不是與UI相關的,你可以考慮在另一個線程上執行,而不是定期的nstimer更新。

0

添加評論作爲答案,如果它的工作。

你不能使用NSTimer。基本上設置一個10秒的時間(甚至不需要那麼長),只需要LOOP,並且當用戶做某種事件時,就像[theTimer invalidate]一樣使時間無效。那麼你可以通知用戶他們需要多長時間轉彎

+0

它不起作用。 NSTimer在時間間隔設定的時間後執行它的選擇器,但它不會停止執行 – rai212 2012-03-27 19:10:36

+2

@ rai212我認爲你錯過了解。停止使用while循環。如果您正確設置了計時器,它將位於其自己的循環中,並且只會重複,直到用戶做出您希望他們執行的操作時,即使計時器無效。您可以根據您希望的時間間隔設置時間間隔,並且如果用戶沒有做任何事情,並且您可以添加額外的時間到計時器,如果您不想使用重複。 – Popeye 2012-03-27 20:55:59

+0

我也試過,但這樣做(一段時間的循環)用戶界面被「阻止」,我無法進行交互,所以我不能在用戶觸摸按鈕或類似的東西后使計時器無效 – rai212 2012-03-28 09:05:31