Вопрос

Я новичок в Кварце и изо всех сил пытаюсь понять, что Apple говорит, что это очень легко и просто.

Я создал два CGLayers: один для фиксированного фона и другой для спрайта. Я хочу, чтобы этот спрайт переместился.

И фоновый контекст, и контекст спрайта отрисовываются вне экрана, и я бы хотел, чтобы оба они были видны на экране.

Чтобы сделать это - и я не уверен, что это правильный путь - я сделал следующее:

<Ол>
  • Я создал UIImageView
  • Я захватил содержимое слоя с помощью

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

  • Это показывает мне на экране содержимое обоих кварцевых слоев.

    Теперь у меня две проблемы:

    <Ол>
  • Этот подход медленный как ад
  • Когда я перемещаю слой, я должен повторить упомянутый код и ДАЖЕ, ДЕЛАЯ ЭТО, СЛОЙ НЕ ДВИЖЕТСЯ !!!!
  • Итак, пожалуйста, гуру iPhone там, пожалуйста, скажите мне, есть ли другой способ сделать это с кварцем и что я должен сделать, чтобы увидеть движение спрайта !!!!

    спасибо за любую помощь!

    Это было полезно?

    Решение

    Основная причина использования CALayer заключается в том, чтобы заставить графический процессор компоноваться непосредственно в экранную память. Использование UIGraphicsGetImageFromCurrentImageContext () приводит к компоновке изображения в графическом процессоре, его передаче в основную память и затем обратно для рисования на экране, что будет очень медленным. Вместо этого вам следует сделать новые слои подслоями слоя вашего вида:

    [self.view.layer addSublayer:myNewLayer];
    

    Хороший пример того, как использовать CALayer в игре, см .: GeekGameBoard

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top