我是 Quartz 的新手,我正在努力理解苹果所说的非常简单和直接的东西。
我创建了两个 CGLayer:一个用于固定背景,另一个用于 Sprite 。我希望这个 Sprite 能够移动。
背景上下文和 Sprite 上下文都是在屏幕外绘制的,我希望两者都能在屏幕上看到。
为了做到这一点 - 我不确定这是否是正确的方法 - 我做了以下操作:
- 我创建了一个 UIImageView
我已使用
捕获了图层的内容resultingImage = UIGraphicsGetImageFromCurrentImageContext();
myView.image = resultImage;
这在屏幕上显示了两个 quartz 层的内容。
现在我有两个问题:
- 这种方法非常慢
- 当我移动图层时,我必须重复上述代码,即使这样做,图层也不会移动!!!
所以,iPhone 专家们,请告诉我是否有另一种方法可以用 quartz 来做到这一点,以及我必须做什么才能看到 Sprite 移动!!!!
感谢您的帮助!
最佳答案
使用 CALayer 的主要原因是让 GPU 直接合成到屏幕内存上。使用 UIGraphicsGetImageFromCurrentImageContext() 会导致图像在 GPU 上合成,传输到主内存,然后再次返回以将其绘制在屏幕上,这会非常慢。您应该做的是将新图层设为 View 图层的子图层:
[self.view.layer addSublayer:myNewLayer];
有关如何在游戏中使用 CALayer
的好示例,请参阅:GeekGameBoard
关于iphone - 如何使用 Quartz 和 CGLayers 在背景上绘制 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401122/