【发布时间】:2014-09-18 18:03:49
【问题描述】:
我正在构建一个大致遵循 raywenderlich.com 的 How To Make a Game Like Space Invaders with Sprite Kit Tutorial: Part 1 教程的 Sprite Kit“入侵者”游戏
我遇到了enumerateChildNodesWithName 方法的问题。我正在使用该方法简单地沿其 X 轴(从左到右)移动 SKSpriteNode,并在节点位于框架右边缘 100 点以内时停止移动。
这是我对enumerateChildNodesWithName 方法的使用:
-(void)updateMoveInvaders:(NSTimeInterval)currentTime
{
[self enumerateChildNodesWithName:invaderName usingBlock:^(SKNode *node, BOOL *stop) {
[node setPosition:CGPointMake((node.position.x + 1), node.position.y)];
if (CGRectGetMaxX(node.frame) > (self.frame.size.width - 100)){
*stop = YES;
NSLog(@"should stop");
}
}];
}
逻辑似乎是正确的,因为当节点在框架边缘的 100 点内时,字符串“应该停止”被记录到控制台,但枚举并没有停止并且节点继续向右移动。为什么会这样?
我这样称呼这个方法:
- (void)update:(NSTimeInterval)currentTime
{
[self updateMoveInvaders:currentTime];
}
完整的可执行代码(Xcode 项目)可以在GitHub找到
【问题讨论】: