quick cocos 的屏幕适配

本文介绍了在Quick Cocos2d-x框架中进行屏幕适配的实践和思考。传统的做法是为不同比例的设备准备两套图片资源,而Quick则推荐宽度适配。作者经过一系列测试,认为之前的4:3和16:9适配方法更为合理,但在Quick中未能找到相应的调整方式。最终,在深入研究后得出结论,涉及Quick的display初始化和config设置的关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值