gpt4 book ai didi

swift - 触摸开始时从 SKScene 中删除函数

转载 作者:行者123 更新时间:2023-11-30 11:52:36 26 4
gpt4 key购买 nike

我有一个蓝天纹理从屏幕顶部移动到底部,在函数中永远重复。然而,当触摸开始时,我希望蓝天在一段时间后完全淡出,然后完全从场景中删除。

我能够让天空暂时淡出,然后看起来好像一半的循环被删除了,但我仍然每隔一段时间就会看到天空落下。这是该问题的视频:Blue Sky Video

在视频中,当屏幕左上角出现暂停按钮时,触摸开始 - 在触摸开始之前,蓝天按照应有的方式从上到下无缝移动。

功能

func createBlueSky() {
let blueSkyTexture = SKTexture(imageNamed: "blueSky")

for i in 0 ... 1 {
let blueSky = SKSpriteNode(texture: blueSkyTexture)
blueSky.name = "blueSky"
blueSky.zPosition = -60
blueSky.anchorPoint = CGPoint.zero
blueSky.position = CGPoint(x: 0, y: (blueSkyTexture.size().height * CGFloat(i)))
worldNode.addChild(blueSky)

let moveDown = SKAction.moveBy(x: 0, y: -blueSkyTexture.size().height, duration: 10)
let moveReset = SKAction.moveBy(x: 0, y: blueSkyTexture.size().height, duration: 0)
let moveLoop = SKAction.sequence([moveDown, moveReset])
let moveForever = SKAction.repeatForever(moveLoop)
blueSky.run(moveForever)
}

}

我已将上述函数添加到 didMove(toView)

覆盖 func didMove

createBlueSky()

然后,我开始添加此代码以淡出并从父级中删除。

我在另一篇文章中看到,要从另一个函数访问蓝天,我需要给它一个名称,我就是这么做的。仍然没有运气:/

覆盖 func attemptsBegan

let blueSky =  worldNode.childNode(withName: "blueSky") as! SKSpriteNode
let blueSkyFade = SKAction.fadeOut(withDuration: 3)
let blueSkyFadeWait = SKAction.wait(forDuration: 3)
let removeBlueSky = SKAction.removeFromParent()
blueSky.run(SKAction.sequence([blueSkyFadeWait, blueSkyFade, removeBlueSky]))

我对 Swift 很陌生,但我希望问题足够具体。我很乐意提供任何其他必要的信息。

最佳答案

您正在创建 2 个 blueSky 节点,但仅淡出并删除其中 1 个。您需要枚举具有您要查找的名称的所有节点。为此,您可以调用 enumerateChildNodes(withName:}

let blueSkyFade = SKAction.fadeOut(withDuration: 3)
let blueSkyFadeWait = SKAction.wait(forDuration: 3)
let removeBlueSky = SKAction.removeFromParent()
enumerateChleNodes(withName:"blueSky")
{
(blueSky,stop) in
blueSky.run(SKAction.sequence([blueSkyFadeWait, blueSkyFade, removeBlueSky]))
}

关于swift - 触摸开始时从 SKScene 中删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com