【问题标题】:How to delete object after it gone outside the scene?物体离开场景后如何删除?
【发布时间】:2015-08-17 09:20:46
【问题描述】:

我试图在对象离开场景后将其删除,这样我就可以减少内存消耗

我应该输入我尝试过的代码,但我不知道如何开始,所以我没有什么可以放在这里抱歉

编辑

或者也许我应该检测视图内的对象是否在视图内,如果不是,则删除它我怎么知道对象是否在视图内?

【问题讨论】:

    标签: ios swift sprite-kit skscene


    【解决方案1】:

    有一种方便的方法可以检查两个 CGRect 是否相互交叉

    你可以这样做

    if( CGRectIntersectsRect(object.frame, view.frame) ) {
       // Don't delete your object
    } else {
       // Delete your object as it is not in your view
    }
    

    我希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      您可以通过不同的方式检查节点是否在屏幕外,这取决于您移动节点的方式。

      第一种方法:

      if (!intersectsNode(yourNode)) {
           // node is off-screen
      }
      

      要枚举节点,您可以使用: - enumerateChildNodesWithName:usingBlock: 要访问节点树中的所有节点,请阅读 this

      另一种方法是使用动作:

      let move = SKAction.moveTo(location: offScreenLocation, duration: 5)
      
      let remove = SKAction.runBlock({yourNode.removeFromParent()})
      
      let sequence = SKAction.sequence([move,remove])
      
      yourNode.runAction(sequence, withKey:"moving") //Use action with key, to cancel the action if needed
      

      第三种方法是使用contact detection

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        相关资源
        最近更新 更多