如何使用Quartz和CGLayers在背景上绘制精灵?

时间:2009-09-09 18:01:04

标签: iphone cocoa core-graphics quartz-graphics

我是Quartz的新手,我正在努力去理解这个苹果所说的非常容易和直截了当的东西。

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

背景上下文和精灵上下文都是在屏幕外绘制的,我希望在屏幕上看到它们。

要做到这一点 - 我不确定这是否正确 - 我已经做了以下事情:

  1. 我创建了一个UIImageView
  2. 我使用

    捕获了图层的内容

    resulImage = UIGraphicsGetImageFromCurrentImageContext();
    myView.image = resulImage;

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

    现在我有两个问题:

    1. 这种方法很慢,因为地狱
    2. 当我移动图层时,我必须重复上述代码并且即使这样做,层也没有移动!!!!
    3. 那么,请说,那里的iPhone专家,请告诉我是否还有另一种方法可以用石英做这件事以及我要做什么才能看到精灵移动!!!!

      感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

[self.view.layer addSublayer:myNewLayer];

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