使用 cocosbuilder3.0 为多设备开发通用UI

从CocosBuilder3.0 开始,引起了自动缩放目录的支持, 我们可以把资源放到这个目录中, 然后CCB会根据目标设备,缩放到一个合理的尺寸中

再在Cocos2D-X中,通过判断设备类型,引进对应的目录中的资源, 这种新的机制, 给我们提供了许多的方便


自动缩放前的资源:

CCB\Resources\Resources-auto\xxxxxx.png


自动缩放后的资源:

CCB\Published-IOS\resources-iphone\xxxxxx.png

CCB\Published-IOS\resources-iphonehd\xxxxxx.png

CCB\Published-IOS\resources-ipad\xxxxxx.png

CCB\Published-IOS\resources-ipadhd\xxxxxx.png

CCB\Published-Android\resources-resources-xsmall\xxxxxx.png

...


cocos2d-x中的程序代码:

需要根据当前设备的类型,加载对应的资源,这里给出部份代码:

在AppDelegate.cpp中的applicationDidFinishLaunching 函数中加入以下代码:

    std::vector<std::string>vecFindPath;


    TargetPlatform target = getTargetPlatform();

    CCSize frameSize = pEGLView->getFrameSize();

    switch (target)

    {

        case cocos2d::kTargetIphone:

        {

            vecFindPath.push_back("Published-iOS");

            if(frameSize.width==480 && frameSize.height==320)                   //iphone3g

            {

                vecFindPath.push_back("Published-iOS/resources-iphone");

            }

            else if(frameSize.width==960 && frameSize.height==640)              //iphone4

            {

                vecFindPath.push_back("Published-iOS/resources-iphonehd");

            }

            else if(frameSize.width==1136 && frameSize.height==640)              //iphone5

            {

                vecFindPath.push_back("Published-iOS/resources-iphone5");        //这个不是自动生成的,3/4的图不好适应,可以单独在这里做适配

                vecFindPath.push_back("Published-iOS/resources-iphonehd");

            }

            else

            {

                CCMessageBox("资源加载失败,无法识别iphone手机版本型号!", "错误");

            }

        }break;

        case cocos2d::kTargetIpad:

        {

            vecFindPath.push_back("Published-iOS");

            if(frameSize.width==1024 && frameSize.height==768)                   //ipad/ipadmini

            {

                vecFindPath.push_back("Published-iOS/resources-ipad");

            }

            else if(frameSize.width==2048 && frameSize.height==1536)             //ipad3/ipad4

            {

                vecFindPath.push_back("Published-iOS/resources-ipadhd");

            }

            else

            {

                CCMessageBox("资源加载失败,无法识别ipad版本型号!", "错误");

            }

        }break;

        case cocos2d::kTargetAndroid:

        {

            vecFindPath.push_back("Published-Android");

            //...

        }break;


这样便可以轻松的使用一套资源图片适配到所有设备了, 但注意在CCB中设计的时候一定要换百分比去调整位置, 否则就很难实施起来了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值