QuartzとCGLayersを使用して背景にスプライトを描画するにはどうすればよいですか?
-
05-07-2019 - |
質問
私はQuartzの初心者であり、Appleが非常に簡単で簡単だと言っていることを理解するために戦っています。
2つのCGLayerを作成しました。1つは固定背景用で、もう1つはスプライト用です。このスプライトを動かしてほしい。
背景コンテキストとスプライトコンテキストの両方が画面外に描画されます。両方を画面に表示したいです。
それを行うには-これが正しい方法であるかどうかわからない-私は次のことをしました:
- UIImageViewを作成しました
-
を使用してレイヤーのコンテンツをキャプチャしました
resultingImage = UIGraphicsGetImageFromCurrentImageContext();
myView.image = resultImage;
これにより、画面上に両方の石英層の内容が表示されます。
今、2つの問題があります:
- このアプローチは非常に遅い
- レイヤーを移動するときは、前述のコードを繰り返す必要があり、これを実行しても、レイヤーは移動しません!!!!
だから、iPhoneの達人、クォーツでこれを行う別の方法があるかどうか、そしてスプライトが動くのを見るために私がしなければならないことを教えてください!!!!
ご協力ありがとうございます
解決
CALayer
を使用する主な理由は、GPUを画面メモリに直接合成することです。 UIGraphicsGetImageFromCurrentImageContext()
を使用すると、画像がGPUで合成され、メインメモリに転送された後、再び戻って画面に描画されます。代わりにすべきことは、新しいレイヤーをビューのレイヤーのサブレイヤーにすることです:
[self.view.layer addSublayer:myNewLayer];
ゲームで CALayer
を使用する方法の良い例については、 GeekGameBoard
所属していません StackOverflow