cocos2dx android winSize 由来
来源:互联网 发布:阿里云还是腾讯云 编辑:程序博客网 时间:2024/05/22 00:59
//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
0 0
- cocos2dx android winSize 由来
- cocos2dx android VisibleSize 由来
- 代码转换工具(as3 - cocos2dx) (一) 由来
- android的由来
- Android由来--简介
- Android 权限的由来
- Android 版本命名的由来
- Android boot.img的由来
- 由来
- FrameSize、WinSize、VisibleSize
- Android 基础知识 - R.id.x 的由来
- Android MeasuerSpec的由来及使用
- Android .9.png的由来和制作
- Android开源框架BRVAH由来篇
- android中dao命名的由来
- cocos2dx[android] 环境搭建
- cocos2dx win32 android
- cocos2dx - android配置
- 设计模式学习002——装饰者模式
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- OpenCV Using Python——基于SURF特征提取和金字塔LK光流法的单目视觉三维重建
- Linux线程-pthread_kill
- cocos2dx android winSize 由来
- 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
- Java.util.concurrent包学习(一) 线程池
- UNIX SIGTERM等信号意义
- BIOS到Linux Boot的原理
- 德州仪器业界首款多标准无线MCU平台实现无电池物联网(IoT)连接
- Object - C运行时应用(二)—— 使用对象关联为分类增加属性(每个对象的属性互不干扰)
- 机器学习中的算法(2)-支持向量机(SVM)基础
- activity里finish()和stop()的区别