1

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

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

4

3 回答 3

1

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

于 2012-06-23T02:09:57.037 回答
0

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

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

于 2012-06-25T07:42:07.333 回答
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 来确保您只处理您想要的触控。

于 2013-08-23T19:02:36.517 回答