手游铺满全屏的背景图片适配方式之一
游戏中当在显示UI界面时总是不希望背景出现黑边的,也不希望出现非等比缩放,那么就要采用适合自己的一套缩放机制,有一种方式就是做出一张按照游戏设计宽高下最宽(横屏,如果是竖屏那就是最高)的背景图,比如游戏设计宽高为1024 * 768 ,那么就做一张1136 * 768的图,讲图片在高度上缩放到屏幕高度,在iphone 5这种16:9屏幕上就是全部显示,在iphone4这种屏幕上就只显示中间部分,两端超出屏幕也就不要了,这种做法要注意当前界面上一些元素需要单独做图而不能直接画到背景图上,不然就有可能在某些设备上超出屏幕了,比如登录界面上的游戏LOGO;
上面的做法虽然简单粗暴,但如果从美术设计上能够接受,那么不失为一种标准的做法,如果在美术上不能接受直接抛弃了图片两端的设计,那么可以采取一些措施来做到讲上下部位也删减一部分,而保留了两端一些原本会被删出的部位,代码如下:
1 CCSize winSize = CCDirector::sharedDirector()->getWinSize(); 2 float winRatio = winSize.width / winSize.height; 3 float bgRatio = bg->getContentSize().width / bg->getContentSize().height; 4 float targetScale = winSize.height / bg->getContentSize().height; 5 if (bgRatio <= winRatio) 6 { 7 targetScale = winSize.width / bg->getContentSize().width; 8 } 9 bg->setScale(targetScale);