Как нарисовать спрайт на фоне с помощью Quartz и CGLayers?
-
05-07-2019 - |
Вопрос
Я новичок в Кварце и изо всех сил пытаюсь понять, что Apple говорит, что это очень легко и просто.
Я создал два CGLayers: один для фиксированного фона и другой для спрайта. Я хочу, чтобы этот спрайт переместился.
И фоновый контекст, и контекст спрайта отрисовываются вне экрана, и я бы хотел, чтобы оба они были видны на экране.
Чтобы сделать это - и я не уверен, что это правильный путь - я сделал следующее:
<Ол>Я захватил содержимое слоя с помощью
resultImage = UIGraphicsGetImageFromCurrentImageContext ();
myView.image = resultImage;
Это показывает мне на экране содержимое обоих кварцевых слоев.
Теперь у меня две проблемы:
<Ол>Итак, пожалуйста, гуру iPhone там, пожалуйста, скажите мне, есть ли другой способ сделать это с кварцем и что я должен сделать, чтобы увидеть движение спрайта !!!!
спасибо за любую помощь!
Решение
Основная причина использования CALayer
заключается в том, чтобы заставить графический процессор компоноваться непосредственно в экранную память. Использование UIGraphicsGetImageFromCurrentImageContext ()
приводит к компоновке изображения в графическом процессоре, его передаче в основную память и затем обратно для рисования на экране, что будет очень медленным. Вместо этого вам следует сделать новые слои подслоями слоя вашего вида:
[self.view.layer addSublayer:myNewLayer];
Хороший пример того, как использовать CALayer
в игре, см .: GeekGameBoard