Pergunta

Eu sou um novato em quartzo e eu estou lutando para entender essa digamos coisas maçã é muito fácil e simples.

Eu criei dois CGLayers: um para um fundo fixo e outra para um sprite. Eu quero esse sprite para mover.

Tanto o contexto de fundo e contexto sprites são desenhados fora da tela e eu gostaria tanto de ser visto na tela.

Para fazer isso - e eu não tenho certeza se esta é a maneira correta - Eu fiz o seguinte:

  1. Eu criei um UIImageView
  2. Eu tenho capturado conteúdo da camada usando

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

Isso me mostra na tela o conteúdo de ambas as camadas de quartzo.

Agora eu tenho dois problemas:

  1. Esta abordagem é lento como o inferno
  2. Quando eu mover a camada, eu tenho que repetir o código mencionado e MESMO fazer isso, a camada é não se mover !!!!

Então, por favor, gurus iPhone lá fora, por favor me diga se há outra maneira de fazer isso com quartzo eo que eu tenho que fazer para ver o movimento do sprite !!!!

Obrigado por qualquer ajuda!

Foi útil?

Solução

A principal razão para usar CALayers é obter a GPU para compor diretamente na memória de vídeo. Usando resultados UIGraphicsGetImageFromCurrentImageContext() na imagem a ser composta na GPU, transferidos para a memória principal e, depois, voltar para desenhá-lo na tela, que vai ser muito lento. O que você deve fazer em vez disso é fazer suas novas camadas subcamadas da camada do seu ponto de vista:

[self.view.layer addSublayer:myNewLayer];

Para um bom exemplo de como usar CALayers em um jogo, ver: GeekGameBoard

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