在 Swift SpriteKit 中使用 SKLabelNode 作为父级创建按钮
Creating a button using SKLabelNode as a parent in Swift SpriteKit
我正在尝试为 SpriteKit 中的按钮创建 SKLabelNode 的子类。我尝试使用 SKLabelNode 作为父级创建一个按钮,这样我就可以在创建按钮时使用我所知道的关于标签的一切(字体、文本大小、文本颜色、位置等)。
我已经研究了 Swift Spritekit Adding Button Programaticly 并且我正在使用它所说的基础,而是我正在创建一个子类而不是一个变量,并且我正在使用一个创建按钮标签的代码。该子类添加了允许点击并触发动作的功能。
class StartScene: SKScene {
class myButton: SKLabelNode {
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if myButton.containsPoint(location) {
// Action code here
}
}
}
}
override func didMoveToView(view: SKView) {
let startGameBtn = myButton(fontNamed: "Copperplate-Light")
startGameBtn.text = "Start Game"
startGameBtn.fontColor = SKColor.blackColor()
startGameBtn.fontSize = 42
startGameBtn.position = CGPointMake(frame.size.width/2, frame.size.height * 0.5)
addChild(startGameBtn)
}
}
我的错误是:if myButton.containsPoint(location)
错误显示:无法使用“(CGPoint)”类型的参数列表调用 'containsPoint'
我知道它与我的子类有关,但我不知道具体是什么。
我也试过在 myButton.containsPoint(location) 周围加上括号,如下所示:
if (myButton.containsPoint(location))
但随后出现错误:'CGPoint' 无法转换为 'SKNode'
谢谢
我有一个替代解决方案,其工作方式相同。
更改以下代码
if myButton.containsPoint(location) {
为此,它应该编译并具有相同的功能
if self.position == location {
我正在尝试为 SpriteKit 中的按钮创建 SKLabelNode 的子类。我尝试使用 SKLabelNode 作为父级创建一个按钮,这样我就可以在创建按钮时使用我所知道的关于标签的一切(字体、文本大小、文本颜色、位置等)。
我已经研究了 Swift Spritekit Adding Button Programaticly 并且我正在使用它所说的基础,而是我正在创建一个子类而不是一个变量,并且我正在使用一个创建按钮标签的代码。该子类添加了允许点击并触发动作的功能。
class StartScene: SKScene {
class myButton: SKLabelNode {
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if myButton.containsPoint(location) {
// Action code here
}
}
}
}
override func didMoveToView(view: SKView) {
let startGameBtn = myButton(fontNamed: "Copperplate-Light")
startGameBtn.text = "Start Game"
startGameBtn.fontColor = SKColor.blackColor()
startGameBtn.fontSize = 42
startGameBtn.position = CGPointMake(frame.size.width/2, frame.size.height * 0.5)
addChild(startGameBtn)
}
}
我的错误是:if myButton.containsPoint(location)
错误显示:无法使用“(CGPoint)”类型的参数列表调用 'containsPoint'
我知道它与我的子类有关,但我不知道具体是什么。
我也试过在 myButton.containsPoint(location) 周围加上括号,如下所示:
if (myButton.containsPoint(location))
但随后出现错误:'CGPoint' 无法转换为 'SKNode'
谢谢
我有一个替代解决方案,其工作方式相同。 更改以下代码
if myButton.containsPoint(location) {
为此,它应该编译并具有相同的功能
if self.position == location {