{"id":150,"date":"2015-04-10T20:56:47","date_gmt":"2015-04-10T23:56:47","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/gideros\/?page_id=150"},"modified":"2015-04-11T16:27:40","modified_gmt":"2015-04-11T19:27:40","slug":"animacao-movieclip","status":"publish","type":"page","link":"http:\/\/www.galirows.com.br\/meublog\/gideros\/capitulo-1-introducao\/animacao-movieclip\/","title":{"rendered":"Introdu\u00e7\u00e3o a codifica\u00e7\u00e3o &#8211; adicionar anima\u00e7\u00e3o (movieclip)"},"content":{"rendered":"<p>A anima\u00e7\u00e3o em jogos \u00e9 um recurso extremamente utilizado e por isso um conceito essencial para o desenvolvimento. Sua utiliza\u00e7\u00e3o parte do desenvolvimento pelos artistas dos <em>sprites<\/em> animados de elemento (um personagem, uma paisagem ou um objeto do jogo) e posteriormente s\u00e3o adicionados ao jogo.<\/p>\n<p>Na Gideros, a anima\u00e7\u00e3o pode ser implementada a partir de um <em>movieclip<\/em>, que receber\u00e1 imagens (normalmente armazenadas em um vetor). Essas imagens precisam ser feitas de maneira que sua intercala\u00e7\u00e3o gere a percep\u00e7\u00e3o de um movimento. A figura abaixo mostra 3 partes (frames) da anima\u00e7\u00e3o que, com a intercala\u00e7\u00e3o de tempos em tempos delas, gerar\u00e3o uma anima\u00e7\u00e3o de caminhar.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"61\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-185\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image049.png\" alt=\"image049\" width=\"45\" height=\"113\" \/><\/td>\n<td width=\"61\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-184\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image048.png\" alt=\"image048\" width=\"45\" height=\"113\" \/><\/td>\n<td width=\"61\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-183\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image047.png\" alt=\"image047\" width=\"45\" height=\"113\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Figura 14. Sprites que ser\u00e3o utilizados na anima\u00e7\u00e3o<\/p>\n<p>Considerando que essas imagens j\u00e1 est\u00e3o incorporadas ao projeto (conforme mostrado anteriormente), criamos um vetor adicionando em cada \u00edndice do vetor um frame de imagem na sequencia da anima\u00e7\u00e3o. O c\u00f3digo abaixo realiza isso, onde na primeira \u00e9 criado um vetor vazio e adicionado em cada frame a instancia de uma nova imagem.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-182 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image050.png\" alt=\"image050\" width=\"372\" height=\"69\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image050.png 372w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image050-300x56.png 300w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><\/p>\n<p>Tendo definido o vetor de imagens, criamos com o c\u00f3digo a seguir o <em>movieclip<\/em> propriamente dito. O movieclip exige que seja especificado cada quadro informando tamb\u00e9m a quantidade de frames de dura\u00e7\u00e3o. Por exemplo, o primeiro quadro da anima\u00e7\u00e3o durar\u00e1 10 frames (do frame 1 at\u00e9 o frame 10) para o pr\u00f3ximo frame. Quanto menor for esta quantidade de frames dedicada ao frame, mais rapidamente o elemento ir\u00e1 estar animado. A quantidade de frame m\u00ednima para a sensa\u00e7\u00e3o de continuidade necess\u00e1ria para uma anima\u00e7\u00e3o \u00e9 de 10 frames por segundo, mas essa taxa de frames \u00e9 baixa \u00e9 gerar\u00e1 uma apar\u00eancia de <em>stopmotion<\/em> na anima\u00e7\u00e3o. Em compensa\u00e7\u00e3o, para ter uma boa anima\u00e7\u00e3o, s\u00e3o precisos v\u00e1rios quadros, exigindo mais trabalho na elabora\u00e7\u00e3o art\u00edstica.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-188 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image051.png\" alt=\"image051\" width=\"213\" height=\"97\" \/><\/p>\n<p>Observe que o \u00faltimo quadro da anima\u00e7\u00e3o \u00e9 uma reutiliza\u00e7\u00e3o do segundo quadro. Ele pode ser reutilizado pois nessa anima\u00e7\u00e3o ele \u00e9 um quadro intermedi\u00e1rio que permite tal reutiliza\u00e7\u00e3o.<\/p>\n<p>Ap\u00f3s especificar o <em>movieclip<\/em>, ele pode ser posicionado e adicionado a cena, op\u00e7\u00f5es que s\u00e3o mostradas no c\u00f3digo abaixo. Diferente do posicionamento feito anteriormente onde posicion\u00e1vamos o elemento gr\u00e1fico indicando as coordenadas X e Y de maneira independente, outra forma \u00e9 mostrada na primeira instru\u00e7\u00e3o mostrada (setPosition) , sendo informados a coordenada completa do elemento gr\u00e1fico. Na instru\u00e7\u00e3o seguinte o <em>movieclip<\/em> \u00e9 finalmente adicionado na cena.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-186 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image052.png\" alt=\"image052\" width=\"179\" height=\"33\" \/><\/p>\n<p>Ao executar o c\u00f3digo percebemos que a anima\u00e7\u00e3o executou uma vez, percorrendo cada frame e depois parando. Para manter a anima\u00e7\u00e3o em repeti\u00e7\u00e3o, \u00e9 preciso uma nova instru\u00e7\u00e3o, que indica quais frames estar\u00e3o interligados na repeti\u00e7\u00e3o. No caso do c\u00f3digo a seguir, \u00e9 indicado que quando a anima\u00e7\u00e3o chegar ao frame de n\u00famero 40, ela deve voltar ao frame de n\u00famero 1. Para parar uma anima\u00e7\u00e3o, simplesmente fazemos uso do m\u00e9todo <em>stop()<\/em>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-187 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image053.png\" alt=\"image053\" width=\"194\" height=\"19\" \/><\/p>\n<p>Os conceitos vistos agora enriquecem o desenvolvimento gr\u00e1fico do jogo e permitem desenvolver jogos com aspecto visual melhorado, al\u00e9m de tamb\u00e9m melhorar as possibilidades de retorno as a\u00e7\u00f5es do usu\u00e1rio.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #ff6600;\"><strong>Pr\u00f3ximo passo: <a style=\"color: #ff6600;\" title=\"Introdu\u00e7\u00e3o a codifica\u00e7\u00e3o \u2013 mostrar texto\" href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/capitulo-1-introducao\/mostrar-texto\/\">mostrar textos<\/a><\/strong><\/span><\/p>\n<p style=\"text-align: center;\">\n","protected":false},"excerpt":{"rendered":"<p>A anima\u00e7\u00e3o em jogos \u00e9 um recurso extremamente utilizado e por isso um conceito essencial para o desenvolvimento. Sua utiliza\u00e7\u00e3o parte do desenvolvimento pelos artistas dos sprites animados de elemento (um personagem, uma paisagem ou um objeto do jogo) e posteriormente s\u00e3o adicionados ao jogo. Na Gideros, a anima\u00e7\u00e3o pode ser implementada a partir de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":122,"menu_order":6,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-150","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/comments?post=150"}],"version-history":[{"count":4,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/150\/revisions"}],"predecessor-version":[{"id":196,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/150\/revisions\/196"}],"up":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/122"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/media?parent=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}