我可以为Windows Phone应用程序禁用多点触控吗?

时间:2012-06-22 19:57:55

标签: xna windows-phone cocos2d-x-for-xna

我正在使用XNA版Cocos2d开发Windows Phone 7游戏。 由于游戏规则,我需要它,以便用户一次只能触摸一件事,但多点触控似乎总是有效。另外我不知道这是否是一个Cocos错误,但它也会导致游戏行为不规律(响应单次触摸,就像他们很多)。

我想我必须逐一纠正游戏中的每一个触摸事件,但我想知道我是否可以使用某些东西来快速禁用多点触控,或者减少一次接受的触摸次数。

3 个答案:

答案 0 :(得分:1)

我不确定XNA的Cocos2d-x。但是在常规XNA中如果你只想强制单触输入,最简单的方法就是使用Mouse类。在触摸环境中,它仍然可用 - 通过使用触摸进行模拟。它一次只响应一次触摸。

答案 1 :(得分:0)

每个框架都可以获得触摸列表。由于他们的管理委托给您的代码,如果您有多个代码,请忽略它们。另一个选择是仅使用第一个,记住它的TouchID并忽略所有其余的。 在将鼠标应用程序移植到手机上时,我使用了第一个选项。

Cocos触摸输入必须在游戏中的某个地方以可访问的代码处理,因此您应该可以访问他们的入口点。

答案 2 :(得分:0)

是的,您可以使用Cocos2D-XNA执行此操作。您将TouchMode设置为OneByOne或AllAtOnce。 OneByOne将为您提供单一的CCTouch签名方法,AllAtOnce将为您提供List签名方法。

public MyCtor() {
  TouchEnabled = true;
  TouchMode = CCTouchMode.OneByOne;
}

public override bool TouchBegan(CCTouch t) {
}

public override void TouchMoved(CCTouch t) {
}

public override void TouchEnded(CCTouch t) {
}

现在你只能一次触摸一下。虽然没有办法禁用触摸板从所有手指传递所有触摸。正如另一位用户所提到的,你会忽略这些。

请记住,每次触摸都会获得触摸ID,这样可以使触摸数据与每个开始,移动,结束的事件调用相匹配。我建议你也使用触摸ID,以确保你只处理你想要的触摸。