【发布时间】:2015-08-17 09:20:46
【问题描述】:
我试图在对象离开场景后将其删除,这样我就可以减少内存消耗
我应该输入我尝试过的代码,但我不知道如何开始,所以我没有什么可以放在这里抱歉
编辑
或者也许我应该检测视图内的对象是否在视图内,如果不是,则删除它我怎么知道对象是否在视图内?
【问题讨论】:
标签: ios swift sprite-kit skscene
我试图在对象离开场景后将其删除,这样我就可以减少内存消耗
我应该输入我尝试过的代码,但我不知道如何开始,所以我没有什么可以放在这里抱歉
编辑
或者也许我应该检测视图内的对象是否在视图内,如果不是,则删除它我怎么知道对象是否在视图内?
【问题讨论】:
标签: ios swift sprite-kit skscene
有一种方便的方法可以检查两个 CGRect 是否相互交叉
你可以这样做
if( CGRectIntersectsRect(object.frame, view.frame) ) {
// Don't delete your object
} else {
// Delete your object as it is not in your view
}
我希望这会有所帮助:)
【讨论】:
您可以通过不同的方式检查节点是否在屏幕外,这取决于您移动节点的方式。
第一种方法:
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。
【讨论】: