I want to clean my touchesBegan(..)in SKScene. I wanted to make a case statement instead of my chain if .. else. However, I get errors in the implementation, which means that I don’t know how equality is done under the hood.
Before code:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if self.nodeAtPoint(location) === playLabel {
buildLevelSelect()
} else if self.nodeAtPoint(location) === aboutLabel {
createAboutView()
} else if self.nodeAtPoint(location) === storeLabel {
createStore()
}
}
}
After the code: after clicking, some clicks on the shortcuts work, but some others create an error Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode 0x0):
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
switch(self.nodeAtPoint(location)){
case playLabel :
buildLevelSelect()
case aboutLabel :
createAboutView()
case storeLabel :
createStore()
default : break
}
}
source
share