Tratando Bitmaps como Sprites utilizando XNA no Windows Phone 7
Nos próximos artigos abordaremos vários assuntos, mas todos eles relacionados a classe SpriteBatch.
Um jogo pode ser feito somente utilizando Vetores 2D e Wireframes 3D, mas já aprendemos como o uso de bitmaps são importantes.
Recomendo fortemente a leitura e os exercícios práticos dos posts abaixo antes de continuar.
Crie seu primeiro projeto XNA 4.0 para Windows Phone 7
Entendendo o User Input no Windows Phone 7 com XNA
Utilizando gestos no Windows Phone 7
Desenhando Bitmaps com XNA no Windows Phone 7
Bitmaps são importantes. Em 1970 os hardwares que existiam não tinham o poder que possuem atualmente por motivos desnecessários de citar, porem algumas coisas não sofreram melhorias, elas simplesmente não existiam, e um destes era literalmente o poder de "rasterizar" um bitmap. No passado acharam que isto era impossível.
Alguém (se alguém souber, por favor coloque nos comentários) fez o impossível, então faça bom proveito!
Lembrando, falar em Bitmaps não necessariamente significa que o game será 2D, correto?
Qual é a diferença entre um Bitmap e um Sprite?
Para responder esta pergunta de modo bem simplista, diria que um Sprite é um Super Bitmap! (ao infinito e além!) Tirando minha empolgação, eu quis dizer que um Sprite é um Bitmap porém somado a um pacotão de benefícios. Um Bitmap ++
Não se preocupe, com a leitura destes posts tudo ficará cada vez mais claro. Algumas dúvidas e perguntas que tem agora, você mesmo irá responder se continuar seu empenho e exercícios.
O XNA fornece a classe SpriteBatch para desenhar bitmaps com o método SpriteBatch.Draw() , o qual possue muitas "variantes de sobrecarga", o que chamamos frequentemente de overload.
Importante, a classe SpriteBatch é uma classe para renderização usada somente para desenhar e não gerenciar as entidades presentes na tela (os Sprites)
Você achou que nestes posts iria somente brincar de touchscreen, "desenhar navinhas" , fazer testes visuais no emulador do Windows Phone 7..rs Mas as vezes precisamos nos dedicar em conceitos e praticas fundamentais para não fazer falta lá na frente e consequentemente isto irá acelerar o processo de aprendizagem ok? Continue com garra.
Ainda falando do SpriteBatch, vamos analisar somente metade do nome da classe, o Batch.
"Batch" significa lote, uma grande quantidade porem reunida em algo que torne os elementos parte de um grupo comum. Uma fornada de pães é um "batch".
Por que isto é importante? Muitas vezes você precisará trabalhar com múltiplos Sprites na tela certo? Olha aí tudo fazendo sentido..
Todos os Bitmaps chamados via SpriteBatch.Draw() são colocados em uma queue* e serão desenhados rapidamente quando o SpriteBatch.End() for chamado.
* "queue" significa "fila" em português, porem alguns termos eu realmente sugiro manter o nome mais popular justamente para facilitar sua comunicação e interpretação quando se deparar com o termo em livros, fórum, artigos e assim por diante. Assim como falamos "stack" para pilha, mesmo propósito. Ou então em uma consulta SQL, se você diz que fez um "select", a pessoa com quem está conversando sabe que você está literalmente falando do comando para a consulta, como uma "procedure". Olha aí mais uma palavrinha mágica.
Manter o termo em inglês facilita nossa comunicação em muitos pontos, e é somente por isso que utilizaremos quando necessário, ok?
O SpriteBatch.Draw() pode gerenciar animação, rotação, dimensionamento e movimentação. Mas sem o uso das propriedades já existentes, nós teríamos que codificar para trabalhar com todas estas possibilidades do SpriteBatch utilizando variáveis globais. E acredite, esta tarefa pode ser muito tediante (mas há quem goste).
A mais simples e comum propriedade para um Sprite por exemplo, é a definição da sua posição na tela, o que utilizamos a variável "shipPos" no post anterior. Ou então, para trabalhar com texturas, o que utilizamos também no post anterior a variável "shipImage" .
Nos próximos posts entraremos a fundo no tema ok? Veja o material que criamos já em português aqui no Channel 9.
No início do post listei alguns posts dedicados a XNA. Abaixo outros voltados a introdução e marketplace do Windows Phone 7.
Visão geral do MVA - entendendo o roteiro de Windows Phone
O Windows Mobile e o Windows Phone
Visão geral do Windows Phone 7.5 (codinome Mango)
Visão geral do SDK do Windows Phone
Visão geral das ferramentas de desenvolvimento para Windows Phone
O que é o Windows Phone Marketplace parte 1 - Publicando sua app no Marketplace
O que é o Windows Phone Marketplace parte 2 - Publicando sua app no Marketplace
Os posts continuarão assim, simples, de leitura rápida e focados em temas específicos. Imagino que seu dia a dia deva ser muito corrido, e com leitura rápida e exercícios praticos também rápidos, você terá mais facilidade em acompanhar e continuar seus estudos relacionados a Windows Phone 7 e XNA!
hugs from the cave