写了个小示例,在windows下正常,但是在android手机上,触摸点坐标总不对。点击屏幕底部,给出的y坐标总是100多。

开始怀疑功能代码有bug,屏蔽了所有功能代码,还是不对。

后来发现getLocation()和getLocationView()给出的y值之和总是640,检查了所有设置值为640的地方,最后发现是setFrameSize的问题。

void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv*  env, jobject thiz, jint w, jint h)
{
    if (!CCDirector::sharedDirector()->getOpenGLView())
    {
        CCEGLView *view = CCEGLView::sharedOpenGLView();
        view->setFrameSize(960, 640); // 错误,应该是view->setFrameSize(w, h);

        AppDelegate *pAppDelegate = new AppDelegate();
        CCApplication::sharedApplication()->run();
    }
}

这段直接从windows下copy过来的,window下设置的960x640,android下应该设置成屏幕分辨率。我手机的屏幕分辨率是960x540,cocos2dx用frameSize减去屏幕坐标得到的opengl坐标,导致y坐标差了100。

 posted on 2013-11-22 19:49  钱二  阅读(494)  评论(0)    收藏  举报