0

私はQuartzの初心者であり、Appleが言うことは非常に簡単で簡単であることを理解するために戦っています.

2 つの CGLayer を作成しました。1 つは固定背景用で、もう 1 つはスプライト用です。このスプライトを動かしたい。

バックグラウンド コンテキストとスプライト コンテキストの両方が画面外に描画されるので、両方を画面に表示したいと考えています。

それを行うには、これが正しい方法かどうかはわかりませんが、次のことを行いました。

  1. UIImageView を作成しました
  2. を使用してレイヤーのコンテンツをキャプチャしました

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

これにより、両方の石英層の内容が画面に表示されます。

今、私は2つの問題を抱えています:

  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 に答える