提问人: 提问时间:1/1/2023 更新时间:1/1/2023 访问量:59
如何调用aUIView.presentScene(aSKScene, transition: aSKTransition)以与aUIView.addSubview(aUITextField!)一致操作?
How can I get a call to aUIView.presentScene(aSKScene, transition: aSKTransition) to act in unison with aUIView.addSubview(aUITextField!)?
问:
如何调用aUIView.presentScene(aSKScene, transition: aSKTransition)以与aUIView.addSubview一致操作。
没有过渡,就没有问题。与发生 1st 然后 – 不是统一的。SKTransition
UITextField
SKTransition
就像,被种植在里面,坐在那里等待赶上UITextField
view
ViewController
SKTransition
法典
func showScene(theSceneName: String) {
if let ourScene = SKScene(fileNamed: theSceneName) {
addTextFieldToVC(toSceneName: theSceneName)
// NB: theSceneName is passed by Reference so we can
// return here before we call presentScene(...)
addGamePiecesToScene(toScene: theSceneName)
if let theView = self.view as! SKView? {
theView.ignoresSiblingOrder = true
theView.showsFPS = true
theView.showsNodeCount = true
// Finally, present the scene
let theTransition = SKTransition.doorway(withDuration: 2.0)
theView.presentScene(ourScene, transition: theTransition)
}
} // if let ourScene
} // showScene
func addTextFieldToVC(toSceneName: String) {
if (toSceneName == "GameScene") {
if let theView = self.view as! SKView? {
aUITextField = UITextField(frame:CGRectMake(x: aXValue, y: aYValue))
theView.addSubview(aUITextField!)
}
}
}
func addGamePiecesToScene(toScene: SKScene) {
myRoom = SKSpriteNode(texture: SKTexture(imageNamed: roomImg))
myRoom!.zPosition = roomZposition
// etc with .size, .position
toScene.addChild(myRoom!)
}
如上所示,我添加了 UITextField 1st,并添加了 SKSpriteNode 图像 2nd。
然而,它们与SKTransition并不同步。它们同步出现,只是没有 SKTransition。
FWIW,我已经尝试了这个序列,但没有变化:showScene
theView.presentScene(theSceneName, transition: theTransition)
DispatchQueue.main.async {
addTextFieldToVC(toSceneName: theSceneName)
}
我也开始尝试使用完成处理程序:
override func viewDidLoad() {
super.viewDidLoad()
setupScene()
// Completion Handler for showScene()
showModifiedScene {
if thisSceneName == "GameScene" { // a global var
addTextFieldToVC(toSceneName: thisSceneName!)
}
}
} // viewDidLoad
// modified for callback option??
func showScene(theSceneName: String) {
if let ourScene = SKScene(fileNamed: theSceneName) {
addGamePiecesToScene(toScene: ourScene)
showModifiedScene()
} // if let ourScene
} // showScene
func showModifiedScene(completionBlock: () -> Void) {
if thisSceneName == "GameScene" { // a global var
if let ourScene = SKScene(fileNamed: thisSceneName!) {
if let theView = self.view as! SKView? {
theView.ignoresSiblingOrder = true
theView.showsFPS = true
theView.showsNodeCount = true
let theTransition = SKTransition.doorway(withDuration: 2.0)
theView.presentScene(ourScene, transition: theTransition)
}
}
completionBlock()
}
} // showModifiedScene
同样,没有过渡,就没有问题。与发生 1st 然后 – 不是统一的。SKTransition
UITextField
SKTransition
我还在为这个而烦恼......但我认为是时候呼吁一些增援了!在等待髑髅地的时候,我仍然会工作。
答:
0赞
Duncan C
1/1/2023
#1
尝试添加文本视图,然后将调用 包装在对 的调用中。presentScene()
DispatchQueue.main.async()
这样,在开始显示该视图之前,文本字段将添加到您的视图中。
评论
0赞
1/1/2023
我希望我能封你为“英雄”......但这次不是.也许以后。无论有没有,物体首先出现,保持静止并等待,直到完成它的事情。我认为核心问题是属于 和 各种属于 ?– 我多么希望我能“假装”并强制它成为一个图像,就像 SKSpriteNode 一样。DispatchQueue
UITextField
presentScene
UITextField
ViewController
SKScenes
View
UITextField
0赞
Duncan C
1/1/2023
你追求的效果是什么?
0赞
1/1/2023
当这种情况发生时,我希望添加的(添加的 )和添加的(添加的通过)一起参与,而不是分开。我可以第一次打电话,然后用一个 - 但它的有效性取决于 CPU 速度。我需要了解回调。但我真的认为我只会很高兴为.无需等待SKTransition
UITextField
addSubView
ViewController
CGScenes
addChild
SKTransition
presentScene
DispatchQueue
addUTextField
duration
CGScenes
UITextField
SKTransition
UITextField
SKTransition
0赞
1/3/2023
还没有弄清楚所有细节 - 但答案是使用 ,而不是这样我就可以在所有内容上使用。SKLabelNode
UITextField
.addChild
评论