• 技术文章 >数据库 >mysql教程

    2dx 分辨率

    2016-06-07 15:00:54原创410

    1.分辨率 (1) getWinSize: 设计分辨率大小 getVisibleSize 设计分辨率能看到的小一般等于设计分辨率大小 getOpenGLView ()- getFrameSize () 屏幕的实际分辨率 getVisibleOrigin 屏幕的起点坐标左下角有时候并不是 (0, 0) CCDirector *myDirector = CCDirec

    1.分辨率

    (1)

    getWinSize: 设计分辨率大小

    getVisibleSize 设计分辨率能看到的小一般等于设计分辨率大小

    getOpenGLView()->getFrameSize() 屏幕的实际分辨率

    getVisibleOrigin 屏幕的起点坐标左下角有时候并不是 (0, 0)


    CCDirector *myDirector = CCDirector::sharedDirector()

    myDirector->getOpenGLView()->setDesignResolutionSize(640,960, ResolutionType)

    ResolutionType: (分辨率类型)

    kResolutionFixedHeight、kResolutionFixedWidth、kResolutionShowAll、kResolutionExactFit、kResolutionNoBorder
    640 960

    2:3屏幕的宽高比例把设备的分辨率设成了640 960, 如果设成320 480 用图片大小事640 960的要 scale 0.5,一般这两个值设成640 960,

    有时候可能为了适合cocosbuilder的 ccbi是320 480的,屏幕的比例大于2:3设备比较宽,否则设备是高了


    (2) kResolutionNoBorder

    noborder可以越界,此时的getWinSize 和 getVisibleSize不相等,getVisibleorigin也不是0

    ipad: 分辨率 768 1024,768:1024 > 2:3 这种分辨率类型下height = 768 x 3 /2 = 1152 ,从中间向上 下扩展

    getVisibleorigin 的x = 0 , y = (1152-1024) / 2 getVisibleSize=(768,1024) getWinSize=(768,1152

    iphone5: 分辨率640 1136, 640:1136 < 2:3 这种分辨率类型下 width = 2 / 3 x 1136 = 757 ,从中间向左 右扩展

    getVisibleorigin 的x = (757-640) / 2 , y=0 getVisibleSize=(640,1136)getWinSize=(757,1136

    粗线设备屏幕大小,细线设置后的分辨率,(0,0)起始点。

    这种配置一般适合向四周都能拖动的游戏。



    (3) kResolutionExactFit

    exactfit整个屏幕匹配,getWinSize 和 getVisibleSize相等,getVisibleorigin (0,0)

    ipad: 分辨率 640 960,768:1024 > 2:3,宽度会被自动拉伸,真正的宽度,w=1024 x 2/3 = 682,被拉伸了 768/682

    getWinSize = CCSize(640, 960)

    iphone5: 分辨率640 960, 640:1136 < 2:3,高度会被自动拉伸,真正的高度,h = 640 x 3/2 = 960,高度会被拉伸 1136/960

    getWinSize = CCSize(640, 960)

    优点:整个屏幕的适配不会有任何的黑边或填充黑边的固定图片

    缺点:在一些设备上图片会被拉伸


    (4) kResolutionShowAll

    shwoall 屏幕的比例都会安装设计的分辨率来,640 960就是3:2,多余的部分将会使黑边,ipad左右黑边,iphone5s上下黑边

    getWinSize 和 getVisibleSize相等除了黑边以外的size,getVisibleorigin (0,0)左下角不是黑边的地方开始

    ipad: 分辨率 768 1024,768:1024 > 2:3 这种分辨率类型下w=1024 x 2/3 = 682 ,两边黑边的宽度 (768-682)/2

    getWinSize = CCSize(682, 1024)

    iphone5: 分辨率640 1136, 640:1136 < 2:3 这种分辨率类型下 h = 640 x 3/2 = 960 ,上下黑边的高度 (1136-960)/2

    getWinSize = CCSize(640, 960)

    优点:按照640 960去摆放精灵,黑边2dx自己生成的,不会造成图片的拉伸

    缺点:上下或左右的黑边不能用图片填充上,黑边部分对于程序是不可见的,appstore审核不好通过


    (5) kResolutionFixedWidth

    fixedWidth 设计分辨率640 960就是2:3,宽=设计分辨率的宽,高 = 设计分辨率宽 x 设备高 / 设备宽,整个比例

    是按照屏幕比例,不是按照设备分辨率的比例,getWinSize 和 getVisibleSize相等,getVisibleorigin (0,0)从设备的左下角开始

    ipad: 分辨率 768 1024,768:1024 H=640 x 1024 / 768 = 853 。

    getWinSize = CCSize(640, 853)

    iphone5: 分辨率640 1136, 640:1136 W = 640 x 1136 / 640 = 640 。

    getWinSize = CCSize(640, 1136)

    优点:按照设备是640 960的去摆放精灵,像iPhone5s上下多余的部分用图片填充避免了黑边

    缺点:像iPhone5s 每个layer 界面的坐标 y 都要加上 (1136-960)/2

    适合设备分辨率比例 宽:高 < 2:3也就是高了,例如iphone5s


    (5) kResolutionFixedHeight

    fixedHeight 设计分辨率640 960就是2:3,=设计分辨率的高,宽 = 设计分辨率高 x 设备宽 / 设备高,整个比例

    是按照屏幕比例,不是按照设备分辨率的比例,getWinSize 和 getVisibleSize相等,getVisibleorigin (0,0)从设备的左下角开始

    ipad: 分辨率 768 1024,768:1024 H=960 x 768 / 1024 =720 。

    getWinSize = CCSize(720, 960)

    iphone5: 分辨率640 1136, 640:1136 W = 960 x 640 / 1136 = 541 。

    getWinSize = CCSize(541, 960)

    优点:按照设备是640 960的去摆放精灵,像iPad 左右多余的部分用图片填充避免了黑边

    缺点:像ipad 每个layer 界面的坐标 x 都要加上 (768-649)/2

    适合设备分辨率比例 宽:高 > 2:3也就是宽了,例如ipad


    (6)总结

    根据所做的游戏是横屏还是竖屏以及游戏的需要选择“设计分辨率”的类型。

    CCDirector *myDirector = CCDirector::sharedDirector();
        myDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
        CCSize screenSize = myDirector->getVisibleSize();
        float resolution = 2 / 3.0;
        float screenR = (float) screenSize.width / (float)screenSize.height;
        if (resolution > screenR) {//iphone5s
            myDirector->getOpenGLView()->setDesignResolutionSize(640, 960, kResolutionFixedWidth);
        } else {//ipad
            myDirector->getOpenGLView()->setDesignResolutionSize(640, 960, kResolutionFixedHeight);
        }

    建立一个最底层的 layer ,只有这个layer 放到 scene 上,其他layer123都放到 layer 上。如果是 iphone5s上下移动底层layer,

    ipad左右移动底层layer,上面的所有控件都跟着移动了,空出来的部分用图片条填充。

    CCSize screenSize = CCDirector::sharedDirector()->getVisibleSize();
        float resolution = 2 / 3.0;
        float screenR = (float) screenSize.width / (float)screenSize.height;
        float yiX = 0;
        float yiY = 0;
        if (resolution > screenR)//iphone5s
        {
            yiY = screenSize.height - 960;
        } else//ipad
        {
            yiX = screenSize.width - 640;
        }
        CCLayer* layer = CCLayer::create();
        layer->setPosition(ccp(yiX, yiY));
    这里960 640只是一个参考








    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:codeforces 514d R2D2 and Droid Army (RMQ+二分) 下一篇:XML解析以及增删改查的操作 2
    PHP编程就业班

    相关文章推荐

    • MySQL学习之聊聊流程控制和游标• 怎么查询mysql的存储引擎• linux下怎么停止mysql服务• 忘记mysql密码了怎么办• 一起分析MySQL的高可用架构技术

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网