zoukankan      html  css  js  c++  java
  • cocos2dx ResolutionPolicy

    FrameSize 参数,在游戏运行时,我们可以通过 CCEGLView::sharedOpenGLView()->getFrameSize();如果在手机上运行,那么不同分辨率将会得到不同的值

    1. CCEGLView::sharedOpenGLView()->setDesignResolutionSize(720, 480, kResolutionShowAll);
    2. CCEGLView::sharedOpenGLView()->setDesignResolutionSize(720, 480, kResolutionExactFit);

    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

     

      kResolutionExactFit 牺牲了画质而保持了全屏显示,对画面进行了拉伸

      kResolutionShowAll 为了保持设计画面比例对四周进行留黑边处理,使得不同比例下画面不能全屏

    kResolutionNoBorder

    其一:游戏画面全屏;其二:保持设置游戏时的宽高比例,相比 kResolutionShowAll 有所区别的是,为了填补留下的黑边,将画面稍微放大,以至于能够正好补齐黑边

    CCEGLView::sharedOpenGLView()->getScaleY()

    ========

    获取设备屏幕实际分辨率需要使用CCSize szFrame = pEGLView->getFrameSize();

    kResolutionNoBorder: 看不到黑边,实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。

    kResolutionShowAll:全部显示,可以理解为保证内容都显示在屏幕之内,实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个

    setPosition(const CCPoint &position);
    这里传入的参数不是像素,也和传统的point有不同,它指的是在designResolutionSize参照下的坐标

    CCDirector::sharedDirector()->getWinSize();   获取的是designResolutionSize
    CCDirector::sharedDirector()->getWinSizeInPixels();  获取的是getWinSize*contentScaleFactor之后的值

    开发者可以通过CCDirector::sharedDirector()->setContentScaleFactor()来设置contentScaleFactor,这个系数可以理解为
    图片原始尺寸和designResolutionSize的比值,这个比值将用来绘制图片。
    如果只是一套资源按照不同屏幕分辨率缩放,可以不用理会

    使用kResolutionNoBorder策略时要注意的
    CCSize szVisible = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint posVisible = CCDirector::sharedDirector()->getVisibleOrigin();
    使用该策略时,因为标准背景图可能会超出屏幕,所以设置位置时需要已一个可视矩形为基准。
    可以这样理解,szVisible就是你在实际设备上能看到的有效区域的宽高,posVisible就是这个有效区域的起始坐标,和szVisible构成一个可视矩形,一般来说这个可视矩形是设计分辨率下可视矩形的子集

  • 相关阅读:
    AsyncTask,MailTask,ScheduledTask
    Mysql的事务理解
    MySQL初识
    HTTP 的原理零散知识点
    SpringBoot简单搭建开发
    Android 的生命周期
    C51 虚拟元器件
    JavaSE 知识整合 (更新中……)
    java关键字篇
    Android开启网络权限
  • 原文地址:https://www.cnblogs.com/anjsoft/p/3270155.html
Copyright © 2011-2022 走看看