博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx android winSize 由来
阅读量:4216 次
发布时间:2019-05-26

本文共 2335 字,大约阅读时间需要 7 分钟。

//float width, float height 设计分辨率
//resolutionPolicy 适配策略  这里用kResolutionFixedHeight:高度固定

 

void CCEGLViewProtocol::setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy){    CCAssert(resolutionPolicy != kResolutionUnKnown, "should set resolutionPolicy");        if (width == 0.0f || height == 0.0f)    {        return;    }    //设置设计分辨率    m_obDesignResolutionSize.setSize(width, height);        //计算缩放比率  m_obScreenSize(屏幕大小)    m_fScaleX = (float)m_obScreenSize.width / m_obDesignResolutionSize.width;    m_fScaleY = (float)m_obScreenSize.height / m_obDesignResolutionSize.height;        if (resolutionPolicy == kResolutionNoBorder)    {        m_fScaleX = m_fScaleY = MAX(m_fScaleX, m_fScaleY);    }        if (resolutionPolicy == kResolutionShowAll)    {        m_fScaleX = m_fScaleY = MIN(m_fScaleX, m_fScaleY);    }    //我们这里使用的,高度固定的意思,就是高度的缩放比例固定,根据高度缩放比率计算宽度    //这里会根据我们设置的设计分辨率,然后根据适配策略,调整设计分辨率    if ( resolutionPolicy == kResolutionFixedHeight) {    	m_fScaleX = m_fScaleY;    	m_obDesignResolutionSize.width = ceilf(m_obScreenSize.width/m_fScaleX);    }    if ( resolutionPolicy == kResolutionFixedWidth) {    	m_fScaleY = m_fScaleX;    	m_obDesignResolutionSize.height = ceilf(m_obScreenSize.height/m_fScaleY);    }    // calculate the rect of viewport        float viewPortW = m_obDesignResolutionSize.width * m_fScaleX;    float viewPortH = m_obDesignResolutionSize.height * m_fScaleY;    m_obViewPortRect.setRect((m_obScreenSize.width - viewPortW) / 2, (m_obScreenSize.height - viewPortH) / 2, viewPortW, viewPortH);        m_eResolutionPolicy = resolutionPolicy;    	// reset director's member variables to fit visible rect	//下面说明:    CCDirector::sharedDirector()->m_obWinSizeInPoints = getDesignResolutionSize();    CCDirector::sharedDirector()->createStatsLabel();    CCDirector::sharedDirector()->setGLDefaultValues();}

通过这句赋值:

m_obWinSizeInPoints = m_pobOpenGLView->getDesignResolutionSize();

我们平时使用的接口,获取winSize:

 CCSize CCDirector::getWinSize(void){    return m_obWinSizeInPoints;}
 

举例:

小米2s 720*1280

设计分辨率 640*960

固定高度,缩放比率:

720/640 = 1.125

计算宽度为:1280/1.125 = 1138

由此得到我们的winSize为:640*1138

通过打印信息得到:

03-16 20:49:22.579: D/cocos2d-x debug info(8833): [LUA-print] =====winSize  width=====113803-16 20:49:22.579: D/cocos2d-x debug info(8833): [LUA-print] =====winSize  height=====640

转载地址:http://nvsmi.baihongyu.com/

你可能感兴趣的文章
Oracle 11g 新特性 -- ASM 增强 说明
查看>>
Oracle 11g 新特性 -- Database Replay (重演) 说明
查看>>
Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
查看>>
Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明
查看>>
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
DB2快速创建测试库
查看>>
利用db2look查看ddl
查看>>
java中的mmap实现
查看>>
Redis的Aof被阻塞原因调查
查看>>
Redis Cluster的FailOver失败案例分析
查看>>
Android Alarm驱动源代码分析(Alarm.c)
查看>>
S3C2440上LCD驱动 (FrameBuffer)实例开发讲解
查看>>
Linux音频编程指南
查看>>
usb-otg-调试心得
查看>>