我正在使用Marmalade使用Cocos2d-X创建项目,但是我无法在项目中使用Multitouch。这个想法是识别缩放手势以放大和缩小。
我已使用以下方法在我的GameLayer.cpp文件中启用了触摸功能:
this->setTouchMode(kCCTouchesAllAtOnce);
this->setTouchEnabled(true);
我还将以下配置添加到我的应用程序的ICF文件中:
[S3E]
AndroidPointMultiEnable = 1
我已经在模拟器上测试了我的应用程序(在那里启用多点触控)和Android平板电脑,但在模拟器中我的应用程序和Android平板电脑都没有注册触摸我接收每个触摸作为单独的事件而不是两个在同一时间。
你能帮帮我吗?
由于
更新
这是我的ccTouchesBegan代码:
void GameLayer::ccTouchesBegan(CCSet* pTouches, CCEvent* event)
{
CCSetIterator it;
CCTouch *touch;
CCPoint touchA;
CCPoint touchB;
IwTrace(APPLICATION, ("Touches Began - touch count: %d", pTouches->count()));
it = pTouches->begin();
if (usePinchGesture && pTouches->count() == 2)
{
touch = (CCTouch*) (*it);
touchA = touch->getLocation();
it++;
touch = (CCTouch*) (*it);
touchB = touch->getLocation();
pinchDistance = GeomHelper::getDistanceSq(touchA, touchB);
IwTrace(APPLICATION, ("Pinch gesture detected. Starting distance between points: %f", pinchDistance));
}
}
问题是触摸计数pTouches->count()
始终为1,因此每个触摸事件都会被单独处理。
由于
答案 0 :(得分:1)
是的,pTouches->count()
在android中总是1
!
cocos2d-x
v2.2.3
在..\cocos2dx\platform\android\jni\TouchesJni.cpp
... blablabla
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeTouchesBegin(JNIEnv * env, jobject thiz, jint id, jfloat x, jfloat y) {
cocos2d::CCDirector::sharedDirector()->getOpenGLView()->handleTouchesBegin(1, &id, &x, &y);
}
第一个参数中总是1
。
答案 1 :(得分:0)
在Android上,默认情况下打开多点触控。在获取无效的触摸坐标之前,您无需打开任何内容MyLayer :: ccTouchesBegan / Moved / Ended