quick cocos 的屏幕适配

前端之家收集整理的这篇文章主要介绍了quick cocos 的屏幕适配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

按照之前做cocos2dx的做法,是做了2套图,一套是4:3的,一套是16:9的,对于iphone来说,就是对应5以前的短脸,和对应5以后的长脸。对于其他机器,小于等于4:3的按4:3拉伸铺满,大于4:3的按16:9拉伸铺满。


但是初识quick,发现有点不一样。这篇文章是廖大写的关于适配的。文中推荐是按照宽度适配。


但是我还是觉得以前的做法更科学,而且各方面配合起来也更顺利。然后问题来了,我居然不知道在quick里面怎么改他。


此处略去大量测试方案和测试数据和测试结果和测试时间(当然我不光是找这个东西,顺带测了下其他的。。。)


最后结论如下:

在quick的display初始化的时候,会根据config里面的设置,比较重要的是这几个:

  1. CONFIG_AUTOSCALE_CALLBACK
  2.  
  3. CONFIG_SCREEN_WIDTH
  4. CONFIG_SCREEN_HEIGHT
  5.  
  6. CONFIG_SCREEN_AUTOSCALE
最初始化,具体涉及到的如下:
  1. if CONFIG_SCREEN_WIDTH == nil or CONFIG_SCREEN_HEIGHT == nil then
  2. CONFIG_SCREEN_WIDTH = w
  3. CONFIG_SCREEN_HEIGHT = h
  4. end
  5.  
  6. if not CONFIG_SCREEN_AUTOSCALE then
  7. if w > h then
  8. CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT"
  9. else
  10. CONFIG_SCREEN_AUTOSCALE = "FIXED_WIDTH"
  11. end
  12. else
  13. CONFIG_SCREEN_AUTOSCALE = string.upper(CONFIG_SCREEN_AUTOSCALE)
  14. end
  15.  
  16. local scale,scaleX,scaleY
  17.  
  18. if CONFIG_SCREEN_AUTOSCALE and CONFIG_SCREEN_AUTOSCALE ~="NONE" then
  19. if type(CONFIG_SCREEN_AUTOSCALE_CALLBACK) == "function" then
  20. scaleX,scaleY = CONFIG_SCREEN_AUTOSCALE_CALLBACK(w,h,device.model)
  21. end
  22.  
  23. if CONFIG_SCREEN_AUTOSCALE == "FILL_ALL" then
  24. CONFIG_SCREEN_WIDTH = w
  25. CONFIG_SCREEN_HEIGHT = h
  26. scale = 1.0
  27. glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH,CONFIG_SCREEN_HEIGHT,cc.ResolutionPolicy.NO_BORDER)
  28. else
  29. if not scaleX or not scaleY then
  30. scaleX,scaleY = w / CONFIG_SCREEN_WIDTH,h / CONFIG_SCREEN_HEIGHT
  31. end
  32.  
  33. if CONFIG_SCREEN_AUTOSCALE == "FIXED_WIDTH" then
  34. scale = scaleX
  35. CONFIG_SCREEN_HEIGHT = h / scale
  36. elseif CONFIG_SCREEN_AUTOSCALE == "FIXED_HEIGHT" then
  37. scale = scaleY
  38. CONFIG_SCREEN_WIDTH = w / scale
  39. else
  40. scale = 1.0
  41. printError(string.format("display - invalid CONFIG_SCREEN_AUTOSCALE \"%s\"",CONFIG_SCREEN_AUTOSCALE))
  42. end
  43. glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH,cc.ResolutionPolicy.NO_BORDER)
  44. end
  45. else
  46. CONFIG_SCREEN_WIDTH = w
  47. CONFIG_SCREEN_HEIGHT = h
  48. scale = 1.0
  49. end
注意出现了 cc.ResolutionPolicy. NO_BORDER的地方,然后从这里附近开始,根据判断条件,自己改回以前那种习惯的方式。。。

猜你在找的Cocos2d-x相关文章