我创建了一个名为SKNode
的{{1}}子类,它创建了一个用于SpriteKitButton
的自定义“按钮”,我在这里找到了:
http://nathandemick.com/programming/tutorial/2014/09/23/buttons-sprite-kit-using-swift.html
效果很好,我设置了一个按钮:
SpriteKit
它将正确调用我的page4()函数。所以我的问题是:如何通过发送var page4Button = SpriteKitButton(buttonUnpressedImage: "page4Unpressed.png", buttonPressedImage: "page4Pressed.png", buttonAction: page4)
page4Button.position = CGPoint(x: 210, y: 210)
page4Button.zPosition = 1.0
self.addChild(page4Button)
字符串“page4:”来修改我的SpriteKitButton
类来初始化,而不是直接告诉它使用函数page4?
我的目标是能够使用字符串插值初始化buttonAction
,这样我就可以使用for循环创建按钮,而不是在多行代码中分别创建每个按钮。我以前从来没有从这样的子类中返回一些东西,我不确定从哪里开始。
感谢您的任何建议!
答案 0 :(得分:0)
简短的回答是你不能。 Swift不允许您将String
转换为闭包。但是,您可以通过将函数数组中的每个元素作为按钮初始化程序的buttonAction
参数传递来在循环中创建所有按钮。
首先,定义并初始化()->Void
函数数组
let actions:[()->Void] = [page1,page2,page3]
然后,通过将每个数组元素作为buttonAction
参数
for i in 0..<actions.count {
// Create your buttons here with actions[i] as the buttonAction argument
}
最后,定义你的函数/方法
func page1() {
println("page 1")
}
func page2() {
println("page 2")
}
func page3() {
println("page 3")
}