Swift SpriteKit Layer/Node 加载速度不够快
Swift SpriteKit Layer/Node doesn't load fast enough
我创建了我的第一个简单的 IOS 游戏,并创建了游戏图层 gameLayer 和简历 Button/Node 的 pauseLayer。在我的 gameLayer 中,我有一个按钮可以暂停游戏,在我的 pauseLayer 中有一个 Button/Node 可以继续。我在从 touchesEnded 函数获取点的函数中这样做:
var ispaused = false
func touchend(atPoint pos : CGPoint) {
if ispaused == false && pausebutton.contains(pos) {
pauseLayer.isHidden = false
view?.isPaused = true
ispaused = true
}
if ispaused == true && resumebutton.contains(pos) {
pauseLayer.isHidden = true
view?.isPaused = false
ispaused = false
}
}
除我看不到我的简历按钮外,一切正常。我可以点击它应该在的地方,然后游戏继续。但是当我删除行 view?.isPaused = true
时,按钮会按原样显示。
这让我想到暂停视图也可能会暂停 loading/displaying 我的简历按钮的过程。我怎样才能避免这个问题?
好吧,来测试一下你的加载速度不够快的理论。
您可以延迟代码执行:
let delayDuration:Double = 1.0 /* In seconds */
let totalDelayTime = DispatchTime.now() + delayDuration
DispatchQueue.main.asyncAfter(deadline: totalDelayTime, execute: { view?.isPaused = true })
它将等待 1 秒,然后再计算 view?.isPaused
也试试这个,不确定是否有效。
defer { view?.isPaused = true }
defer 语句将执行延迟到当前作用域的末尾。这将是 touchEnd 函数的结尾
我创建了我的第一个简单的 IOS 游戏,并创建了游戏图层 gameLayer 和简历 Button/Node 的 pauseLayer。在我的 gameLayer 中,我有一个按钮可以暂停游戏,在我的 pauseLayer 中有一个 Button/Node 可以继续。我在从 touchesEnded 函数获取点的函数中这样做:
var ispaused = false
func touchend(atPoint pos : CGPoint) {
if ispaused == false && pausebutton.contains(pos) {
pauseLayer.isHidden = false
view?.isPaused = true
ispaused = true
}
if ispaused == true && resumebutton.contains(pos) {
pauseLayer.isHidden = true
view?.isPaused = false
ispaused = false
}
}
除我看不到我的简历按钮外,一切正常。我可以点击它应该在的地方,然后游戏继续。但是当我删除行 view?.isPaused = true
时,按钮会按原样显示。
这让我想到暂停视图也可能会暂停 loading/displaying 我的简历按钮的过程。我怎样才能避免这个问题?
好吧,来测试一下你的加载速度不够快的理论。
您可以延迟代码执行:
let delayDuration:Double = 1.0 /* In seconds */
let totalDelayTime = DispatchTime.now() + delayDuration
DispatchQueue.main.asyncAfter(deadline: totalDelayTime, execute: { view?.isPaused = true })
它将等待 1 秒,然后再计算 view?.isPaused
也试试这个,不确定是否有效。
defer { view?.isPaused = true }
defer 语句将执行延迟到当前作用域的末尾。这将是 touchEnd 函数的结尾