【iOS-cocos2d-X 游戏开发之十六】Android使用(-hd)高清图/自适应

本站文章均为
http://www.himigame.com/about-himi原创,转载务必在明显处注明:
转载自
http://www.himigame.com/ 原文链接: http://www.himigame.com/android-game/799.html

http://list.qq.com/cgi-bin/qf_invite?id=acfc24e272cc4a26debf3b3866edb626a9ea3fc80fd8893c 本博客最新动态!及时将最新博文通知您!本篇主要介绍Cocos2dx项目开发过程中或者说项目务必遇到的一些知识点(ps.貌似Himi博客写的都是务必的

Himi认为写别人没写的才更容易吸引人不是~)OK,不多说废话,
第一个介绍的是修改项目配置让你的Android项目支持自适应屏幕;其实关于Android项目自适应屏幕这个问题,Himi实在不想再多费口舌,一方面因为Himi之前博文有说过,另外一方面现在Android开源缘故造成分辨率泛滥也成必然。大家注意做项目尽可能使用相对位置,别写死坐标,另外一点就是针对流行分辨率做适应就好了,如果你们公司很有必要铺Android市场的量,那么只能一个一个分辨率去搞了=。 = Himi身为Kjava(J2me)一路走过来的Dev来说,我是在是对自适应虐到习惯……1. 咳咳,本不想说,回到正题,那么对于
Cocos2dx中如何设置项目Android版自适应,其实很easy,直接在编译好的Android项目中如下路径查找:your Project name/Jni/helloworld/main.cppOK,找到main.cpp后双击打开,然后看到如下代码段:

// if you want to run in WVGA with HVGA resource, set it
view->create(480, 320); // Please change it to (320, 480);if you're in portrait mode.

view->create(480,320);默认关闭的,这里打开即可;其实Himi也是从cocos2dx引擎框架中看到的,打开你的任意一个cocos2dx引擎框架的项目,然后打开AppDelegate.cpp 文件,就能看到:http://www.himigame.com/wp-content/uploads/2012/04/333333.png

2. 下面继续介绍如何
让你的cocos2dx-Android项目设置缩放比例,一样很easy,设置代码如下:

CCDirector::sharedDirector()->setContentScaleFactor(2.0);

默认值是1.0,缩放2倍,从下面这两张图可以明显看出设置后的区别:(点击放大图片)http://www.himigame.com/wp-content/uploads/2012/04/duibitu.png

http://www.himigame.com/wp-content/uploads/2012/04/duibitu2.png

为了便于后续讲解更容易理解,那么这里Himi博文讲解使用的两行图片这里先给出,大家先看下:rect.png 规格: 4040 | rect-hd.png 规格:8080http://www.himigame.com/wp-content/uploads/2012/04/pp.png

3.下面介绍如何
让cocos2dx的Android版项目使用iOS Retina类似@2x的-hd功能也直接使用高清图片,当然cocos2dx引擎默认找的高清图为-hd;但是编译Xcode的cocos2dx项目到Android版后,Android版可不会那么聪明自动使用你的-hd的版图片,所以下面Himi来手把手教你设置;具体步骤如下:
3.1 首先在你的项目下找到 CCEGLView_android.cpp ,双击打开:找到 void CCEGLView::create(int width, int height) 函数,然后函数内替换成如下代码:

void CCEGLView::create(int width, int height)
{
 
    if (width == 0 || height == 0)
    {
        return;
    }
 
    m_sSizeInPoint.width = width;
    m_sSizeInPoint.height = height;
 
    // calculate the factor and the rect of viewport
    m_fScreenScaleFactor =  MIN((float)m_sSizeInPixel.width / m_sSizeInPoint.width, (float)m_sSizeInPixel.height / m_sSizeInPoint.height);
    CCLOG("CCEGLView::Create / Screen Scale Factor = %f", m_fScreenScaleFactor);
    if (m_fScreenScaleFactor >= 1.5f)
    {
        CCLOG("CCEGLView::Create / HD Scale Factor => Increase Content Scale Factor");
        cocos2d::CCDirector::sharedDirector()->setContentScaleFactor(2.0f);
    }
    int viewPortW = (int)(m_sSizeInPoint.width * m_fScreenScaleFactor);
    int viewPortH = (int)(m_sSizeInPoint.height * m_fScreenScaleFactor);
    m_rcViewPort.origin.x = (m_sSizeInPixel.width - viewPortW) / 2;
    m_rcViewPort.origin.y = (m_sSizeInPixel.height - viewPortH) / 2;
    m_rcViewPort.size.width = viewPortW;
    m_rcViewPort.size.height = viewPortH;
 
    m_bNotHVGA = true;
}

字数限制~一楼继续。。。。。。

谢谢楼主,没有研究android的高清自适配,直接跳到cocos2d-x上来了,不知道这个和retina设置的关系究竟如何,研究ing。。。。。:dizzy: