问题出现情况:父node(以下称nodeRoot)维护一个NSArray,存放若干SKNode,用于分层(以下称layer),往nodeRoot添加子node时都添加到其指定layer上。现在layerA上添加了nodeA,在对nodeA执行以下逻辑
SKAction *dismissAction = [SKAction fadeOutWithDuration:0.1];
SKAction *moveAway = [SKAction removeFromParent];
[nodeA runAction:[SKAction sequence:@[dismissAction, moveAway]] withKey:@"dismiss"];
后,即移除nodeA后,余下的node得不到响应。
解决方法:
在dismissAction 和 moveAway 之间将nodeA移出可见范围:
SKAction *dismissAction = [SKAction fadeOutWithDuration:0.1];
SKAction *moveDown = [SKAction moveByX:0 y:-self.size.height duration:0.1]; /*需要先移走再移除,否则移除后node得不到响应*/
SKAction *moveAway = [SKAction removeFromParent];
[nodeA runAction:[SKAction sequence:@[dismissAction, moveDown, moveAway]] withKey:@"dismiss"];
具体原因有待研究。。。