【问题标题】:Pause in a game, UICustomalertview / UIView在游戏中暂停,UICustomalertview / UIView
【发布时间】:2013-03-31 20:14:58
【问题描述】:

我正在实现一个游戏,现在我正在实现暂停功能。但我看到了一些不同的方法来做到这一点。 我做了很多研究,有这样的教程:Tutorial

但是我发现你的应用真的会被这种警报拒绝:

UIAlertView 的 Apple 文档说:

此类的视图层次结构是私有的,不得修改。

实现它的其他方法可能是(如我所见)实现 UIView。但是 UIalertviews 的优点是暂停功能已经实现,我不知道如何在不使用的情况下执行暂停所有动画等的相同功能:

sleep(INFINITY);

实现暂停菜单和功能以获得这样的结果的最佳方法是什么(这是我抽屉里的一张图片):

【问题讨论】:

    标签: iphone objective-c customization uialertview


    【解决方案1】:

    您可能需要:

    1. isPaused 用于暂停模式指示器
    2. 弹出屏幕

    您应该在主游戏循环中拥有的第一件事是 BOOL isPaused 指示器,以便游戏知道它何时处于暂停模式。通过执行适当的操作,将暂停模式视为任何其他模式。停止该过程并不是很好,因为可能必须完成其他操作。

    其次,弹出屏幕可能是具有所需透明度的全屏图形,或者更好:以编程方式制作具有 50% 透明度的黑色图像,因此您可以使背景变暗并在视图堆栈顶部显示警报视图。

    关于设计的一点题外话,你应该分为两部分:

    • 仅控制游戏参数的 UI
    • 控制游戏动作的游戏循环

    最好将实际游戏循环与控件分开。像这个警报视图这样的控件应该只操纵显示参数,而不是调用任何其他操作(可能是 CPU 昂贵的)。当游戏根据状态参数显示图形时,游戏循环应该一直运行。

    【讨论】:

    • 认为这是一个很好的答案 :) 只是,如果循环暂停,但一个动画已经开始,它会继续,或者如果我放一个循环 while(isPaused == YES),它将继续或全部暂停{ ... 动画 ... } ?
    • 这取决于你如何实现它。如果你使用核心动画,所有开始的动画都会执行,直到它们完成。我不建议仅仅因为游戏暂停就停止运行循环。我宁愿将暂停作为单独的游戏状态处理
    猜你喜欢
    • 1970-01-01
    • 2016-01-09
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多