Cocos2dx个人笔记之屏幕适配

一、使用多套资源实现屏幕适配

早期iPhone的型号不多,屏幕适配就简单粗暴地准备N套资源,

在Cocos2dx2.0.4之前出现的屏幕适配,以资源为主的5个设备:5套资源

现在我模拟一下,在资源Resources文件夹下新建两个文件夹large,small分别存资源

然后在AppDelegate.cpp中,scene创建之前写一下代码

    std::vector<std::string> v;
    auto winSize = Director::getInstance()->getWinSize();
    if (winSize.width < 800) {
        v.push_back("small");
    }else if (winSize.width >= 800 )
    {
        v.push_back("large");
    }
    FileUtils::getInstance()->setSearchPaths(v);
得到当前设备分辨率winSize,判断其大小,然后将文件名字符串放入一个std::vector容器中,使用文件操作工具单例设置资源查找目录为Resources/large或Resources/small(当资源庞大起来这做法实在太笨重了)

这样就完成了准备N套资源的简单实现(不建议使用的屏幕适配方案)


二、使用缩放因子概念实现屏幕适配

在CCGLView中有一个方法叫setDesignResolutionSize,就是利用这方法跨平台的屏幕适配

用此方法设置设计分辨率大小,方法原型:

virtual void setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy)

前两个参数就是你要把游戏设计成多宽多高,就是你的设计解决宽度与高度。

第三个参数是适配方案ResolutionPolicy,这是一个枚举类

enum class ResolutionPolicy
{
    // 整个视图可显示但可能破坏了宽高比,可能发生畸变,视图拉伸或者压缩
    EXACT_FIT,
    // 视图填充,不会失真,为了保持宽高比可能会裁剪一部分
    NO_BORDER,
    //整个视图可显示,不会失真,为了保持宽高比在视图的上下边或左右边可能出现黑边
    SHOW_ALL,
    // 视图根据你设计的高度与实际设备高度的height缩放因子去约束视图的宽
    FIXED_HEIGHT,
    // 视图根据你设计的宽度与实际设备宽度的width缩放因子去约束视图的高
    FIXED_WIDTH,
    UNKNOWN,
};

这就是引擎所提供的解决方案,具体到底是什么效果需要你一个一个去试,在不同分辨率设备模拟器上跑去看效果。

AppDelegate.cpp中设置glview->setDesignResolutionSize(480, 320, ResolutionPolicy::EXACT_FIT);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值