quick cocos 的螢幕適配
阿新 • • 發佈:2019-02-03
按照之前做cocos2dx的做法,是做了2套圖,一套是4:3的,一套是16:9的,對於iphone來說,就是對應5以前的短臉,和對應5以後的長臉。對於其他機器,小於等於4:3的按4:3拉伸鋪滿,大於4:3的按16:9拉伸鋪滿。
但是初識quick,發現有點不一樣。這篇文章是廖大寫的關於適配的。文中推薦是按照寬度適配。
但是我還是覺得以前的做法更科學,而且各方面配合起來也更順利。然後問題來了,我居然不知道在quick裡面怎麼改他。
此處略去大量測試方案和測試資料和測試結果和測試時間(當然我不光是找這個東西,順帶測了下其他的。。。)
最後結論如下:
在quick的display初始化的時候,會根據config裡面的設定,比較重要的是這幾個:
CONFIG_AUTOSCALE_CALLBACK
CONFIG_SCREEN_WIDTH
CONFIG_SCREEN_HEIGHT
CONFIG_SCREEN_AUTOSCALE
最初始化,具體涉及到的如下:
注意出現了cc.ResolutionPolicy.NO_BORDER 的地方,然後從這裡附近開始,根據判斷條件,自己改回以前那種習慣的方式。。。if CONFIG_SCREEN_WIDTH == nil or CONFIG_SCREEN_HEIGHT == nil then CONFIG_SCREEN_WIDTH = w CONFIG_SCREEN_HEIGHT = h end if not CONFIG_SCREEN_AUTOSCALE then if w > h then CONFIG_SCREEN_AUTOSCALE = "FIXED_HEIGHT" else CONFIG_SCREEN_AUTOSCALE = "FIXED_WIDTH" end else CONFIG_SCREEN_AUTOSCALE = string.upper(CONFIG_SCREEN_AUTOSCALE) end local scale, scaleX, scaleY if CONFIG_SCREEN_AUTOSCALE and CONFIG_SCREEN_AUTOSCALE ~="NONE" then if type(CONFIG_SCREEN_AUTOSCALE_CALLBACK) == "function" then scaleX, scaleY = CONFIG_SCREEN_AUTOSCALE_CALLBACK(w, h, device.model) end if CONFIG_SCREEN_AUTOSCALE == "FILL_ALL" then CONFIG_SCREEN_WIDTH = w CONFIG_SCREEN_HEIGHT = h scale = 1.0 glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT, cc.ResolutionPolicy.NO_BORDER) else if not scaleX or not scaleY then scaleX, scaleY = w / CONFIG_SCREEN_WIDTH, h / CONFIG_SCREEN_HEIGHT end if CONFIG_SCREEN_AUTOSCALE == "FIXED_WIDTH" then scale = scaleX CONFIG_SCREEN_HEIGHT = h / scale elseif CONFIG_SCREEN_AUTOSCALE == "FIXED_HEIGHT" then scale = scaleY CONFIG_SCREEN_WIDTH = w / scale else scale = 1.0 printError(string.format("display - invalid CONFIG_SCREEN_AUTOSCALE \"%s\"", CONFIG_SCREEN_AUTOSCALE)) end glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT, cc.ResolutionPolicy.NO_BORDER) end else CONFIG_SCREEN_WIDTH = w CONFIG_SCREEN_HEIGHT = h scale = 1.0 end