touchesBegan Swift 2 个自定义 SKSpriteKit 节点
touchesBegan Swift 2 custom SKSpriteKit Nodes
我是制作游戏的新手,所以作为一种练习,我目前正在制作一款愚蠢的游戏。这个游戏有一个包含按钮(0-9)的公文包我想保存数组中按下的数字的值。如果按下特定类型,我不确定如何使用触摸开始执行特定操作。
按钮输入:
class ButtonInput: SKSpriteNode{
var value: Int = 0
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
}
}
loadView():
let briefcase = ButtonInput(imageNamed: "briefcase")
let Button0 = ButtonInput(imageNamed: "Button0")
let Button1 = ButtonInput(imageNamed: "Button1")
let Button2 = ButtonInput(imageNamed: "Button2")
let Button3 = ButtonInput(imageNamed: "Button3")
let Button4 = ButtonInput(imageNamed: "Button4")
let Button5 = ButtonInput(imageNamed: "Button5")
let Button6 = ButtonInput(imageNamed: "Button6")
let Button7 = ButtonInput(imageNamed: "Button7")
let Button8 = ButtonInput(imageNamed: "Button8")
let Button9 = ButtonInput(imageNamed: "Button9")
Button0.value = 0
Button1.value = 1
Button2.value = 2
Button3.value = 3
Button4.value = 4
Button5.value = 5
Button6.value = 6
Button7.value = 7
Button8.value = 8
Button9.value = 9
更新:
经过数小时的研究,我尝试着开始接触,我想到了这个:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject! in touches {
let touchLocation = touch.locationInNode(self)
let touchedNode = self.nodeAtPoint(touchLocation)
let name = touchedNode.name
if name == "Button0"
{
userSequence.append(Button0.value)
print("Button0 pressed")
}
if name == "Button1"
{
userSequence.append(Button1.getValue())
print("Button1 pressed")
}
if name == "Button2"
{
userSequence.append(Button2.value)
}
if name == "Button3"
{
userSequence.append(Button3.value)
}
if name == "Button4"
{
userSequence.append(Button4.value)
}
if name == "Button5"
{
userSequence.append(Button5.value)
}
if name == "Button6"
{
userSequence.append(Button6.value)
}
if name == "Button7"
{
userSequence.append(Button7.value)
}
if name == "Button8"
{
userSequence.append(Button8.value)
}
if name == "Button9"
{
userSequence.append(Button9.value)
}
if name == "ButtonEnter"
{
compareSequences()
}
}
}
你应该在主故事板中制作按钮,并将它们连接到视图控制器。然后你可以在连接的动作中为每个按钮编写函数
希望这对您有所帮助
如果你使用 SpriteKit,我会这样做:
import SpriteKit
var _button = [SKSpriteNode]()
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
if(self.nodeAtPoint(location).name != nil && self.nodeAtPoint().name != "enter") {
_array.append(self.nodeAtPoint(location).name)
}
}
}
func loadView() {
for(var i = 0; i < 10; i++) {
let tempButton = SKSpriteNode(imageNamed: "Button\(i)")
tempButton.position = CGPoint(x: yourValue, y: yourValue)
tempButton.size = CGSize(width: yourValue, height: yourValue)
tempButton.name = "\(i)"
temButton.zPosition = 2
_button.append(tempButton)
self.addChild(_button.last!)
}
}
如果您在游戏中没有其他 SKSpriteNode,这将起作用,因为在触摸开始时我假设触摸的精灵有一个数字 (0-9)。为了解决这个问题,您可以添加一个 if 语句来验证名称是否在 0-9 之间。
希望对您有所帮助!
我是制作游戏的新手,所以作为一种练习,我目前正在制作一款愚蠢的游戏。这个游戏有一个包含按钮(0-9)的公文包我想保存数组中按下的数字的值。如果按下特定类型,我不确定如何使用触摸开始执行特定操作。 按钮输入:
class ButtonInput: SKSpriteNode{
var value: Int = 0
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
}
}
loadView():
let briefcase = ButtonInput(imageNamed: "briefcase")
let Button0 = ButtonInput(imageNamed: "Button0")
let Button1 = ButtonInput(imageNamed: "Button1")
let Button2 = ButtonInput(imageNamed: "Button2")
let Button3 = ButtonInput(imageNamed: "Button3")
let Button4 = ButtonInput(imageNamed: "Button4")
let Button5 = ButtonInput(imageNamed: "Button5")
let Button6 = ButtonInput(imageNamed: "Button6")
let Button7 = ButtonInput(imageNamed: "Button7")
let Button8 = ButtonInput(imageNamed: "Button8")
let Button9 = ButtonInput(imageNamed: "Button9")
Button0.value = 0
Button1.value = 1
Button2.value = 2
Button3.value = 3
Button4.value = 4
Button5.value = 5
Button6.value = 6
Button7.value = 7
Button8.value = 8
Button9.value = 9
更新:
经过数小时的研究,我尝试着开始接触,我想到了这个:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject! in touches {
let touchLocation = touch.locationInNode(self)
let touchedNode = self.nodeAtPoint(touchLocation)
let name = touchedNode.name
if name == "Button0"
{
userSequence.append(Button0.value)
print("Button0 pressed")
}
if name == "Button1"
{
userSequence.append(Button1.getValue())
print("Button1 pressed")
}
if name == "Button2"
{
userSequence.append(Button2.value)
}
if name == "Button3"
{
userSequence.append(Button3.value)
}
if name == "Button4"
{
userSequence.append(Button4.value)
}
if name == "Button5"
{
userSequence.append(Button5.value)
}
if name == "Button6"
{
userSequence.append(Button6.value)
}
if name == "Button7"
{
userSequence.append(Button7.value)
}
if name == "Button8"
{
userSequence.append(Button8.value)
}
if name == "Button9"
{
userSequence.append(Button9.value)
}
if name == "ButtonEnter"
{
compareSequences()
}
}
}
你应该在主故事板中制作按钮,并将它们连接到视图控制器。然后你可以在连接的动作中为每个按钮编写函数
希望这对您有所帮助
如果你使用 SpriteKit,我会这样做:
import SpriteKit
var _button = [SKSpriteNode]()
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
if(self.nodeAtPoint(location).name != nil && self.nodeAtPoint().name != "enter") {
_array.append(self.nodeAtPoint(location).name)
}
}
}
func loadView() {
for(var i = 0; i < 10; i++) {
let tempButton = SKSpriteNode(imageNamed: "Button\(i)")
tempButton.position = CGPoint(x: yourValue, y: yourValue)
tempButton.size = CGSize(width: yourValue, height: yourValue)
tempButton.name = "\(i)"
temButton.zPosition = 2
_button.append(tempButton)
self.addChild(_button.last!)
}
}
如果您在游戏中没有其他 SKSpriteNode,这将起作用,因为在触摸开始时我假设触摸的精灵有一个数字 (0-9)。为了解决这个问题,您可以添加一个 if 语句来验证名称是否在 0-9 之间。
希望对您有所帮助!