我有真正的设备诺基亚Lumia 730(Windows Phone 8.1)用于测试我的游戏cocos2d-x。而且我发现多点触控不起作用。
首先是示例代码:
auto listener = EventListenerTouchAllAtOnce::create();
listener->onTouchesBegan = [&](std::vector touches, Event* event){
log("onTouchesBegan: %d", touches.size());
}
listener->onTouchesMoved = [&](std::vector touches, Event* event){
log("onTouchesMoved: %d", touches.size());
}
listener->onTouchesEnded = [&](std::vector touches, Event* event){
log("onTouchesEnded: %d", touches.size());
}
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
无论我用多少手指触摸它总是说1。 我在Android(三星Galaxy s3)上运行了相同的应用程序并且运行良好。
我发现没有必要/没有办法在Windows手机上启用多点触控,默认情况下它已经启用。
其次,我在win8.1-xaml项目中进行了简单测试(没有测试win8.1-universal,无论如何都不能使用它,因为缺少像admob这样的第三方库支持):
Touch.FrameReported += Touch_FrameReported;
void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
if (Visibility == Visibility.Collapsed)
return;
TouchPointCollection pointCollection = e.GetTouchPoints(this);
Debug.WriteLine("points touched: " + pointCollection.Count);
}
这实际上有效并打印正确的值。 因此,同时运行这两段代码会产生以下结果:
onTouchesBegan:1< - cocos2d-x part
点动:2< - c#项目部分
科科斯认为只有一次触摸,但是wp知道还有更多(2)。
帮助!