cocos2d-x各设备适配
2013-11-09 22:41
239 查看
ResolutionPolicy kResolutionNum = kResolutionNoBorder;
if (target == kTargetIpad)
{
// ipad
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
// don't enable retina because we don't have ipad hd resource
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(1024, 768, kResolutionNum);
}
else if (target == kTargetIphone)
{
// iphone
// 设计尺寸width、height
float visibleSizeWidth = 960;
float visibleSizeHeight = 640;
// 根据屏幕尺寸与设计尺寸的比,重新定义设计尺寸(参考kResolutionNum来适配)
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
if (winSize.width/winSize.height > visibleSizeWidth/visibleSizeHeight)
{
visibleSizeWidth = visibleSizeHeight * winSize.width/winSize.height;
}
else if (winSize.width/winSize.height < visibleSizeWidth/visibleSizeHeight)
{
visibleSizeHeight = visibleSizeWidth / (winSize.width/winSize.height);
}
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
CCSize VisibleSize = CCEGLView::sharedOpenGLView()->getVisibleSize();
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(visibleSizeWidth, visibleSizeHeight, kResolutionNum);
}
else
{
// android, windows, blackberry, linux or mac
// use 960*640 resources as design resolution size
// 设计尺寸width、height
float visibleSizeWidth = 960;
float visibleSizeHeight = 640;
// 根据屏幕尺寸与设计尺寸的比,重新定义设计尺寸(参考kResolutionNum来适配)
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
if (winSize.width/winSize.height > visibleSizeWidth/visibleSizeHeight)
{
visibleSizeWidth = visibleSizeHeight * winSize.width/winSize.height;
}
else if (winSize.width/winSize.height < visibleSizeWidth/visibleSizeHeight)
{
visibleSizeHeight = visibleSizeWidth / (winSize.width/winSize.height);
}
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(visibleSizeWidth, visibleSizeHeight, kResolutionNum);
CCFileUtils::sharedFileUtils()->setPopupNotify(false);
}
注意:1.适配iphone5时要添加一张启动图片,图片命名为Default-568h@2x.png,不然iphone5两边还是黑边。
2.setDesignResolutionSize()是指设计尺寸,而getWinSize()是窗口尺寸,显示时是把设计尺寸按照设置的填充模式映射到窗口上去。
3.三种填充模式:kResolutionExactFit(宽高非等比缩放,全填充)、kResolutionNoBorder(宽高等比缩放,部分区域可能被裁减)、kResolutionShowAll(宽高等比缩放,部分区域可能出现黑边),我觉得用kResolutionNoBorder好些。
if (target == kTargetIpad)
{
// ipad
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
// don't enable retina because we don't have ipad hd resource
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(1024, 768, kResolutionNum);
}
else if (target == kTargetIphone)
{
// iphone
// 设计尺寸width、height
float visibleSizeWidth = 960;
float visibleSizeHeight = 640;
// 根据屏幕尺寸与设计尺寸的比,重新定义设计尺寸(参考kResolutionNum来适配)
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
if (winSize.width/winSize.height > visibleSizeWidth/visibleSizeHeight)
{
visibleSizeWidth = visibleSizeHeight * winSize.width/winSize.height;
}
else if (winSize.width/winSize.height < visibleSizeWidth/visibleSizeHeight)
{
visibleSizeHeight = visibleSizeWidth / (winSize.width/winSize.height);
}
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
CCSize VisibleSize = CCEGLView::sharedOpenGLView()->getVisibleSize();
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(visibleSizeWidth, visibleSizeHeight, kResolutionNum);
}
else
{
// android, windows, blackberry, linux or mac
// use 960*640 resources as design resolution size
// 设计尺寸width、height
float visibleSizeWidth = 960;
float visibleSizeHeight = 640;
// 根据屏幕尺寸与设计尺寸的比,重新定义设计尺寸(参考kResolutionNum来适配)
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
if (winSize.width/winSize.height > visibleSizeWidth/visibleSizeHeight)
{
visibleSizeWidth = visibleSizeHeight * winSize.width/winSize.height;
}
else if (winSize.width/winSize.height < visibleSizeWidth/visibleSizeHeight)
{
visibleSizeHeight = visibleSizeWidth / (winSize.width/winSize.height);
}
CCFileUtils::sharedFileUtils()->setResourceDirectory("iphonehd");
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(visibleSizeWidth, visibleSizeHeight, kResolutionNum);
CCFileUtils::sharedFileUtils()->setPopupNotify(false);
}
注意:1.适配iphone5时要添加一张启动图片,图片命名为Default-568h@2x.png,不然iphone5两边还是黑边。
2.setDesignResolutionSize()是指设计尺寸,而getWinSize()是窗口尺寸,显示时是把设计尺寸按照设置的填充模式映射到窗口上去。
3.三种填充模式:kResolutionExactFit(宽高非等比缩放,全填充)、kResolutionNoBorder(宽高等比缩放,部分区域可能被裁减)、kResolutionShowAll(宽高等比缩放,部分区域可能出现黑边),我觉得用kResolutionNoBorder好些。
相关文章推荐
- cocos2d-x项目过程记录(ios和android设备的适配)
- cocos2d-x项目过程记录(ios和android设备的适配)
- cocos2d-x iOS和Android同步开发 手机设备适配问题解决
- Cocos2d-x 屏幕适配新解
- 【Cocos2d-x 017】 多分辨率适配完全解析
- 在cocos2d-x中让一个项目适配iphone、iphone retina、ipad、ipad retina四种分辨率
- Cocos2d-x屏幕适配之Sprite绘制原理
- COCOS2D-X 多分辨率适配完全解析
- [Cocos2D-X官方文档]:Cocos2d-x分辨率的适配
- COCOS2D-X屏幕适配
- Cocos2d-x 屏幕适配
- iOS设备分辨率 UI规范 以及适配
- Xcode 适配iOS7及以下设备(看这篇就够了)
- Cocos2d-x 屏幕适配新解
- 从零学习cocos2d-x之一:屏幕适配
- Cocos2d-x之VS2012屏幕及适配问题
- 怎样通过css的media属性,适配不同分辨率的终端设备?
- Cocos2d-x的屏幕适配
- 转载:Cocos2D-x 游戏接入 Windows 设备所需做的六件事
- Cocos2d-x中获取设备语言的方法