我正在使用XNA版Cocos2d开发Windows Phone 7游戏。 由于游戏规则,我需要它,以便用户一次只能触摸一件事,但多点触控似乎总是有效。另外我不知道这是否是一个Cocos错误,但它也会导致游戏行为不规律(响应单次触摸,就像他们很多)。
我想我必须逐一纠正游戏中的每一个触摸事件,但我想知道我是否可以使用某些东西来快速禁用多点触控,或者减少一次接受的触摸次数。
答案 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,以确保你只处理你想要的触摸。