Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当精灵离开屏幕时移除它_Ios_Objective C_Sprite Kit - Fatal编程技术网

Ios 当精灵离开屏幕时移除它

Ios 当精灵离开屏幕时移除它,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我有一个精灵在屏幕上从左向右移动,当它离开屏幕时就不会回来了。哪里是解除分配的最佳地点?在-update方法中?还是 是,它只能添加到更新方法中。因为Sprite工具包将为每个帧自动调用更新:方法 您可以使用didSimulatePhysics方法。它在update方法之后被调用。我们可以确保更新方法中需要完成的所有工作都已完成,然后清理对象或循环遍历对象,并确定哪些对象需要删除 - (void)didSimulatePhysics { [self removeAllObstacle

我有一个精灵在屏幕上从左向右移动,当它离开屏幕时就不会回来了。哪里是解除分配的最佳地点?在-update方法中?还是

是,它只能添加到更新方法中。因为Sprite工具包将为每个帧自动调用
更新:
方法

您可以使用didSimulatePhysics方法。它在update方法之后被调用。我们可以确保更新方法中需要完成的所有工作都已完成,然后清理对象或循环遍历对象,并确定哪些对象需要删除

 - (void)didSimulatePhysics {

    [self removeAllObstacles];
}

- (void)removeAllObstacles {

    [blocks removeAllChildren];

    [gameLayer enumerateChildNodesWithName:@"baddies" usingBlock:^(SKNode *node, BOOL *stop) {

        if (node.position.x < - 100)
            [node removeFromParent];
    }];
}
-(void)模拟物理{
[自我移除障碍];
}
-(无效)移除所有障碍物{
[积木移除所有儿童];
[游戏玩家使用block:^(SKNode*node,BOOL*stop)枚举名为@“坏人”的儿童节点{
if(节点位置x<-100)
[节点从父节点移除];
}];
}

嘿,你如何检查精灵是否离开屏幕,通过不断检查其在更新中的位置:?(这与你的问题无关!)还有其他(更有效的)方法吗?这种方法似乎效率不高。。。没有别的办法吗?