cocos适配_cocos2dx适配 - CSDN
精华内容
参与话题
  • cocos 适配

    2018-07-25 15:45:15
    因为搞了好几次cocos creator发现每次换工作都会有适配的问题,网上也没找到一个完美的办法。自己总结了一个适配方案目前这两年好像基本没出什么问题,这里记录一下原理,有不对的或者更好的方法,欢迎大家告诉我。 ...

           因为搞了好几次cocos creator发现每次换工作都会有适配的问题,网上也没找到一个完美的办法。自己总结了一个适配方案目前这两年好像基本没出什么问题,这里记录一下原理,有不对的或者更好的方法,欢迎大家告诉我。

            我们知道cocos有三种适配方案,Fit Height,按Fit Width和showAll。如果只用一种不管怎么都不能满足所有屏幕前两种要么是有黑边要么就是不能显示全部的内容,showAll能保证全部显示但是会有黑边,这个黑边还不能用放大背景挡住所以直接就把这个抛弃了。

          然后我就想能不能用其他的两个方法实现showAll这样既能保证全部显示而且还可以显示放大的背景了。就按照showAll的思路取到实际屏幕大小和设计分辨率的比例。如果w1/w2 < h1/h2我就用Fit Height不然就Fit Width,然后背景放大,放大的比例就是这两个中大的哪一个啦。如果你用的是cocos的话可能你还需要对子控件位置做下对应比例的位移或者用的是相对位置。如果用cretor的话直接用widget控制就好。这种方式可以满足能全部显示你游戏内容而且每个组件直接的距离只会增加不会减少。最后上个代码

    展开全文
  • CocosCreator适配

    千次阅读 多人点赞 2019-07-16 17:23:02
    推荐阅读: ...今天给大家提供三种CocosCreator常用的三种适配方式,废话不多说,直接上代码 /************************** * * @author:shirln * @time:2019.7.15 */ cls.Ground = cc.Class({ ...

    推荐阅读:

    今天给大家提供三种CocosCreator常用的三种适配方式,废话不多说,直接上代码

    /**************************
     * 
     * @author:shirln
     * @time:2019.7.15
     */
    
    cls.Ground = cc.Class({
        extends: cc.Component,
    
        statics: {
            
            // 所有UserInfo节点列表
            pool: [],
    
            ///
            // update
    
        },
    
        properties: {
            mode: { default: 1 },
        },
    
        // LIFE-CYCLE CALLBACKS:
    
        // onLoad () {},
    
        start() {
            gm.Ground = this;
    
            // 视口大小
            var csz = cc.view.getCanvasSize();
            // 设计分辨率
            var des = new cc.Vec2(1080, 1920);
            // 进行分辨率适配
            cc.view.setDesignResolutionSize(des.x, des.y, cc.ResolutionPolicy.SHOW_ALL);
    
            // fitWidth
            var sx = csz.width / des.x;
            // fitHeight
            var sy = csz.height / des.y;
            // show_all
            var min = Math.min(sx, sy);
            // EXACT_FIT
            var max = Math.max(sx, sy);
    
            /// show_all下缩放背景
            if (this.mode == 1) {
                // 等比例黑边
                this.node.setScale(max / min, max / min);
            }
            else if (this.mode == 2) {
                // 拉伸填充
                this.node.setScale(sx == min ? 1 : max / min, sy == min ? 1 : max / min);
            }
            else if (this.mode == 3) {
                // 等比例裁剪
                this.node.setScale(max / max, max / max);
            }
    
        },
    
        // update (dt) {},
    
    });
    
    

    使用方法:在需要适配的面板上添加该脚本,并为其指定适配模式(1,2,3),三选一
    这里需要注意的是,当你使用ScrollView组件时,可能会出现bug:scrollView种超过区域的内容不会被裁剪,例如,红框范围为ScrollView:
    在这里插入图片描述
    解决方法:为添加view添加widget组件,并为其指定对其目标为ScrollView,如下:
    在这里插入图片描述

    展开全文
  • 【唠叨】  手机的屏幕大小千差万别,如现在流行的安卓手机屏幕大部分长宽比例为16:9。而iPhone 5S的长宽比例为71:40(接近16:9)... 要想让你的程序在各种手机上都能很好的呈现游戏画面,就需要进行屏幕适配。 ...

    【唠叨】

        手机的屏幕大小千差万别,如现在流行的安卓手机屏幕大部分长宽比例为16:9。而iPhone 5S的长宽比例为71:40(接近16:9),也有预测说iPhone 6S的长宽比例也将会是主流的16:9。另外还有一些平板电脑为4:3、16:10、5:4等等。当然还有一些其他的牌子可能屏幕比例也不一样。

        要想让你的程序在各种手机上都能很好的呈现游戏画面,就需要进行屏幕适配

     

    【致谢】

        http://gl.paea.cn/contents/10adab2de4f4bf1c.html

     

    【小知识】

        分辨率:是指屏幕图像的精密度,即显示器所能显示的像素有多少。

                如:分辨率480×320的意思是水平方向含有像素数为480个,垂直方向像素数320个。

                屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。

                同时分辨率也反映了屏幕长宽比例(如15:10)。

     

    【3.x】

        请移步:http://shahdza.blog.51cto.com/2410787/1550089

     

     


     

    【屏幕适配】

     

    1、两个分辨率

        1.1、窗口分辨率

        在main.cpp中有个设置窗口分辨率的函数。该函数是设置了我们预想设备的屏幕大小,也就是应用程序窗口的大小。

    //
    	eglView->setFrameSize(480, 320);
    //

        

        1.2、设计分辨率(可视区域)

        在AppDelegate.cpp中也有个设置设计分辨率的函数。该函数是设置了我们游戏设计时候的分辨率,也就是可视区域的大小,也就是说设计者初衷的游戏可视区域的分辨率屏幕大小。

        但是对于每个用户来说,他们使用的设备不一定是(480/320)的,比如手机有大有小。

        而后面的kResolutionShowAll,意思是按照原比例(480/320)进行放缩以适配实际屏幕大小。

    //
    	CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480,320,kResolutionShowAll);
    //

        

        以下贴了三张对比图,加深理解。

        (1)这是原图片大小,窗口大小为480 * 320。

    wKiom1QGyKzzrEiyAAEGcXbYaxQ985.jpg

     

        (2)若设置窗口大小为setFrameSize(960, 640),而不设置设计分辨率kResolutionShowAll的情况下,图片不放缩,原图还是480 * 320。

    wKioL1QGyLDDGT0EAAF1kC25cqU991.jpg

        

        (3)设置了kResolutionShowAll之后,图片放缩到适配整个屏幕960 * 640 了。

    wKiom1QGyK2hDNN0AAL4YpbsOus524.jpg

     

     

    2、五种适配模式

        从上面的讲解我们可以了解到,setFrameSize()是设置了窗口大小(即屏幕的实际大小),而这个参数只是为了我们开发时作为模拟参照,在实际手机上运行时,手机的屏幕大小是我们无法设置的。

        而屏幕适配的关键在于setDesignResolutionSize(),通过它来设置可视区域的分辨率以及屏幕适配模式。该函数的前两个参数为分辨率(即屏幕长宽比例),而最后一个参数则是适配的模式。

     

        2.1、适配模式

        (1)kResolutionExactFit   :拉伸变形,使铺满屏幕。

        (2)kResolutionNoBorder   :按比例放缩,全屏展示不留黑边。

                                        (长宽中小的铺满屏幕,大的超出屏幕)

        (3)kResolutionShowAll    :按比例放缩,全部展示不裁剪。

                                        (长宽中大的铺满屏幕,小的留有黑边)

        (4)kResolutionFixedWidth :按比例放缩,宽度铺满屏幕。

        (5)kResolutionFixedHeight:按比例放缩,高度铺满屏幕。

     

        2.2、计算方法

        假设:屏幕分辨率(fWidth,fHeight) ; 设计分辨率(dWidth,dHeight)。

              放缩因子:k1 = fWidth/dWidth ; k2 = fHeight/dHeight。

        则适配后的分辨率大小如下:

        (1)kResolutionExactFit   :( dWidth * k1         , dHeight * k2         )

        (2)kResolutionNoBorder   :( dWidth * max(k1,k2) , dHeight * max(k1,k2) )

        (3)kResolutionShowAll    :( dWidth * min(k1,k2) , dHeight * min(k1,k2) )

        (4)kResolutionFixedWidth :( dWidth * k1         , dHeight * k1         )

        (5)kResolutionFixedHeight:( dWidth * k2         , dHeight * k2         )

     

        2.3、有图有真相

            屏幕大小:400 X 400 。

            可视区域大小:480 X 320 。

            根据上面的计算方法,自己慢慢琢磨吧。i_f32.gif

    wKioL1QG8-7hZS8WAADziEkMLFg490.jpg        wKiom1QG8-zxDYe8AAEkbDd4bjs111.jpg

     

    wKioL1QG8-_DqPM-AAEZ_8A6D34121.jpg        wKiom1QG8-zBwDRiAAD00smIMss790.jpg

     

    wKioL1QG8-_TuGsLAAD39oAYrEo645.jpg        wKioL1QG8--giZa-AAEgbplGZdw587.jpg

     

    3、横竖换屏

        cocos2dx开发的游戏,在手机上运行的时候,默认是横屏的

     

        3.1、Android

        AndroidManifest.xml文件中

        (1)android:screenOrientation = "landscape"   //横屏显示(默认)

        (2)android:screenOrientation = "portrait"    //竖屏显示

    wKioL1QG91fAaz39AACtvtKDipE264.jpg

     

        3.2、IOS

    //
    	- (NSUInteger) supportedInterfaceOrientations{
    		//横屏显示
    		//return UIInterfaceOrientationMaskLandscape;
    		
    		//竖屏显示
    		return UIInterfaceOrientationMaskPortrait;
    	}
    //

     

    4、屏幕大小及坐标

        (1)WinSize        :屏幕大小

        (2)VisibleSize    :可视区域大小

        (3)VisibleOrigin  :可视区域的左下角坐标

    //
    	CCDirector::sharedDirector()->getWinSize()
    	CCDirector::sharedDirector()->getVisibleSize();
    	CCDirector::sharedDirector()->getVisibleOrigin();
    //

     

        图解:

    wKiom1QG-yKzBaDwAACvTwPsE8c748.jpg

    展开全文
  • cocos2dx分辨率适配

    2018-04-24 15:46:16
    cocos2dx分辨率适配

    分辨率适配的这项工作完成的任务是让图片资源随着设备分辨率的变化自动放大和缩小,假如没有做这项工作(比如不使用引擎的默认支持方案),则会当屏幕分辨率和设备分辨率不一致的时候,屏幕上出现黑边或者显示不完全.

    【基础概念】分辨率:是指屏幕图像的精密度,即显示器所能显示的像素有多少。如:分辨率480×320的意思是水平方向含有像素数为480个,垂直方向像素数320个。屏幕尺寸一样的情况下,分辨率越高,显示效果就越精细和细腻。同时分辨率也反映了屏幕长宽比例.通常设计分辨率会采用市场目标群体中使用率最高的设备的屏幕分辨率,比如目前安卓设备中 800 x 480和 1280 x 720 两种屏幕分辨率,或 iOS 设备中 1136 x 640 和 960 x 640 两种屏幕分辨率。这样当美术或策划使用设计分辨率设置好场景后,就可以自动适配最主要的目标人群设备。

    资源分辨率:图片本身的分辨率

    屏幕分辨率:用户实际设备的分辨率,可以通过director->getOpenGLView()->getFrameSize()获取,director->getOpenGLView()->setFrameSize()设置.也就是说,我们想观察游戏在何种分辨率设备上的运行效果时,只需要设置setFrameSize()就可以了.

    设计分辨率:游戏运行时资源不需要缩放的正好合适的分辨率,可以通过director->getOpenGLView()->setDesignResolutionSize()设置.

    假如不使用设计分辨率(注释掉applicationDidFinishLaunching中的director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);),一个为苹果4S(960*640)设计的图在苹果6(1334*750)的显示效果是这样的:


    这种留有黑边,并且背景图不居中的效果显然不能满足需要,接下来看setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL)效果:


    可以看到图片自动居中,并且整体放大了,并且保持了长款比例,缺点是左右留有黑边.传给setDesignResolutionSize的第三个参数ResolutionPolicy::SHOW_ALL被称之为适配策略,除了SHOW_ALL之外再来看其他几个策略的效果:

    ResolutionPolicy::EXACT_FIT:


    可以看到EXACT_FIT策略的优势是能填满整个屏幕,但是对图片有拉伸

    NO_BORDER:


    可以看到NO_BORDER策略的优势是可以填满整个屏幕,但是图片会超出屏幕范围.


    展开全文
  • cocos2dx3.2 ——屏幕适配

    万次阅读 多人点赞 2014-09-26 21:17:21
    文章转载:shahdza 的BLOG
  • cocos creator之分辨率、屏幕适配

    万次阅读 2018-08-28 14:29:00
    屏幕适配的基本原理 三种分辨率 设计分辨率 在cocos creator编辑器中设计的屏幕分辨率,一般就是Canvas的大小 上图中的Canvas的大小是640*960,那么设计分辨率也是640*960 获取设计分辨率的代码如下 let ...
  • Cocos2d-x屏幕适配

    千次阅读 2017-01-11 15:57:19
    Cocos2d-x屏幕适配
  • Cocos2dx 全面屏适配

    千次阅读 2019-04-22 20:58:14
    android适配: 参考资料:http://developers.googleblog.cn/2017/04/android.html 在AndroidManifest.xml中可做如下配置: <meta-data android:name="android.max_aspect" android:value="2.1" /> ...
  • cocos creator屏幕自适应方式

    万次阅读 2018-04-05 13:58:14
    cocos creator屏幕自适应,官方文档给出了几种方式,现在介绍如下:Fit Height : 意思是将设计分辨率的高放大到跟设备的屏幕分辨率的高相同,他们之间是形成了相当的比例的,这时候Canvas的大小是变得,但是它的子...
  • cocos2dx iphoneX 游戏适配

    万次阅读 2017-12-23 16:35:43
    最近几天在研究游戏适配IphoneX机型的问题,现总结一下以防忘记: 之前想着通过采用网上一篇介绍cocos2dx 适配X的方法实现全屏,链接:https://mp.weixin.qq.com/s/2icxj1E8t2540Zr0j4aIZA,这样是解决了全屏的问题...
  •  Cocos2d-x 完美适配iphone、ipad(包括retina模式)猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!原文地址: http://www.Cocos2dev.com/?p=245项目中需要同时适配iphone和...
  • 闲来无事,整理了一下cocos2dx的屏幕适配策略,本文适用于想快速理解cocos2dx适配的开发者。 我们先假设:以854 * 480 的屏幕为标准进行开发,当然,这也就是cocos2dx所说的设计分辨率(Design Resolution)。 先介绍几...
  • Cocos2D 如何做 Android 适配

    千次阅读 2013-04-22 09:33:28
    我们知道Cocos2D 是跨平台的 ( Android, iOS, BlackBerry ), 因此它必须把自己适配到不同平台上, 这些适配包括: 1) 屏幕显示 2) 用户输入 3) 进程主循环 4) 资源文件 (图片,音乐) 资源适配 Android 的程序...
  • 关于cocos studio 适配问题

    千次阅读 2016-01-09 16:42:41
    我们在适配会遇到各种问题,我们一般会用cocos studio 来做UI适配,但是它也不是万无一失的,那么怎么办呢?我们在进行UI适配的时候,我们就采用Panel来装下整个UI界面,只需要对这个一个子节点来进行适配即可,其他...
  • 1,cnonfig.lua 目的是为了以高为极限。 autoscale = "EXACT_FIT", 修改成 FIXED_HEIGHT ,2,接下来的场景。每个场景都要自己算位移坐标。 local scene = display.newScene("Logon");... self:setPosition(300,0)....
  • cocos2dx游戏之适配iPhoneX屏幕

    千次阅读 2018-05-15 20:22:39
    最近项目中有关于做iPhoneX屏幕适配问题,关键是这个项目已经做的差不多了,唯独iPhoneX屏幕没有适配,然后这个适配任务就落到我身上了,好了,话不多说,开始记录。。。 开始搞时在网上也查看了很多资料,但是由于...
  • Cocos2d-x lua 屏幕适配

    千次阅读 2015-01-05 00:17:59
    研究了两天屏幕适配,了解了Cocos提供的屏幕适配的方案有下面几种: 1, EXACT_FIT 使用这个选项,可以保证设计区域完全铺满屏幕,但是可能会出现界面被拉伸。 2, SHOW_ALL 按原始比例进行缩放,图片不变形,为了...
  • 暂时在网上还没找到一个让cocos2d开发的IPhone游戏快速地适应IPAD2 Retina模式的教程。确实,如果在项目开展初期没有规划好“一个app,多处适配”的话,到了开发末期才来做分辨率适配是比较麻烦的事,因为需要涉及到...
  • Cocos2d-JS 适配、打包微信小游戏教程 —————————————————————————————————————————— 进去需要下载两个东西 ——————————————————————————...
  • cocos creator 自适应宽高的label

    千次阅读 2017-09-07 15:50:14
    cocos creator 自适应宽高的label自适应宽高解决办法:1)需要自适应的气泡结构采用 Sprite背景 + label ->NodeA2)NodeA主要设置属性:添加横向纵向两个layout组件(type: 对应方向, ResizeMode: container)3)节点...
1 2 3 4 5 ... 20
收藏数 5,212
精华内容 2,084
关键字:

cocos适配