1

我打算为 iOS 设备创建游戏,我希望能够使用我自己的图像渲染器类将图像绘制到屏幕上。

我正在寻找一种类似于 microsoft XNA 中使用的方法,您可以在每帧中绘制图像,我想知道如何去做。

我之前在 Objective-c 方面有过经验,并且我在 C# 方面非常有经验(我确实理解这是一个不同的球类游戏),但我有一半期望 CoreGraphics 就像 c# 中的图形对象。但是,我无法将头绕在屏幕上。我能找到的唯一方法是重写他的 drawRect 方法,但这对我来说没用,因为我将在不同的时间绘制不同的东西并且需要它是动态的。

我曾考虑过使用核心图形绘制每个图像,并且我还考虑过另一种方法,该方法涉及为每个图像中的每个像素绘制一个 1 px 矩形,但我不知道它的效果如何。

所以我需要帮助: - 从单独的图像渲染器类中的方法绘制图像(或矩形)。

  • 如何绘制类似于 microsoft xna 中的每一帧的图像。

在此先感谢您的帮助,我对这篇长文表示赞同。

4

2 回答 2

2

从单独的图像渲染器类中的方法绘制图像(或矩形)。

这可以使用 UIGraphicsBeginImageContext 和 UIGraphicsEndImageContext 代码块来完成。该技术基本上是,您开始图像上下文,使用您的绘图代码,从图像上下文获取 UIImage 引用并结束图像上下文。

例如,问题“如何使用 NSString 绘制功能从文本创建 UIImage”的答案显示了如何从字符串创建图像。

于 2012-09-22T22:36:51.347 回答
1

1)对于所有“同步”部分,即每次刷新屏幕时绘制一个新帧,您应该使用CADisplayLink允许您指定每次需要绘制帧时调用您选择的方法的类。

被调用的方法会将CADisplayLink对象作为其参数传递,您可以向其查询时间戳,以便您知道需要绘制哪个帧。例如,如果您有一个球在移动的游戏,您可以将当前帧的时间戳与上一帧的时间戳进行比较,并知道经过了多少时间,因此您可能知道球的速度和最后位置,您可以轻松确定您需要绘制它的新位置。

2)其余的,即所有的绘图部分,除非你选择使用OpenGL(在这种情况下看一下GLKit以使你的代码更容易)你可以使用Core Graphics自己做低级绘图。为此,您将在Quartz 2D Programming Guide中找到所需的一切,包括如何绘制像素贝塞尔路径/矢量图形,以及如何在位图上下文中绘制屏幕外。

于 2012-09-22T22:32:31.027 回答