iOS Game一般屏幕都是横着的,那么当屏幕竖着的时候会发生什么。杯具发生了,坐标发生问题了。
当横屏时坐标原点为左下角(以下都在Game模板下),此时的大小为1024*768,而这个大小与iPad Air的大小相同,为什么是这个大小呢(也许苹果公司希望我们人手一个ipad来玩游戏,而不是拿着手机)。当你使用其他尺寸的设备时(比如iPhone),scene的size并未发生改变,这意味着什么?也就是说,当你在scene中创建一个100*100的正方形的时候,它显示在屏幕上确是一个长方形。
好的,接下来来到我们的正题——当屏幕竖着的时候发生什么了。好的,我在GameScene类中添加以下代码
这段函数能够输出在屏幕中触摸点的坐标
我依次触摸左下角、左上角、右下角、右上角(我使用5s的模拟器)输出坐标如下
发现了吗?最左边的坐标并不是从0开始,height也不是想象中的1024,到底发生什么了?我们可以看到宽的坐标大概从 297开始到727结束,而高则是从0到768。对于高我们很容易理解,是原本横屏时的高拉伸到竖屏的高,这很容易理解,在Game模板中高就是768个point(点)(类似概念),也许在横屏时一个点代表一个像素,而竖屏时一个点代表两个像素。那么既然高是拉伸的话,宽就是把点压缩了吧,但是我们残忍的发现不是的!!宽的左下角x坐标并不是从0开始,而是大概从297开始。这是为什么呢,我再次验证了横屏时的坐标点
依次左下角、左上角、右下角、右上角
果然发现问题了,宽的坐标是从0到1024这没有问题,但是高的坐标则是从97到668。这到底是为什么?(我也不知道~~~~~~~~~~~)
总结一下:横屏时的宽对应竖屏时的高,这没有问题。而横屏时的高和竖屏时的宽则超出屏幕。具体为什么,也许和设计模式有关吧,若是有大神看到此文章,又恰好知道这个问题,一定请不吝赐教。
那么如何解决这个问题呢,也就是使宽变成从0到1024,而高变成从0到768。我的办法是当进入GameScene时瞬间进入另一个Scene,而将另一个Scene的size设置成self.size。在工程中新建一个类,类继承自SKScene,起名为PlayScene,然后在GameScnene中写下以下代码
那么当你进入GameScene后瞬间又转到PlayScene中,而PlayScene的坐标则是从0—1024,0-768。