有没有在每次删除节点时调用的方法?还是添加?
根据 touchesBegan
的条款,每次触摸屏幕时都会调用该方法。
或 touchesMoved
一种在节点被触摸和移动时调用的方法。
那么有没有这样一种方法,在节点获取removeFromParent
时调用?
我目前正在使用 update
方法来检测节点是否仍然存在,例如:
SKNode *n = [self childNodeWithName: @"n"];
if (!n)
{
// no n
if (life != 0)
{
[self addChild:_n);
life--;
}
}
现在,每当该节点丢失时,我都会删除 1 条生命,然后再次添加该节点。
问题是更新方法运行得太快以至于每次删除节点时都会删除 2 个生命。我相信这是因为添加回节点比更新方法慢一些。因此,在检测到该节点再次出现之前,更新方法需要 2 个循环。
最佳答案
没有这样的方法。但您可以创建一个。
创建(例如)SKSpriteNode 的子类并覆盖所有“删除”方法(或仅覆盖您正在使用的方法)。在该方法中,向需要接收移除事件的任何对象发送消息,或发送通知并注册其他对象以接收该通知。不要忘记调用重写方法的 super 实现。
关于ios - SpriteKit 检测节点是否从父节点移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21485427/