Pergunta

Eu estou lutando com animações conceituar com um CALayer em oposição à próprios métodos de animação UIView. Throw " Core Animation " para isso e, bem, talvez alguém pode articular esses conceitos a partir de um nível elevado para que eu possa visualizar melhor o que está acontecendo e por que eu iria querer migrar UIView animações (que eu sou bastante familiarizados com agora) para animações CALayer no iPhone. Cada vista em Cocoa-Touch recebe automaticamente uma camada. E, ao que parece, você pode animar um e / ou o outro?!? Mesmo misturá-los?!? Mas por que? Onde está a linha? Qual é a pro / con para cada um?

O Core Animation Guia de Programação salta imediatamente na camada e de tempo Classes e eu acho que é preciso pegar um passo para trás e entender por que existem estas peças variadas e como se relacionam entre si.

Foi útil?

Solução

Use vê para controle e camadas de colírio para os olhos. Camadas não receber eventos por isso é mais fácil de usar uma exibição para esses casos, mas quando você deseja animar um sprite ou fundos, etc., camadas fazem sentido. Eventos passar através de camadas para a exibição de apoio para que você possa ter uma representação visual muito sem estragar seus eventos. Tentar sobrepor uma visão de que você está usando apenas para a representação visual e você vai ter que passar toque em eventos até o ponto de vista subjacente si mesmo.

Outras dicas

Um UIView é sempre prestado a um CALayer. Quando você usa métodos UIView para animar um ponto de vista, você está manipulando eficazmente o CALayer subjacente.

Se você precisar fazer coisas simples, use os métodos UIView. Para situatins mais complexas, ou não, se você quiser camadas associadas a qualquer ponto de vista, em particular, CALayers uso.

Eu fiz um monte de aplicativos no ano passado. Aqui está a minha regra de ouro:

  1. Use UIView até que ele não faz o que você quer.
  2. Em seguida, passar para CoreAnimation. Mas antes de chegar a ele muito ...
  3. Se você escrever mais do que algumas animações, use Cocos2D.

UIView transformadas são apenas 2D e está restrito a isso, transforma camada, porém, pode ser em 3D e você deve usá-los se você quiser fazer coisas 3D, UIView animação vai funcionar se você mudar tanto o UIView transformar ou o CALayer transformar. Então, em um nível básico, você pode fazer muito mais manipulação quando você está trabalhando com uma camada em vez do modo de exibição.

Eu não tenho certeza se eu sou mal-entendido resposta Chris' para 'O que está Cocos2D fazer melhor? Você não tem outros problemas, então, em relação à manipulação de eventos de toque e muitas outras coisas que erra em OpenGL ES?'

Parece que a resposta sugere Cocos2D não é baseado no framework OpenGL ES quando na verdade ele é real. Embora seja um grande motor de jogo 2D ele implementar OpenGL para muito do que de renderização - ligado a uma biblioteca de física que permite a um monte de possibilidades muito interessantes para a animação - e Chris está correto - é muito menos de codificação de fato

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top