是否有一种首选的方法可以确定触摸是在父母身上还是在父母身上,如果是spritekit中的孩子但是仍然传播给父母?
假设我有一个名为" Square"的SKSpriteNode子类。用一个名字' " square"的财产。反过来,这个Square还有一个名为" foo"的孩子SKLabelNode。在这种情况下,显示一些简单的数字。
现在,当我点击Square或它的标签时,我想更新广场的颜色。
我知道如何更改颜色等并处理水龙头。但我不确定是否有更好的方法,如下所示:
//point here is the touch point
let node = nodes(at: point).first
if node?.name == "square" {
//change color
}else if node?.parent != nil && node?.parent?.name == "square" {
//change colour of parent
}
或者做一些像
这样的事情会更好 //point here is the touch point
let allnodes = nodes(at: point)
for node in all nodes {
if node?.name == "square" {
//change color
}
}
第二种方式似乎稍好一点,因为如果由于某种原因我添加了另一个孩子,我就不必添加另一个if语句。
为了它的价值,我在整个视图上都有一个UITapGestureRecognizer来确定要点,而不是使用override touchesBegan
方法等。这是因为我使用这些方法来滚动相机。不确定改变逻辑是否会让事情变得更好