【发布时间】:2014-08-10 05:17:09
【问题描述】:
我正在构建一个游戏,其中玩家在游戏板上拖动一块。我想知道那块下面的所有节点是什么,我得到了奇怪的结果。这是 touchesMoves 函数:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {
let touch = touches.anyObject() as UITouch
let location = touch.locationInNode(self.parent)
self.position = location
println("checker x: \(location.x)")
println("node at point: \(self.nodeAtPoint(location))")
println("nodes at point: \(self.nodesAtPoint(location))")
}
精灵在棋盘上移动得很好,但是报告为 nodeAtPoint 的总是精灵正在四处移动(这很有意义但没有用。奇怪的是,nodeAtPoint 总是报告为一个空数组!这怎么可能?我应该做些什么不同的事情?
更新:这仍然是一场斗争。我想将触摸方法保留在节点本身,而不是场景中。 touchesMoved 的最新版本如下:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {
// Turn off the touched bool:
touched = false
let touch = touches.anyObject() as UITouch
let location = touch.locationInNode(self.parent)
let loc = touch.locationInView(scene.view)
let loc2 = touch.locationInNode(scene)
self.position = location
println("checker: \(loc2.x), \(loc2.y)")
println("node at point: \(self.nodeAtPoint(loc2).name)")
println("nodes at point: \(self.nodesAtPoint(loc2))")
}
nodesAtPoint 数组继续为空,但有一个非常奇怪的异常。当悬停在场景中心附近时,我得到了这个:
节点在点:[名称:'(null)'accumulatedFrame:{{-30,-19.80000114440918},{60,39.600002288818359}}]
那里没有我知道的形状节点!为什么我没有检测到我经过的节点?
【问题讨论】:
-
在这种情况下
self是什么? -
这个触摸方法在被移动的节点上。但是,我正在考虑将所有触摸行为移动到场景节点,然后看看它是否效果更好。
标签: swift sprite-kit