0

我是 Quartz 的新手,我正在努力理解苹果所说的这些东西非常简单明了。

我创建了两个 CGLayer:一个用于固定背景,另一个用于精灵。我想让这个精灵移动。

背景上下文和精灵上下文都是在屏幕外绘制的,我希望两者都出现在屏幕上。

为此——我不确定这是否是正确的方法——我做了以下事情:

  1. 我创建了一个 UIImageView
  2. 我已经使用捕获了图层的内容

    结果图像 = UIGraphicsGetImageFromCurrentImageContext();
    myView.image = 结果图像;

这会在屏幕上显示两个石英层的内容。

现在我有两个问题:

  1. 这种方法慢得要命
  2. 当我移动图层时,我必须重复上述代码,即使这样做,图层也不会移动!!!!

所以,请 iPhone 大师们,请告诉我是否有另一种方法可以用石英做到这一点,以及我必须做什么才能看到精灵移动!!!!

谢谢你的帮助!

4

1 回答 1

2

使用 s 的主要原因CALayer是让 GPU 直接合成到屏幕内存上。使用UIGraphicsGetImageFromCurrentImageContext()结果是在 GPU 上合成图像,传输到主内存,然后再返回以将其绘制在屏幕上,这将非常慢。相反,您应该做的是使您的新图层成为视图图层的子图层:

[self.view.layer addSublayer:myNewLayer];

有关如何CALayer在游戏中使用 s 的一个很好的示例,请参见:GeekGameBoard

于 2009-09-09T19:05:54.300 回答