写了个小示例,在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
浙公网安备 33010602011771号