【问题标题】:Why is detecting touches getting slower and slower?为什么检测触摸越来越慢?
【发布时间】:2009-02-19 09:10:51
【问题描述】:

在我的游戏中,如果我多次玩某个特定游戏,我的触摸需要更多时间才能被检测到。 它存储所有触摸,然后同时应用这些触摸。

谁能告诉我问题出在哪里?

在touchesBegan我写道:

if (CGRectContainsPoint([tapView frame], [touch locationInView:self])
    && tapView.alpha == 1) {
    [self callTapCode];
}

这是touchesEnded的代码。如果我点击并释放点击它会显示一个点击事件。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    if (checkTap == TRUE && tapView.alpha == 1 )
        tap_effect_view.alpha = 0;
}

- (void)callTapCode {
    // Move player code by 6 pixels
    // not possible to write all code
}

在tapView 中,我不断点击。 callTapCode 将玩家移动六个像素。但过了一段时间后,我的触摸检测非常缓慢,所以玩家看起来像是在跳来跳去。我连续玩了 15 到 16 次。

【问题讨论】:

  • 您是否有演示问题基本要素的简化代码示例?
  • 在 touchesBegan 中我写 if(CGRectContainsPoint([tapView frame],[touch locationInView:self]) &&tapView.alpha==1 ) { [self callTapCode];在 tapView 中,我不断地敲击。 callTapCode 方法将用户 Player 移动六个像素。但过了一段时间后,我的触摸检测到非常慢。
  • 所以玩家看起来在跳跃。我连续玩了 15 到 16 次游戏
  • 您应该将这些新信息编辑到问题中,使其可见。
  • 你给我们的代码用处不大,内部工作还是得猜。请给我们一些有关 touchesEnded 和 callTabCode 的信息。

标签: iphone cocoa-touch


【解决方案1】:

您可以通过此tutorial 学习如何使用Leaks工具。这是 Xcode 附带的 Instruments 套件的一部分,除其他外,它可以帮助您跟踪应用程序的内存泄漏和一般性能问题。

【讨论】:

  • 是的,我也用这个,但没什么区别
  • 当您创建触摸事件(触摸屏幕时)时,Leaks 会报告什么?我建议您阅读本教程,以便您可以学习此工具。真的很有用。
【解决方案2】:

我找到了解决问题的方法。在我的游戏中,我启用了tapView.multipleTouchEnabled = TRUE

tapView 是我不断点击的视图。

当我做到FALSE 时,它可以工作。

即

tapView.multipleTouchEnabled = FALSE;

我完全不知道怎么做。但它有效。

感谢您的回复。

【讨论】:

    【解决方案3】:

    尝试查找任何内存泄漏。也许 iPhone 不得不大量使用虚拟内存。

    【讨论】:

    • 在我的游戏中,当我点击时,只有一位用户玩家。当我点击 tapView 时,它会将播放器移动 6 个像素。我点击它的速度有多快会移动玩家。但是一段时间后意味着如果我玩游戏 16 到 18 次,它会非常缓慢地检测到点击。
    • 它将所有剩余的点击时间应用在玩家身上,让玩家看起来像是在跳跃。要检查处理器是否很慢,我只需在计时器中调用相同的点击代码并运行游戏 20 到 25 次,但它工作正常。意味着它不是处理器慢的问题,所以你能帮我吗
    • 你释放存储的触摸吗?你是怎么做到的?
    • 并尝试写 'you' 而不是 'u'。而不是“我”:“我”。过一段时间就容易了。
    • 哦!感谢您的建议,我将永远记住它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2016-03-05
    • 2015-12-20
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多