我正在使用一个简单的回合制循环,在玩家回合和敌人回合之间切换。在玩家回合中,loop
应该“暂停”,直到 framework function
touchDown
被激活,然后将回合传递给敌人。我不确定如何实现它,因为每当您按下屏幕时 touchDown
都会自动触发。
我是要使用某种类型的 observer
还是 #selector
?都尝试过,但都没有成功,但这可能只是因为我缺乏经验。如果我使用 selector
,loop
不会暂停等待屏幕被点击。至于观察者,我只是不确定它是如何实现的。我还尝试将整个 touchDown
方法添加到玩家回合中,但这显然不起作用。
循环
看起来像这样:
var state = "PLAYER"
func runGame() {
while(gameIsProgressing) {
if(state == "PLAYER") {
print("Player is doing stuff")
//THE touchDown METHOD SOULD BE TRIGGERD HERE
state = "ENEMY"
}else if(state == "ENEMY") {
print("\n🙈ENEMY IS DOING STUFF🙈")
state = "PLAYER"
}
}
}
此外,重要的是 touchDown
仅在玩家回合中触发,而不是在按下屏幕时触发。
有什么想法吗?
最佳答案
既然你在这里用 GUI 编程,你不应该以这种命令式的方式思考。没有(好的)方法可以“暂停”while 循环“直到”某事发生。您应该以更加事件驱动的方式思考。
与其考虑 while 循环,不如考虑发生的事件。在本例中,事件是 touchDown
。请注意,我不知道名为 touchedDown
的库函数(您是说 touchesBegan
还是这是 UIControl
的操作?),但我会假设它存在。当玩家触摸屏幕时,你希望发生什么?好吧,可能是这样的:
guard gameIsProgressing else { return }
if(state == "PLAYER") {
someFunctionThatShowsWhatThePlayerDid()
state = "ENEMY"
print("\n🙈ENEMY IS DOING STUFF🙈")
someFunctionThatMakesTheEnemyDoStuff(completion: {
self.state = "PLAYER"
})
}
关于ios - 如何在回合制循环中实现框架功能 touchDown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57503647/