quick - lua 分辨率适配

来源:互联网 发布:平面设计软件cdr 编辑:程序博客网 时间:2024/06/06 14:16

Quick中CONFIG_SCREEN_AUTOSCALE的值有三种情况:

  1. FIXED_WIDTH:保持传入的设计分辨率宽度不变,根据屏幕分辨率修正设计分辨率的高度。

  2. FIXED_HEIGHT:保持传入的设计分辨率高度不变,根据屏幕分辨率修正设计分辨率的宽度。

  3. FILL_ALL:保证了设计区域总有一个方向铺满屏幕,另一个方向可能超出屏幕或留有黑边。

却没有全屏幕适配 (EXACT_FIT 填充屏幕,可能会拉伸) 和 等比例拉伸(SHOW_ALL 可能会有黑边) 的情况,需要修改代码增加这个功能。

修改 display.lua
分辨率处理部分, 在下面标注的地方加入代码,120行左右。

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        if cc.bPlugin_ then            glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT, cc.ResolutionPolicy.NO_BORDER)        else            glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT, cc.ResolutionPolicy.FILL_ALL)        end    --添加 修改 begin    elseif CONFIG_SCREEN_AUTOSCALE == "EXACT_FIT" then        scale = 1.0        glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT, cc.ResolutionPolicy.EXACT_FIT)    elseif CONFIG_SCREEN_AUTOSCALE == "SHOW_ALL" then        scale = 1.0        glview:setDesignResolutionSize(CONFIG_SCREEN_WIDTH, CONFIG_SCREEN_HEIGHT, cc.ResolutionPolicy.SHOW_ALL)    --添加 修改 end    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)    endelse    CONFIG_SCREEN_WIDTH = w    CONFIG_SCREEN_HEIGHT = h    scale = 1.0end

修改代码后,设置

CONFIG_SCREEN_AUTOSCALE = "NO_BORDER"或者CONFIG_SCREEN_AUTOSCALE = "SHOW_ALL"
0 0
原创粉丝点击