日期:2014-05-16  浏览次数:20803 次

windows phone 8 游戏的屏幕方向和屏幕分辨率处理

-----------------吐槽,嫌烦的直接跳过

        狗日的微软太tmd的恶心了,一个基本并且简单的问题爷搞了两天都没有搞定。对于微软的一帮官僚主义老学究,一骂就收不住口了,那帮工程师最喜欢干的事就是今天退出一个新技术告诉你这个有多么神奇,明天又说这个技术已经不被支持,以至于人们都有一种观念,学程序必须要精力旺盛,能跟得上学习的步伐,否则一年不学新技术就落伍了。这个是真的吗?狗屁!!

        看看Android或者iOS,6年时间了,框架有所改变,功能有所改变,但是核心始终如一。以至于iOS的ui中换了几个重要的api都引来一片骂声。 但是,诸位大爷,看看微软的官老爷们。WP7的框架说废弃就废弃了,WP8又好到哪里去了吗? direct2d说不支持就不支持,大爷,那你在windows 8 推荐个啥子呦。今天推出一个.net,明天推出一个某某#,后天又推出什么WPF。不停的给程序员找麻烦很好玩吗?

       这些新推出的牛b哄哄的东西很好用吗? 很好用我就不会在这里吐槽了。 拿wp8来说,你已经比iOS出来的晚了6年了,咋一点长进都没有? 接口啥的参考下已经成熟的系统要死啊。  自以为是的推出一个系统,但是别说把iOS和Android的游戏移植上去,就算把wp7的游戏移植上去都是一件麻烦事。 自己给自己套枷锁,爽吧?!!  怪不得wp8上面应用少的可怜,游戏少的可怜,好用的让人眼前一亮的游戏和应用基本没有。 纯粹是作茧自缚。 那帮开发者真该被拉出去tjjtds。  wp8上面移植不易(相信我,除了诺基亚,没有谁会专门为了wp8开发游戏),所以游戏少的可怜,所以市场不被重视,所以开发者更少,所以游戏更少,这tmd完全是一个恶性循环。


-------------------正文

1、屏幕方向处理

      细节可以网上google这个还是可以搜索的到的,首先你可以通过DisplayProperties::CurrentOrientation这个属性来获取屏幕方向,然后。。。。然后就没有然后了。

      你的游戏无论是横屏还是竖屏都需要自己处理屏幕的旋转,上面这个属性只是获取屏幕方向,wp8不会帮你做任何东西。 屏幕的分辨率永远都是480*800(多分辨率后面再讨论)。如果你的游戏是竖屏的,那还好,不需要做特殊处理,如果你的游戏是横屏的,那么你需要在drawscene的时候添加一个旋转矩阵,手动的旋转屏幕。而同时创建的窗口和viewport都应该是竖屏的(480*800)。 或者这么说,setDesignResolutionSize时如果是1024*768这样的横屏分辨率,要修改为768*1024这样的竖屏分辨率。但是,但是,但是,你的游戏逻辑代码应该都是横屏处理的,即CCDirector::getWinSize()返回的应该是1024*768,而不是我们设置的1024*768。  好了,我已经凌乱了,你的思路还清晰吗?


2、屏幕分辨率处理

     CoreWindow->Bounds这个属性返回的是设备无关的屏幕窗体大小。而不是分辨率,这个要注意。

     wp8支持三种分辨率:

          WVGA 480 × 800 = 1x(480 × 800)

          WXGA 768 × 1280 = 1.6x(480 × 800)

          720p 720 × 1280 = 1.5x(480 × 853)

    创建渲染窗口设备的时候使用的应该是768*1280这样的分辨率数值,而不是后面的480*800。  这里要注意最后的720p,他娘的竟然会比正常的设备长一点,长就长吧,你像iOS5一样给个新的分辨率也好啊,分辨率依然是480*800的倍数,但是如果你使用这个分辨率而不做其他的特殊处理,那么你的游戏最上面就会被裁掉一点。