设置SKSceneScaleModeResizeFill时,SKScene didChangeSize调用了两次

时间:2014-07-24 19:06:04

标签: ios sprite-kit

我正在使用SKScene的didChangeSize方法尝试在场景调整大小时将节点保持在场景的中心,如下所示:

-(void)didChangeSize:(CGSize)oldSize {
    CGPoint newPosition;
    newPosition.x = self.someNode.position.x + (self.size.width - oldSize.width)/2;
    newPosition.y = self.someNode.position.y + (self.size.height - oldSize.height)/2;
    self.someNode.position = newPosition;
}

场景使用scene.scaleMode = SKSceneScaleModeResizeFill;

然而,当场景的视图改变大小时,例如在方向改变时,场景的didChangeSize方法被调用两次(来自-[SKScene setSize:]-[SKView layoutSubviews]。此外,self.sizeoldSize不会在通话之间更新。

忽略第二个电话的最佳方法是什么?感谢。

更新

作为解决方案,我将屏幕大小存储在iVar中(并将其用作" oldSize"在didChangeSize中)。然后我在didChangeSize方法的末尾手动更新iVar。因此,在第二个didChangeSize调用" oldSize" (我现在从iVar获得)已经改变了。

0 个答案:

没有答案