在我尝试构建的新游戏中,我想知道用户何时触摸屏幕右侧和左侧的 BOTH 来做一些逻辑。
我的代码:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
var isRight : Bool = false
var isLeft : Bool = false
if(location.x < self.size.width/2){
isLeft = true
println("Left")
}
if(location.x > self.size.width/2){
//
isRight = true
println("Right")
}
if (isRight && isLeft){
println("Both touched")
// do something..
}
}
}
控制台:
Right
Left
我的代码似乎无法运作。我在这做错了什么?有人有更好的解决方案吗?
答案 0 :(得分:3)
做这个;
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
var isRight : Bool = false
var isLeft : Bool = false
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
if(location.x < self.size.width/2){
isLeft = true
println("Left")
}
if(location.x > self.size.width/2){
//
isRight = true
println("Right")
}
}
if (isRight && isLeft){
println("Both touched")
// do something..
}
}
更新:Swift 2.2
对于SKView:
class skView:SKView {
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
var isRight : Bool = false
var isLeft : Bool = false
for touch in touches {
let location = touch.locationInView(self);
if(location.x < self.frame.size.width/2){
isLeft = true
print("Left")
}
if(location.x > self.frame.size.width/2){
//
isRight = true
print("Right")
}
}
if (isRight && isLeft){
print("Both touched")
// do something..
}
}
}
对于SKNode:
class skNode: SKNode {
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
var isRight : Bool = false
var isLeft : Bool = false
for touch in touches {
let location = touch.locationInNode(self);
if(location.x < self.frame.size.width/2){
isLeft = true
print("Left")
}
if(location.x > self.frame.size.width/2){
//
isRight = true
print("Right")
}
}
if (isRight && isLeft){
print("Both touched")
// do something..
}
}
}