quick cocos 的屏幕适配

按照之前做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 
最初始化,具体涉及到的如下:
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,cc.ResolutionPolicy.NO_BORDER)
    end
else
    CONfig_SCREEN_WIDTH = w
    CONfig_SCREEN_HEIGHT = h
    scale = 1.0
end
注意出现了 cc.ResolutionPolicy. NO_BORDER的地方,然后从这里附近开始,根据判断条件,自己改回以前那种习惯的方式。。。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...