{"id":249,"date":"2015-04-19T11:32:41","date_gmt":"2015-04-19T14:32:41","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/gideros\/?page_id=249"},"modified":"2015-04-19T11:33:11","modified_gmt":"2015-04-19T14:33:11","slug":"gerenciamento-cenas","status":"publish","type":"page","link":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/","title":{"rendered":"Gerenciamento de cenas"},"content":{"rendered":"<p>Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o.<\/p>\n<p>O construtor da classe espera uma imagem passada como refer\u00eancia e a adiciona juntamente com ouvintes necess\u00e1rio. No c\u00f3digo abaixo, somente um ouvinte foi adicionando, mas em um bot\u00e3o \u00e9 comum adicionar mudan\u00e7a no bot\u00e3o quando o mouse est\u00e1 sobre ele (que ficar\u00e1 como tarefa para praticar).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-250 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image072.png\" alt=\"image072\" width=\"490\" height=\"241\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image072.png 490w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image072-300x148.png 300w\" sizes=\"auto, (max-width: 490px) 100vw, 490px\" \/><\/p>\n<p>Observe que no evento de clique \u00e9 verificado se o clique ocorreu em cima do bot\u00e3o instanciado e se sim, a codifica\u00e7\u00e3o aciona o m\u00e9todo stopPropagation() que encerrar\u00e1 a verifica\u00e7\u00e3o do evento por parte do restante das outras inst\u00e2ncias, economizando recursos. Em seguida \u00e9 criado um novo evento, chamado de \u201cclick\u201d que poder\u00e1 ser utilizado posteriormente para qualquer ouvinte de objeto instanciado dessa classe e representando essa a\u00e7\u00e3o.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"667\"><strong>Para praticar:<\/strong> fa\u00e7a com que o bot\u00e3o tenha 2 formas: a primeira \u00e9 sua imagem normal, a segunda de quando o bot\u00e3o for pressionado.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1>Gerenciamento de cenas<\/h1>\n<p>Um jogo pode ser visto como a composi\u00e7\u00e3o de v\u00e1rias cenas, onde cada cena representa uma parte do jogo. Por exemplo, um jogo pode ter a tela inicial, o primeiro n\u00edvel do jogo e o segundo n\u00edvel do jogo, sendo esses exemplos podendo gerar uma cena para cada um.<\/p>\n<p>O gerenciamento de cenas na Gideros \u00e9 facilitado pelo script Scene Manager, dispon\u00edvel no endere\u00e7o <a href=\"https:\/\/github.com\/gideros\/Scene-Manager\" target=\"_blank\">https:\/\/github.com\/gideros\/Scene-Manager<\/a>. Veremos agora como utiliz\u00e1-lo, sendo necess\u00e1rio inicialmente baixar o scritp scenemanager.lua e adiciona-lo ao projeto do jogo.<\/p>\n<p>Consideraremos para o jogo a exist\u00eancia de 3 cenas: uma de in\u00edcio do jogo, uma com informa\u00e7\u00f5es sobre o jogo e uma com o jogo propriamente dito. O c\u00f3digo abaixo relaciona essas tr\u00eas cenas, instanciando-as utilizando o script do Scene Manager. Esse c\u00f3digo adicionado ao arquivo main.lua adicionar\u00e1 o gerenciamento de cena no jogo e tamb\u00e9m far\u00e1 a chamada da cena identificada como \u201cinicio\u201d, indo para essa cena. As cenas ainda n\u00e3o foram criadas, mas vemos que elas j\u00e1 possuem um r\u00f3tulo e recebem o nome da classe que conter\u00e1 a cena propriamente dita.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image073.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-251 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image073.png\" alt=\"image073\" width=\"449\" height=\"112\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image073.png 449w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image073-300x75.png 300w\" sizes=\"auto, (max-width: 449px) 100vw, 449px\" \/><\/a><\/p>\n<p>Como tela inicial iremos criar dois bot\u00f5es que conduzir\u00e3o para o jogo ou para a tela de cr\u00e9ditos. A tela ser\u00e1 criada a partir do arquivo inicio.lua e os bot\u00f5es ser\u00e3o estabelecidos de uma forma diferente da vista at\u00e9 o momento e faz uso da \u201cGideros texture packer\u201d, software instalado juntamente com a Gideros.<\/p>\n<p>Para come\u00e7ar a utilizar a aplica\u00e7\u00e3o, acesse a op\u00e7\u00e3o \u201cFile\u201d e depois \u201cnew project\u201d. Ser\u00e1 solicitado um nome de projeto e um diret\u00f3rio de armazenamento, onde recomendo escolher o mesmo local do projeto do jogo e desmarcar a op\u00e7\u00e3o &#8220;create directory for project&#8221; (a menos que voc\u00ea tenho muitos scripts e elementos gr\u00e1ficos no jogo). O nome que ser\u00e1 utilizado no projeto ilustrado nesse material \u00e9 \u201cbotoes\u201d, j\u00e1 que utilizaremos esse texture packer para armazenar todos os bot\u00f5es do jogo.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-252 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image074.png\" alt=\"image074\" width=\"669\" height=\"335\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image074.png 669w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image074-300x150.png 300w\" sizes=\"auto, (max-width: 669px) 100vw, 669px\" \/>Figura 3.1 \u2013 tela de projeto do Gideros texture packer<\/p>\n<p>Tendo criado o projeto do texture packer, clique com o bot\u00e3o direito do mouse no nome do projeto na janela a esquerda (assim como fazemos para adicionar elementos na Gideros) e acesse a op\u00e7\u00e3o &#8220;add existing files&#8221;, selecionando os arquivos desejados. Se algum for esquecido, n\u00e3o tem problema e ele poder\u00e1 ser adicionado posteriormente. Na \u00e1rea da direita \u00e9 mostrado o arranjo gerado com as imagens adicionadas ao projeto. N\u00e3o importa o arranjo j\u00e1 que o funcionamento ser\u00e1 igual, indiferente de como ele tenha ficado, mas \u00e9 esse arranjo que ir\u00e1 compor a imagem do texture packer.<\/p>\n<p>Tendo definido as imagens necess\u00e1rias, basta acessar o menu \u201cfile\u201d e a op\u00e7\u00e3o &#8220;Export texture&#8221;, que salvar\u00e1 todas as imagens relacionadas em um \u00fanico arquivo e este ser\u00e1 adicionado a pasta do projeto juntamente com um arquivo txt com especifica\u00e7\u00e3o dos elementos presentes na imagem (se voc\u00ea escolheu o loca do projeto da textura sendo o mesmo do projeto do jogo). Esses arquivos ainda precisar\u00e3o ser incorporados ao projeto, mesmo j\u00e1 estando na pasta do projeto.<\/p>\n<p>Vamos agora especificar esse script de in\u00edcio juntamente com as texturas geradas. O c\u00f3digo a seguir mostra a cria\u00e7\u00e3o da classe \u201cInicio\u201d e os c\u00f3digos do construtor. O construtor inicia instanciando o m\u00e9todo TexturePack.new() que precisa receber o arquivo de texto com a configura\u00e7\u00e3o da textura e a textura propriamente dita. Em seguida criamos um bitmap baseado em uma regi\u00e3o dessa textura, informando o nome da regi\u00e3o, que \u00e9 o mesmo nome da imagem que foi utilizada na cria\u00e7\u00e3o da textura. Veja que com essa t\u00e9cnica duas coisas s\u00e3o facilitadas: 1) menos arquivos de imagem s\u00e3o necess\u00e1rias no projeto; e 2) alterar qualquer arte dos bot\u00f5es exigir\u00e1 apenas alterar o projeto do <em>texture packer<\/em>, sem contar que utilizar <em>skins<\/em> diferentes exige apenas a defini\u00e7\u00e3o uma nova imagem com as texturas.<\/p>\n<p>A seguir o c\u00f3digo cria um novo bot\u00e3o (fazendo uso do script visto na sess\u00e3o anterior), posiciona-lo e adiciona-o efetivamente na cena. Para finalizar o bot\u00e3o, \u00e9 associado um evento de clique que ao acontecer, executar\u00e1 uma fun\u00e7\u00e3o que chamar\u00e1 a cena do jogo, cena onde pretendemos ter o jogo efetivamente.<\/p>\n<p>Logo em seguida \u00e9 criado outro bot\u00e3o que \u00e9 posicionado logo abaixo do anterior e que ao ser clicado conduzir\u00e1 para a cena que conter\u00e1 informa\u00e7\u00f5es do jogo.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image076.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-254 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image076.png\" alt=\"image076\" width=\"899\" height=\"258\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image076.png 899w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image076-300x86.png 300w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/a><\/p>\n<p>Um detalhe importante \u00e9 que os elementos gr\u00e1ficos est\u00e3o sendo criados na pr\u00f3pria classe e se for criado um elemento gr\u00e1fico no stage, esse persistir\u00e1 na tela independente da troca de cenas.<\/p>\n<p>Na elabora\u00e7\u00e3o da cena com informa\u00e7\u00f5es sobre o jogo, criamos uma nova classe e posicionamos nela uma \u00e1rea de texto e depois um novo bot\u00e3o, segundo visto na elabora\u00e7\u00e3o da tela inicial, e que conduzir\u00e1 para a p\u00e1gina de in\u00edcio ao ser clicado.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image078.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-253 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image078.png\" alt=\"image078\" width=\"915\" height=\"224\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image078.png 915w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image078-300x73.png 300w\" sizes=\"auto, (max-width: 915px) 100vw, 915px\" \/><\/a><\/p>\n<p>Nossa \u00faltima cena conter\u00e1 o jogo propriamente dito e esse iniciar\u00e1 com a codifica\u00e7\u00e3o j\u00e1 vista anteriormente, onde termos uma bola que ir\u00e1 descendo na tela. Nesse jogo \u00e9 esperado que o jogador clique na bola, contabilizando pontos e fazendo a bola voltar para o topo.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/cod_cena.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-255 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/cod_cena.png\" alt=\"cod_cena\" width=\"454\" height=\"375\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/cod_cena.png 454w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/cod_cena-300x248.png 300w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>Nosso pr\u00f3ximo passo consistir\u00e1 em criar um bot\u00e3o que realizar\u00e1 um rein\u00edcio no jogo, um bot\u00e3o de reload. Iniciaremos com o posicionamento do bot\u00e3o no canto inferior esquerdo da tela. Esse bot\u00e3o est\u00e1 presente na texture pack mostrada anteriormente. O c\u00f3digo abaixo adiciona o bot\u00e3o e na \u00faltima linha adiciona um evento no bot\u00e3o que, quando clicado, chama novamente a cena que estamos atrav\u00e9s do scenemanager. Isso basta para trazer os recursos de reiniciar para o jogo, fazendo a cena ser novamente chamada para a execu\u00e7\u00e3o.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image086.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-256 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image086.png\" alt=\"image086\" width=\"882\" height=\"102\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image086.png 882w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image086-300x35.png 300w\" sizes=\"auto, (max-width: 882px) 100vw, 882px\" \/><\/a><\/p>\n<p>Al\u00e9m do bot\u00e3o de rein\u00edcio, vamos adicionar um bot\u00e3o abrir\u00e1 um menu que poderia oferecer op\u00e7\u00f5es de configura\u00e7\u00e3o do jogo ou simplesmente anunciar a pausa do jogo (o recurso de pausa \u00e9 solicitado com exerc\u00edcio para praticar ao final dessa sess\u00e3o). O c\u00f3digo abaixo adiciona o bot\u00e3o de menu juntamente com o de rein\u00edcio e o evento de clique dele chama a fun\u00e7\u00e3o openMenu() que ser\u00e1 especificada a seguir.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image088.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-257 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image088.png\" alt=\"image088\" width=\"856\" height=\"87\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image088.png 856w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image088-300x30.png 300w\" sizes=\"auto, (max-width: 856px) 100vw, 856px\" \/><\/a><\/p>\n<p>A fun\u00e7\u00e3o openMenu() \u00e9 respons\u00e1vel por verificar se o menu existe na tela. Inicialmente \u00e9 estado se o objeto \u201cmenu\u201c j\u00e1 existe, se existir ele ser\u00e1 apenas adicionado na tela, aparecendo efetivamente. Caso ele n\u00e3o exista, significa que \u00e9 a primeira vez que o bot\u00e3o de menu \u00e9 clicado, \u00e9 criado um menu atrav\u00e9s da fun\u00e7\u00e3o createMenu(), definida a seguir.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image090.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-260 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image090.png\" alt=\"image090\" width=\"313\" height=\"131\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image090.png 313w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image090-300x126.png 300w\" sizes=\"auto, (max-width: 313px) 100vw, 313px\" \/><\/a><\/p>\n<p>A fun\u00e7\u00e3o createMenu() utiliza a cria\u00e7\u00e3o de formas gr\u00e1ficas atrav\u00e9s de c\u00f3digo. Poderia ser utilizada uma imagem, forma utilizada anteriormente, mas nesse caso foi optado pela cria\u00e7\u00e3o assim. O c\u00f3digo inicia com a instancia\u00e7\u00e3o de uma classe Shape e que \u00e9 seguida da especifica\u00e7\u00e3o de qual formato de linha ser\u00e1 utilizado para contornar a forma, sendo configurado um formato s\u00f3lido, na cor preta e uma espessura de 0.5. A seguir s\u00e3o especificados pontos que ser\u00e3o utilizados para tra\u00e7ar linhas e formar a forma pretendida s\u00e3o especificados 4 pontos atrav\u00e9s da passagem de suas coordenadas. O m\u00e9todo closePath() completa a forma unindo o \u00faltimo ponto especificado ao primeiro e o m\u00e9todo endPath() \u00e9 quem especifica a finaliza\u00e7\u00e3o da especifica\u00e7\u00e3o da forma.<\/p>\n<p>Ap\u00f3s criar a forma, s\u00e3o adicionados dois eventos vinculados ao MOUSE_DOWN e ao MOUSE_UP, onde eles realizar\u00e3o a parada da propaga\u00e7\u00e3o desses eventos, retirando os ouvintes existentes para esses dois eventos. Sendo assim, ao criar o menu esses eventos n\u00e3o mais funcionar\u00e3o, ent\u00e3o os outros elementos (no nosso caso, o clique no reiniciar e na bola do jogo, n\u00e3o mais funcionar\u00e3o para essas a\u00e7\u00f5es.<\/p>\n<p>O c\u00f3digo finaliza adicionando dentro da forma do menu, um bot\u00e3o para fechamento do menu. Ele tamb\u00e9m adiciona um evento nesse bot\u00e3o, tornando-o ent\u00e3o o \u00fanico item clic\u00e1vel na interface. O c\u00f3digo encerra retornando o objeto de menu rec\u00e9m criado.<\/p>\n<p><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image092.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-258 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image092.png\" alt=\"image092\" width=\"708\" height=\"358\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image092.png 708w, http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image092-300x152.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/a><\/p>\n<p>A op\u00e7\u00e3o de fechar do menu chama a fun\u00e7\u00e3o closeMenu() \u00e9 mostrada abaixo e simplesmente retira o menu da cena. A fun\u00e7\u00e3o tamb\u00e9m altera a vari\u00e1vel que controla se o jogo est\u00e1 pausado, marcado que ele deixa de estar pausado. Essa vari\u00e1vel \u00e9 marcada como <em>true<\/em> quando o menu \u00e9 aberto.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image094.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-259\" src=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-content\/uploads\/sites\/3\/2015\/04\/image094.png\" alt=\"image094\" width=\"266\" height=\"67\" \/><\/a><\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"667\"><strong>Para praticar:<\/strong> implemente no jogo o recurso de pausar, fazendo com que a bola n\u00e3o se desloque enquanto jogo estiver pausado.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><\/h1>\n","protected":false},"excerpt":{"rendered":"<p>Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4,"menu_order":1,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-249","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Gideros Engine - Tutoriais para cria\u00e7\u00e3o de jogos mobile multiplataformas\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Gerenciamento de cenas - Gideros Engine\" \/>\n\t\t<meta property=\"og:description\" content=\"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2015-04-19T14:32:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2015-04-19T14:33:11+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Gerenciamento de cenas - Gideros Engine\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/gerenciamento-cenas\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/#listItem\",\"name\":\"Ampliando o desenvolvimento\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/#listItem\",\"position\":2,\"name\":\"Ampliando o desenvolvimento\",\"item\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/gerenciamento-cenas\\\/#listItem\",\"name\":\"Gerenciamento de cenas\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/gerenciamento-cenas\\\/#listItem\",\"position\":3,\"name\":\"Gerenciamento de cenas\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/#listItem\",\"name\":\"Ampliando o desenvolvimento\"}}]},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/#organization\",\"name\":\"Gideros Engine\",\"description\":\"Tutoriais para cria\\u00e7\\u00e3o de jogos mobile multiplataformas\",\"url\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/gerenciamento-cenas\\\/#webpage\",\"url\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/gerenciamento-cenas\\\/\",\"name\":\"Gerenciamento de cenas - Gideros Engine\",\"description\":\"Elementos de interface consomem muito esfor\\u00e7o na elabora\\u00e7\\u00e3o de um jogo, mas s\\u00e3o imprescind\\u00edveis. Sendo assim, \\u00e9 interessante criar classes para cada tipo de elemento de interface que ser\\u00e1 necess\\u00e1rio no projeto. \\u00c9 o caso da classe a seguir, que especifica um objeto de bot\\u00e3o. O construtor da classe espera uma imagem passada como refer\\u00eancia\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/ampliando_desenvolvimento\\\/gerenciamento-cenas\\\/#breadcrumblist\"},\"datePublished\":\"2015-04-19T11:32:41-03:00\",\"dateModified\":\"2015-04-19T11:33:11-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/#website\",\"url\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/\",\"name\":\"Gideros Engine\",\"description\":\"Tutoriais para cria\\u00e7\\u00e3o de jogos mobile multiplataformas\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/gideros\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Gerenciamento de cenas - Gideros Engine","description":"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia","canonical_url":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/#listItem","position":1,"name":"Home","item":"http:\/\/www.galirows.com.br\/meublog\/gideros\/","nextItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/#listItem","name":"Ampliando o desenvolvimento"}},{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/#listItem","position":2,"name":"Ampliando o desenvolvimento","item":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/","nextItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/#listItem","name":"Gerenciamento de cenas"},"previousItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/#listItem","position":3,"name":"Gerenciamento de cenas","previousItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/#listItem","name":"Ampliando o desenvolvimento"}}]},{"@type":"Organization","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/#organization","name":"Gideros Engine","description":"Tutoriais para cria\u00e7\u00e3o de jogos mobile multiplataformas","url":"http:\/\/www.galirows.com.br\/meublog\/gideros\/"},{"@type":"WebPage","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/#webpage","url":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/","name":"Gerenciamento de cenas - Gideros Engine","description":"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/#website"},"breadcrumb":{"@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/#breadcrumblist"},"datePublished":"2015-04-19T11:32:41-03:00","dateModified":"2015-04-19T11:33:11-03:00"},{"@type":"WebSite","@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/#website","url":"http:\/\/www.galirows.com.br\/meublog\/gideros\/","name":"Gideros Engine","description":"Tutoriais para cria\u00e7\u00e3o de jogos mobile multiplataformas","inLanguage":"pt-BR","publisher":{"@id":"http:\/\/www.galirows.com.br\/meublog\/gideros\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"Gideros Engine - Tutoriais para cria\u00e7\u00e3o de jogos mobile multiplataformas","og:type":"article","og:title":"Gerenciamento de cenas - Gideros Engine","og:description":"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia","og:url":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/","article:published_time":"2015-04-19T14:32:41+00:00","article:modified_time":"2015-04-19T14:33:11+00:00","twitter:card":"summary_large_image","twitter:title":"Gerenciamento de cenas - Gideros Engine","twitter:description":"Elementos de interface consomem muito esfor\u00e7o na elabora\u00e7\u00e3o de um jogo, mas s\u00e3o imprescind\u00edveis. Sendo assim, \u00e9 interessante criar classes para cada tipo de elemento de interface que ser\u00e1 necess\u00e1rio no projeto. \u00c9 o caso da classe a seguir, que especifica um objeto de bot\u00e3o. O construtor da classe espera uma imagem passada como refer\u00eancia"},"aioseo_meta_data":[],"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/\" title=\"Ampliando o desenvolvimento\">Ampliando o desenvolvimento<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tGerenciamento de cenas\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"http:\/\/www.galirows.com.br\/meublog\/gideros\/"},{"label":"Ampliando o desenvolvimento","link":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/"},{"label":"Gerenciamento de cenas","link":"http:\/\/www.galirows.com.br\/meublog\/gideros\/ampliando_desenvolvimento\/gerenciamento-cenas\/"}],"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/249","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=249"}],"version-history":[{"count":1,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/249\/revisions"}],"predecessor-version":[{"id":261,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/249\/revisions\/261"}],"up":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/pages\/4"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/gideros\/wp-json\/wp\/v2\/media?parent=249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}