touchesBeganについて分からない事があります
※xcode6.1.1 swift1.1 spriteKitを使用しています。
おみくじアプリをテストで作っているのですが
タッチするボタンを二つつくって、どちらをタッチしたかによって
反応をかえたいのですが、うまくいきません。
タッチイベントでどの選択肢をタッチしたかは作れないのでしょうか?
ご教授よろしくお願いします。
発生するエラーは、ボタンをクリックするとThread 1:breakpoint 1.1と出ます。
if touchNode == btn2Sprite {
の行で
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
// タッチされた位置にあるものを調べて
let location = touch.locationInNode(self)
let touchNode = self.nodeAtPoint(location)
// もし、ボタン1なら
if touchNode == btnSprite {
// 悪い予感がすると表示してから、おみくじを振る
myLabel.text = "悪い予感がする"
shakeOmikuji()
}
// もし、ボタン2なら
if touchNode == btn2Sprite {
// 大吉の予感と表示してから、おみくじを振る
myLabel.text = "大吉の予感"
shakeOmikuji()
}
}
}
全文
// GameScene.swift
import SpriteKit
class GameScene: SKScene {
// イラスト用スプライトを用意する
let mySprite = SKSpriteNode(imageNamed: "omikuji.png")
// ボタン用スプライトを用意する
let btnSprite = SKSpriteNode(imageNamed: "button.png")
let btn2Sprite = SKSpriteNode(imageNamed: "button.png")
// おみくじ結果用ラベルを用意する
let myLabel = SKLabelNode(fontNamed: "Verdana-bold")
override func didMoveToView(view: SKView) {
// 背景色をつける
self.backgroundColor = SKColor.whiteColor()
// イラストを表示する
mySprite.position = CGPoint(x: 375, y: 900)
addChild(mySprite)
// ボタンを表示する
btnSprite.position = CGPoint(x:375, y:200)
self.addChild(btnSprite)
// ボタンを表示する
btn2Sprite.position = CGPoint(x:575, y:200)
self.addChild(btn2Sprite)
// おみくじ結果用ラベルを表示する
myLabel.text = "???"
myLabel.fontSize = 65
myLabel.fontColor = SKColor.blackColor()
myLabel.position = CGPoint(x:375, y:500)
self.addChild(myLabel)
}
// タッチしたときの処理
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
// タッチされた位置にあるものを調べて
let location = touch.locationInNode(self)
let touchNode = self.nodeAtPoint(location)
// もし、ボタンなら
if touchNode == btnSprite {
// ???と表示してから、おみくじを振る
myLabel.text = "悪い予感がする"
shakeOmikuji()
}
// もし、ボタン2なら
if touchNode == btn2Sprite {
// ???と表示してから、おみくじを振る
myLabel.text = "大吉の予感"
shakeOmikuji()
}
}
}
// おみくじを振る処理
func shakeOmikuji() {
// 【おみくじを振るアクションをつける】
// おみくじを少し右に傾けるアクション
let action1 = SKAction.rotateToAngle(-0.3, duration: 0.2)
// おみくじを少し左に傾けるアクション
let action2 = SKAction.rotateToAngle( 0.3, duration: 0.2)
// おみくじをひっくり返すアクション
let action3 = SKAction.rotateToAngle( 3.14, duration: 0.2)
// action1,action2,action3を指定した順番に行う
let actionS = SKAction.sequence(
[action1, action2, action1, action2, action1, action3])
// おみくじに「左右に振ってひっくり返すアクション」をつけて、最後にkekkaを実行する
mySprite.runAction(actionS, completion: showOmikuji)
}
// 結果を表示する処理
func showOmikuji() {
var omikuji = ["大吉","中吉","吉","凶"]
var r = Int(arc4random_uniform(4))
myLabel.text = omikuji[r]
}
override func update(currentTime: CFTimeInterval) {
}
}