2012-03-27 90 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