【问题标题】:swift touches - how to differentiate objects快速接触 - 如何区分对象
【发布时间】:2014-12-10 22:53:47
【问题描述】:

我还是不习惯触摸功能。

我可以使用它并且工作正常,但我需要了解它才能进一步推进我的项目。

有人可以帮助我了解如何确定被触摸的对象吗?我真的很想了解发生了什么,所以将来我可以做一个基于被触摸对象类型的 switch 语句......

这是我使用的典型代码:

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
var touch : UITouch! = touches.anyObject() as UITouch

这就是我想要做的事情:

switch touch {
case SKSpriteNode
   ....
case SKLabelNode
   ....
case SKNode
   ...

and so on...

可能不正确,但这解释了为什么我要下如何能够抓取传递给 touches func 的信息。请指出我正确的方向:-D

【问题讨论】:

    标签: swift xcode6 touches


    【解决方案1】:

    UITouch 文档中实际上有一个部分:

    Working with touch events in SpriteKit

    您可以使用locationInNode 获取位置,然后使用nodeAtPoint 找出该位置的内容。

    【讨论】:

    • 谢谢,现在,通过println("\(nodeAtPoint(location))") 我可以看到它是哪个节点。很好!但是,如何根据节点类型做出声明?这不起作用:if nodeAtPoint(location) == SKLabelNode(“SKlabelNode”)..
    • 使用 Swift 关键字 is 来检查类。如果对您有帮助,请不要忘记投票并接受答案。
    • 所以,这是我最后的挣扎:现在我知道我正在触摸哪个节点,但是如何使用 removeFromParent() 将其从场景中移除?
    • 通过摆弄一点,我发现我可以这样做:nodeAtPoint(location).removeFromParent() ...不确定这是否是正确的方法,但它有效!
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多