我正在使用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.size
和oldSize
不会在通话之间更新。
忽略第二个电话的最佳方法是什么?感谢。
更新
作为解决方案,我将屏幕大小存储在iVar中(并将其用作" oldSize"在didChangeSize中)。然后我在didChangeSize方法的末尾手动更新iVar。因此,在第二个didChangeSize调用" oldSize" (我现在从iVar获得)已经改变了。