Download Criando aplicações móveis com Corona...
Criando Aplicações Móveis com Corona
Brian G. Burton, Ed.D. Traduzido por Luiz F. Duarte Jr.
Criando Aplicações Móveis com Corona Por Brian G. Burton, Ed.D. Tradução por Luiz F. Duarte Jr. Copyright © 2012 Brian G. Burton, Ed.D. Todos os direitos reservados. Impresso em Abilene, Texas, Estados Unidos da América Publicado por Burtons Media Group. Edições eletrônicas estão disponíveis. Visite http://www.BurtonsMediaGro http://www.BurtonsMediaGroup.com/books up.com/books para maiores maiores informações. Corona® SDK é uma marca registrada de Corona Labs®. Corona Labs, o Logo Corona Labs, coronalabs.com são marcas registradas da Corona Labs. Imagens da capa foram geradas usando Corona Simulator e representam aplicações feitas neste livro para Droid®, Galaxy Tab®, iPad®, e iPhone® (da esquerda para direita). Nomes de marcas registradas e imagens podem aparecer aparecer neste livro. Ao invés de usar o símbolo © a cada ocorrência da mesma, utilizamos o nome somente em uma representação comercial e para benefício do dono da marca registrada, sem nenhuma intenção de infringir qualquer marca registrada. Enquanto precauções tenham sido tomadas na preparação deste livro, o publicante e autor não assume responsabilidade por erros ou omissões, ou por danos resultantes do uso da informação contida no mesmo. TODO SOFTWARE É FORNECIDO “COMO ESTÁ”, SEM GARANTIA DE NENHUM TIPO, EXPRESSA OU IMPLICADA, INCLUINDO MAS NÃO LIMITADO ÀS GARANTIAS DE MERCABILIDADE, ADEQUAÇÃO PARA UM PROPÓSITO PARTICULAR E NÃO INFRINGIMENTO. EM NENHUM EVENTO DEVEM OS AUTORES OU DETENTORES DE COPYRIGHTS SEREM RESPONSABILIZADOS POR QUAISQUER QUEIXAS, DANOS OU OUTRAS RESPONSABILIDADES, QUER EM UMA AÇÃO DE CONTRATO, DANO OU CASOCONTRÁRIO, PARTINDO DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE. ISBN (eTextbook): 978-1-937336-12-7| 1-93733-612-3 Versão 1.7 (16/07/14)
Índice Sobre o Autor ............................................................................................................ XIII Sobre o Tradutor ......................................................................................................... XIII
Dedicatória: ........................................................ ...................................................................................... ............................................................ ............................................. ............... XIV
Prefácio ......................................................................................................................... ......................................................................................................................... X V Introdução ..................................................................................................................XVI Bem vindo ........................................................................................................................... ........................................................................................................................... XVI Para quem este livro l ivro foi feito .................................................... ....................................................................................... ................................... XVI Como este livro está organizado................................................................................ XVII Convenções usadas neste livro................................................. li vro................................................................................... .................................. XVII Usando os exemplos de código ................................................. ................................................................................... .................................. XVII Porque não usei ______ para ______ ............................................................................. ............................................................................. XVIII Apêndices ................................................................................................... ......................................................................................................................... ...................... XVIII Como entrar em Contato............................................................................................. Contato............................................................................................. XVIII Porque Escolhi Auto-Publicar........................................................... Auto-Publicar................................................................................... ........................ XVIII
Capítulo 1 ........................................................................................................................ ........................................................................................................................ 1 Olá Mundo: Instalando e Indo em Frente! ........................................................... 1 O que este livro não é................................................. ........................................................................................................ .......................................................... ... 1 Iniciando..................................................................................................... ................................................................................................................................... .............................. 2 Corona: Alguma História.............................................. História............................................................................. ............................................................. .................................. .... 2 Software: Corona............................................................................ .......................................................................................................... .................................................. ....................2 Software: Android.......................................................................... ........................................................................................................ .................................................. ....................2 Exemplos e Imagens ........................................................... ......................................................................................... ............................................................ ..............................3 Software: iOS .......................................................... ......................................................................................... ............................................................. ............................................. ...............3 Hardware para Desenvolver: Corona ............................................................................ ............................................................................ 3 Hardware para Desenvolver: Dispositivos de Teste ................................................ ................................................ 4 Android ....................................................... ..................................................................................... ............................................................ ............................................................ ..............................4 ..................................................................................... ............................................................ ............................................................ ........................................ ..........5 iOS ....................................................... Considerações de Publicação ............................................................ ............................................................................................ ................................ 5 Android (Google)..................................... (Google)................................................................... ........................................................... .......................................................... ...............................5 iOS (Apple) .......................................................... ........................................................................................ ............................................................ .................................................. ....................6 Programando no Corona: Lua ................................................... ........................................................................................... ........................................ 6 Programando no Corona: Editores ................................................................................. ................................................................................. 6 Configurando Corona ............................................................................................. ........................................................................................................... .............. 8 Macintosh ....................................................... ..................................................................................... ............................................................ ....................................................... .........................9 Windows ......................................................... ....................................................................................... ............................................................ .................................................... ...................... 10
Programando no Corona: Olá Mundo (V1.0) ................................................. ............................................................ ........... 10 Projeto 1.0: Olá Mundo..................................................................................................... ..................................................................................................... 11 Configurações do Projeto ........................................................... ......................................................................................... ............................................... ................. 12 Projeto 1.1: Olá Ol á Mundo (v2.0)........................................................................................ (v2.0)........................................................................................ 16 Objetos ........................................................ ...................................................................................... ............................................................ ......................................................... ...........................17 Recapitulando ........................................................ ....................................................................................... ............................................................. .......................................... ............ 18 Tarefas ........................................................ ...................................................................................... ............................................................ ......................................................... ...........................18
Capítulo 2 ..................................................................................................................... 19 Botões e Texto ............................................................................................................ 19 Conheça seus Limites ................................................. ........................................................................................................ ....................................................... 19 Projeto 2: Diversão com Botões .................................................................................... .................................................................................... 20 Funções.................................................................. Funções............................................................................................... .......................................................... ............................................... .................. 22 Projeto 2.1: Diversão Div ersão com Botões V2 .............................................................. .......................................................................... ............ 24 Ficando Divertido! .......................................................... ........................................................................................ ........................................................... ................................ ... 25 Como Corona lê seu arquivo main.lua main.l ua ..................................................... ........................................................................ ................... 26 Recapitulando................................................................................................... Recapitulando............................................ .......................................................................... ................... 27 Tarefas................................................................................................................. .................................................................................................................................... ................... 27
Capítulo 3 ..................................................................................................................... 28 Animação, Alfa e Orientação ................................................................................. 28 28 Animação .................................................................................................... ............................................................................................................................... ........................... 28 Projeto 3: Animação Básica ............................................................... ............................................................................................ ............................. 28 Agora você vê, Agora não vê mais............................ mais .......................................................... ........................................................... ................................ ... 31 Projeto 3.1: Diversão Alfa ............................................................................................... ............................................................................................... 31 Troca de Orientação .................................................. ................................................................................ ............................................................. ..................................... ...... 34 Projeto 3.2: Uma Nova Orientação .................................................. ............................................................................... ............................. 35 Recapitulando................................................................................................... Recapitulando............................................ .......................................................................... ................... 40 Tarefas................................................................................................................. .................................................................................................................................... ................... 40
Capítulo 4 ..................................................................................................................... 42 Preenchendo os Campos ........................................................................................ 42 Campos de Texto.................................................. Texto ........................................................................................................ ............................................................... ......... 42 Projeto 4: Calculadora Simples ................................................................... ..................................................................................... .................. 43 Compilando para Dispositivos ...................................................................................... ...................................................................................... 51 Apple iOS........................................................................ ....................................................................................................... ............................................................. .................................... ......52 Compilação para o Simulador iOS................................................ iOS.............................................................................. .......................................... ............ 53 Compilação para Dispositivo Apple iOS ............................................................................. ............................................................................... 53 Compilação para Dispositivo Android OS ......................................................... .......................................................................... ................. 55 Tarefas................................................................................................................. .................................................................................................................................... ................... 58
Capítulo 5 Todos Tipos de Gráficos Gráfic os .................................................................... 60
Gráficos Vetoriais .......................................................................................... ............................................................................................................... ..................... 60 Projeto 5: Formas Vetoriais....................................................... V etoriais............................................................................................ ..................................... 61 Gráficos Bitmap............................................................ Bitmap................................................................................................................ ....................................................... ... 65 Resolução............................................................. Resolução........................................................................................... ............................................................ ............................................... ................. 66 Escalonando ....................................................... ..................................................................................... ............................................................ ............................................... .................67 Masking ........................................................... ......................................................................................... ............................................................ .................................................... ......................67 Sprite Sheets........................................ Sheets....................................................................... ............................................................. ............................................................ ................................ 69 Projeto 5.1: Sprites Uniformes ........................................................................... ...................................................................................... ........... 70 Projeto 5.3: Animação Ani mação de Sprites ................................................................................. ................................................................................. 73 Métodos de Controle de Sprites ......................................................... ....................................................................................... ..................................... ....... 74 Propriedades da Sprite ................................................................ ............................................................................................. ............................................... .................. 75 75 Gatilhos de d e Eventos de Sprites (Listeners) ............................. ............................................................ ........................................... ............ 75 Outros Usos de Imagens/Sprite Sheets ........................................................... ...................................................................... ........... 75 Recapitulando................................................................................................... Recapitulando............................................ .......................................................................... ................... 76 Tarefas................................................................................................................. .................................................................................................................................... ................... 76
Capítulo 6 ..................................................................................................................... 78 Interface do Usuário ................................................................................................ 78 Recursos ..................................................................................................... ................................................................................................................................ ........................... 78 build.settings .......................................................... ......................................................................................... ............................................................. .......................................... ............ 79 config.lua ......................................................... ....................................................................................... ............................................................ .................................................... ...................... 79 Alinhamento Dinâmico de Conteúdo............................................................. Conteúdo.................................................................................... ....................... 81 Resolução Dinâmica de Imagem ..................................... .................................................................. ........................................................ ...........................81 Adicionando Som ................................................. ....................................................................................................... ............................................................... ......... 83 Tipos de Arquivos de Som .......................................................... ........................................................................................ ............................................... ................. 83 Tempo é Tudo ............................................................. ............................................................................................ ............................................................. ..................................... ....... 83 Streams e Som ....................................................... ...................................................................................... ............................................................. .......................................... ............ 84 Projeto 6.0: Beat-box ................................................. ........................................................................................................ ....................................................... 85 config.lua file .......................................................... ......................................................................................... ............................................................. .......................................... ............ 86 Arquivo build.settings ............................................................................ ........................................................................................................... ..................................... ...... 87 Fonts Personalizadas ..................................................................................... ........................................................................................................ ................... 90 Projeto 6.1 Fonts Personalizadas Persona lizadas ................................................................................. ................................................................................. 91 Recapitulando................................................................................................... Recapitulando............................................ .......................................................................... ................... 94 Tarefas................................................................................................................. .................................................................................................................................... ................... 94
Capítulo 7:.................................................................................................................... 96 Interfaces da d a Aplicação ........................................................................................... 96 Escondendo a Barra de Status .................................................................... ....................................................................................... ................... 96 Grupos .................................................. ......................................................................................................... .................................................................................. ........................... 97 Projeto 7: Movimento em Grupo .................................................................................. .................................................................................. 97 Módulos e Pacotes .......................................................... ........................................................................................ ........................................................... ................................ ... 98
Projeto 7.1: Biblioteca Bib lioteca Externa ..................................................................................... ..................................................................................... 98 Bibliotecas Externas ..................................................................................... ........................................................................................................ ................... 100 CrawlSpace..................................................... CrawlSpace................................................................................... ............................................................ ................................................. ................... 100 CoronaSSK ........................................................... ......................................................................................... ............................................................ ............................................ .............. 101 Projeto 7.2: Criando uma Splash Screen ................................................. .................................................................. ................. 101 Composer ................................................................................................... ............................................................................................................................ ......................... 104 Projeto 7.3 Uma Simples História .............................................................................. .............................................................................. 104 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 111 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 111
Capítulo 8:.................................................................................................................. 112 Diversão com c om Física................................................................................................ 112 Ligando a Física ............................................................ ................................................................................................................ ...................................................... 112 Escala........................................................... ......................................................................................... ............................................................ ...................................................... ........................ 113 Corpos ......................................................... ....................................................................................... ............................................................ ...................................................... ........................ 113 Tipos de Corpos .......................................................................... ....................................................................................................... ................................................ ................... 114 Densidade, Fricção e Elasticidade .......................................................... ....................................................................................... ............................. 114 114 Formas de Corpos ...................................................................... ................................................................................................... ................................................ ................... 115 Propriedades do Corpo..................................................................... Corpo.................................................................................................... ....................................... ........ 116 Métodos dos Corpos............................................................ Corpos.......................................................................................... ...................................................... ........................ 117 Projeto 8: Usando Força .................................................... ................................................................................................. ............................................. 117 Gravidade ................................................................................................... ............................................................................................................................ .........................122 Chão e Bordas .............................................................................. ........................................................................................................... ................................................ ................... 122 Projeto 8.1: Brincando com Gravidade .................................................................... .................................................................... 123 Detecção de Colisão ......................................................................................................... ......................................................................................................... 126 Sensores .......................................................... ........................................................................................ ............................................................ ................................................. ................... 127 Joints ............................................................ .......................................................................................... ............................................................ ...................................................... ........................ 127 Pivot Joint ....................................................... ..................................................................................... ............................................................ ................................................. ................... 128 Distance Joint ......................................................... ........................................................................................ ............................................................. ....................................... ......... 129 Piston Joint .......................................................... ........................................................................................ ............................................................ ............................................ .............. 129 Friction Joint .......................................................... ......................................................................................... ............................................................. ....................................... ......... 129 Weld Joint ....................................................... ..................................................................................... ............................................................ ................................................. ................... 130 Wheel Joint.................................................................... ................................................................................................... ............................................................. ................................. ... 130 Pulley Joint ................................................................................... ................................................................................................................. ................................................. ................... 130 Touch Joint .......................................................... ........................................................................................ ............................................................ ............................................ .............. 131 Métodos e Propriedades Comuns aos Joints J oints ......................................................... .................................................................. ......... 132 132 Projeto 8.2: Bola de Demolição Demoliç ão ........................................................................... ................................................................................... ........ 132 Depurando Física ....................................................... ..................................................................................... ............................................................ .................................. .... 134 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 135 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 135
Capítulo 9:.................................................................................................................. 136
Criando um Jogo com c om Corona ............................................................................. 136 Projeto de Jogo .................................................. ......................................................................................................... ................................................................ ......... 136 Arrastando Objetos ......................................................................................................... ......................................................................................................... 139 Detecção de Colisão ......................................................................................................... ......................................................................................................... 143 Dê o Seu Melhor Tiro .................................................. ....................................................................................................... ..................................................... 145 Reduzindo a Sobrecarga ................................................................................................ ................................................................................................ 145 Laço de Jogo ............................................................................................. ........................................................................................................................ ........................... 146 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 147 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 147
Capítulo 10: ............................................................................................................... 149 Continuando o Star Explorer .............................................................................. 149 Configurando a Aplicação para Múltiplos Dispositivos ..................................... 149 Splash Screen .................................................................................................................... ...................................................................................................................... 150 Melhorando o Desempenho ......................................................................................... ......................................................................................... 156 Variando a Dificuldade................................................................................................... ................................................................................................... 164 Aumentando a Velocidade do Jogo J ogo ........................................................ ..................................................................................... ............................. 164 Uma Pequena Variedade ......................................... ........................................................................ ............................................................. ................................. ... 165 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 166 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 166
Capítulo 11: ............................................................................................................... 167 Mídia faz o Mundo Girar ....................................................................................... 167 Trabalhando com Som............................................... Som.................................................................................................... ..................................................... 167 Controles Básicos de Áudio ........................................................................... ................................................................................................... ........................ 167 167 Controles de Duração de d e Áudio ........................................................................ ........................................................................................... ................... 169 169 Controles de Volume .......................................................... ........................................................................................ ...................................................... ........................ 169 Canais de Áudio............................................................... Áudio.............................................................................................. ............................................................ ............................. 170 Tipos de Arquivos de Som (Revisão) ........................................................................ ........................................................................ 171 Onde coloquei aquele arquivo?........................................................ arquivo?................................................................................... ........................... 171 API Multimídia........................................................................................ Multimídia................................................................................................................... ........................... 172 Gravando Áudio ................................................... ......................................................................................................... ............................................................. ....... 172 172 Projeto 11: Gravador Simples de Áudio ................................................................... ................................................................... 173 Reprodução de Vídeo ............................................................................. ...................................................................................................... ......................... 182 Câmera ................................................. ........................................................................................................ ................................................................................ ......................... 182 Projeto 11.1 Câmera de Raio-X ................................................ ................................................................................... ................................... 182 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 187 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 187
Capítulo 12: ............................................................................................................... 188 Armazenamento de Arquivos & SQLite ........................................................... 188
Considerações de E/S ............................................................................. ...................................................................................................... ......................... 188 Lendo Dados ....................................................................................................................... ....................................................................................................................... 189 Manipulação de Arquivos Arquiv os Implícita vs. Explícita ......................................................... ......................................................... 189 Leitura Implícita ......................................................... ....................................................................................... ............................................................ .................................. .... 190 Leitura Explícita................................................. Explícita.............................................................................. ........................................................... ............................................ .............. 190 Escrevendo Dados ............................................................................................................ ............................................................................................................ 190 190 Implícito .......................................................... ........................................................................................ ............................................................ ................................................. ................... 191 Explícito................................................................. Explícito................................... ........................................................... ........................................................... ............................................ .............. 191 JSON .................................................................................................... ....................................................................................................................................... ...................................191 Projeto 12: Leitura L eitura & Escrita com c om JSON ................................................................... 191 SQLite .................................................... ........................................................................................................... ................................................................................ .........................193 Comandos LuaSQLite.................................. LuaSQLite............................................................... .......................................................... ................................................. .................... 194 Projeto 13: Lendo uma Base Ba se SQLite........................................................................... 194 Projeto 13.1 Escrevendo em uma Base SQLite ..................................................... ....................................................... 197 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 209 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 209
Capítulo 13: ............................................................................................................... 210 À Espera de Tabelas ............................................................................................... 210 Tabela vs. Table: Entendendo a Confusão............................................................... ............................................................... 210 Ferramentas para Tabelas ................................................................... ............................................................................................ ......................... 211 Projeto 13: Criando uma TableView Tab leView Simples Si mples ........................................................ ........................................................ 212 Projeto 13.1: Table View V iew com SQLite S QLite ....................................................................... ....................................................................... 217 ......................................................... ...................................................................................... ............................................................ ............................................................. ....................................... ......... 222 Tela de Detalhes (parte do main.lua) main.lu a) ......................................... ........................................................................ ....................................... ........ 222 222 Tela ZipScreen Z ipScreen (parte do main.lua) ....................................................... .................................................................................... ............................. 223 Tela cityList cityLi st (parte do main.lua) m ain.lua) .................................................. ................................................................................ ....................................... ......... 226 Tela stateList (parte do main.lua)........................................... main.lua)......................................................................... ............................................ .............. 227 227 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 230 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 231
Capítulo 14: ............................................................................................................... 232 Redes ........................................................................................................................... 232 Web Services ...................................................................................................................... ...................................................................................................................... 232 232 HTTP ............................................................ .......................................................................................... ............................................................ ...................................................... ........................ 233 Projeto 14: Download de Imagens – Via Biblioteca B iblioteca Network .......................... 234 Socket................................................................................................................... Socket............................................................ ........................................................................ ................. 236 Projeto 14a: Download de Imagem – Via Biblioteca Socket ............................. ............................. 236 Rastreando o Status da d a Rede ......................................................... ....................................................................................... ....................................... ......... 238 238 Upload para um Servidor Web .................................................................................... .................................................................................... 238 Arquitetura 3-Camadas .......................................................... ....................................................................................... ................................................. .................... 239
Exemplo de Post 1: Fazendo Upload de Dados de d e Formulário .............................. 239 Exemplo de Post 2: Fazendo Upload de Arquivos Arqui vos ou Imagens .............................. 240 Conectando a Redes Propietárias ................................................... .............................................................................. ........................... 241 Facebook..................................................................................................................... Facebook.............................................................. ................................................................ ......... 241 Exemplo Facebook............................................ Facebook......................................................................... ........................................................... ............................................ .............. 242 Redes de Publicidade ............................................................................. ...................................................................................................... ......................... 243 Game Services ........................................................................................................... .................................................................................................................... ......... 244 Apple Game Center ..................................................... .......................................................................................................... ..................................................... 244 Google Play Game Services ........................................................................................... ........................................................................................... 246 Pubnub ................................................. ........................................................................................................ ................................................................................ .........................248 Projeto 14.1 Aplicação Multi-Usuário............................................ Multi-Usuário....................................................................... ........................... 248 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 252 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 252
Capítulo 15: ............................................................................................................... 254 Trabalhando com Widgets & Popups .............................................................. 254 Ferramentas de Mock-up e pré-design pr é-design .................................................................... .................................................................... 254 Widgets ................................................ ....................................................................................................... ................................................................................ ......................... 255 Widgets mais Atraentes ................................................................................................. ................................................................................................. 257 widget.newButton .......................................................... ........................................................................................ ........................................................... .............................257 widget.newPickerWheel ........................................................ ...................................................................................... ................................................. ................... 260 Projeto 15.1 Exemplo widget.newPickerWheel ........................................................... ........................................................... 262 widget.newSlider ....................................................... ..................................................................................... ............................................................ .................................. .... 265 Projeto 15.2 Exemplo Widget Slider & Progress View .............................................. .............................................. 267 widget.newScrollView ....................................................... ..................................................................................... ...................................................... ........................ 268 widget.newSegmentedControl ........................................................... ......................................................................................... .................................. .... 270 widget.newSpinner ........................................................ ...................................................................................... ........................................................... .............................271 widget.newStepper ........................................................ ...................................................................................... ........................................................... .............................271 widget.newSwitch...................................................................... widget.newSwitch........................................ ........................................................... ................................................ ................... 272 widget.newTableView.................................................................. widget.newTableView..................................... .......................................................... ............................................ ............... 274 Exemplo widget.newTableView ........................................................ ...................................................................................... .................................. .... 276 widget.newTabBar ......................................................... ....................................................................................... ........................................................... .............................279 Project 15.4 Widget Tab Bar Example ..................................................... ...................................................................... ................. 281 Removendo Widgets .................................................. ....................................................................................................... ..................................................... 294 Web Popups ........................................................................................................ ........................................................................................................................ ................ 294 Exemplo Web Popup .......................................................... ........................................................................................ ...................................................... ........................ 295 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 296 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 296
Capítulo 16: ............................................................................................................... 297 Rotten Apple – um Jogo de Defender a Torre ............................................... 297
Rotten Apples – Inspiração e Recursos .................................................................... .................................................................... 297 Adicionando Animação com Sprites.......................................................................... Sprites.......................................................................... 299 Preciso de um mapa! .......................................................... ....................................................................................................... ............................................. 300 Duas Estradas Divergem................................................... ................................................................................................ ............................................. 301 Espaço, A Fronteira Final.......................................... Final.............................................................................................. ...................................................... 302 Corrida de Ratos ............................................................................................................... ............................................................................................................... 303 Em suas Marcas…................................................. ....................................................................................................... ............................................................. ....... 309 Reduzindo Colisões....................................................................... Colisões.......................................................................................................... ................................... 314 314 Planilha de Colisões ....................................................... ..................................................................................... ........................................................... ............................. 314 314 Pegue o Tiro – Cuidando das Colisões ...................................................................... 315 Já estamos lá? – adicionando o clubinho ................................................................. ................................................................. 317 Adicionando Torres: Arrastando Torres na Tela ................................................ .................................................. 328 Qual a Pontuação? ............................................................... ............................................................................................................ ............................................. 332 Vamos Deixar o Jogo Rolar! ............................................................... .......................................................................................... ........................... 333 Closures ........................................................... ......................................................................................... ............................................................ ................................................. ................... 333 Inicialização ........................................................ ...................................................................................... ............................................................ ............................................ .............. 334 Loop-De-Loop!............................................................ Loop-De-Loop!............................... ............................................................ ............................................................. .................................. .... 337 Controle de Fases e Ondas ............................................................................. ..................................................................................................... ........................ 339 Fora Ruídos! ....................................................... ..................................................................................... ............................................................ ............................................ .............. 340 Adicionando opções pausar/resumir/salvar ........................................................ ........................................................ 340 Adicionando a Splash Screen .................................................... ....................................................................................... ................................... 344 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 346 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 346
Capítulo 17 ................................................................................................................ 347 Eventos do Sistema & Ferramentas .................................................................. 347 Eventos do Sistema .......................................................................................................... .......................................................................................................... 347 Acelerômetro .................................................................................................... ..................................................................................................................... ................. 348 Projeto 17.0 Acelerômetro ................................................ ........................................................................................... ........................................... 350 Giroscópio ................................................... .......................................................................................................... ........................................................................ .................354 Projeto 17.1 Giroscópio .................................................... ................................................................................................. ............................................. 355 Alertas ..................................................................................... .................................................................................................................................. ............................................. 360 GPS ...................................................................................................... ......................................................................................................................................... ...................................360 Projeto 17.2 GPS .................................................. ........................................................................................................ ............................................................. ....... 361 Mapas .................................................... ........................................................................................................... ................................................................................ .........................366 Objeto Map ........................................... ......................................................................... ............................................................. ........................................................... ............................ 367 Map Address ................................... .................................................................. ............................................................ ........................................................... .................................. .... 368 Map Location .................................. ............................................................... ............................................................ ............................................................. .................................. .... 368 Projeto 17.3 Mapas .......................................................................................................... .......................................................................................................... 368 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 370 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 370
Capítulo 18 ................................................................................................................ 371 Gráficos Avançados ................................................................................................ 371 Graphics 2.0 ........................................................................................................ ........................................................................................................................ ................ 371 Pintar .................................................... ........................................................................................................... ................................................................................ .........................371 Preenchimentos - Fiiltros, Composite, e Geradores G eradores ............................................ ............................................ 372 Preenchimentos .......................................................... ........................................................................................ ............................................................ .................................. .... 372 Filtros .......................................................... ........................................................................................ ............................................................ ...................................................... ........................ 372 Projeto 18.1 Filtrando com chromaKey .................................................. ................................................................... ................. 377 Efeitos Compostos .......................................................... ........................................................................................ ........................................................... ............................. 378 Geradores ....................................................... ..................................................................................... ............................................................ ................................................. ................... 382 Projeto 18.2 Marching Ants ......................................................................... .......................................................................................... ................. 383 Containers ................................................... .......................................................................................................... ........................................................................ ................. 384 Projeto 18.3 Containers........................................... Containers......................................................................... ............................................................. .................................. ... 385 Liquid Fun ................................................... .......................................................................................................... ........................................................................ ................. 386 386 Projeto 18.4 Liquid Fun ....................................... .................................................................... ............................................................ ....................................... ........ 386 Recapitulando................................................................................................... Recapitulando............................................ ........................................................................ ................. 389 Tarefas.................................................. ......................................................................................................... ................................................................................ ......................... 390
Capítulo 19 ................................................................................................................ 391 Recursos Adicionais ............................................................................................... 391 Autocomplete..................................................................................................................... Autocomplete............................................................................................................ ......... 391 BBEdit ................................................... .......................................................................................................... ................................................................................ .........................392 Corona Comic ..................................................................................................................... ..................................................................................................................... 392 Outlaw Project Manager ................................................................................................ ................................................................................................ 392 CoronaSSK ........................................................... ......................................................................................... ............................................................ ............................................ .............. 393 Corona Remote ....................................................................................... .................................................................................................................. ........................... 393 Crawlspace .................................................. ......................................................................................................... ........................................................................ ................. 393 Kwik .................................................................................................... ...................................................................................................................................... .................................. 394 Lime .................................................................................................... ....................................................................................................................................... ...................................394 Physics Editor ................................................................................................... .................................................................................................................... ................. 394 394 SpriteHelper & Level Helper ........................................................................................ ........................................................................................ 395 Sublime Text 3 ................................................................................ ................................................................................................................... ................................... 395 Texture Packer .................................................................................................................. .................................................................................................................. 395 395 Tiled .................................................................................................... ...................................................................................................................................... .................................. 396 Websites Úteis ................................................... ........................................................................................................... ................................................................ ........ 396 Imagens Isométricas Gratuitas .............................................................................. ............................................................................................ .............. 396 Música ......................................................... ....................................................................................... ............................................................ ...................................................... ........................ 396 Efeitos Sonoros .......................................................... ......................................................................................... ............................................................. .................................. .... 396 Tutoriais .......................................................... ........................................................................................ ............................................................ ................................................. ................... 396
Apêndice A ................................................................................................................. 397
A Linguagem Lua ..................................................................................................... 397 Lua.......................................................................................................................................... Lua....................................................................................................... ................................... 397 Uma Introdução ............................................................................................. ................................................................................................................ ................... 397 397 O que é Lua?................................................ ........................................................................................................ ........................................................................ ................ 397 Lua na Prática ......................................................................................... .................................................................................................................... ........................... 399 Tipos e Variáveis ................................................. ....................................................................................................... ............................................................. ....... 399 Declarações de Tipos ..................................................... ................................................................................... ........................................................... ............................. 400 Nil ........................................................ ...................................................................................... ............................................................ ............................................................ .................................. .... 401 Booleans .......................................................... ........................................................................................ ............................................................ ................................................. ................... 401 Numeric Values ............................................................................... ............................................................................................................. ............................................ .............. 402 Operadores Numéricos............................................ Numéricos.......................................................................... ............................................................. .................................. ... 403 Divisão por Zero ......................................................... ....................................................................................... ............................................................ .................................. .... 403 Strings ......................................................... ....................................................................................... ............................................................ ...................................................... ........................ 404 Declarando Strings ......................................................... ....................................................................................... ........................................................... ............................. 404 Caracteres de Escape ..................................................... ................................................................................... ........................................................... ............................. 405 Concatenando Strings ........................................................ ...................................................................................... ...................................................... ........................ 406 Comparando Valores ................................................. ...................................................................................................... ..................................................... 406 Operadores Booleanos ................................................................................................... ................................................................................................... 407 O operador and (E)......................................................... ....................................................................................... ........................................................... ............................. 408 O operador or (OU) ................................................................................. ............................................................................................................... .................................. .... 408 O operador not (Negação) .......................................................... ........................................................................................ ............................................ .............. 408 Empilhando Operadores Booleanos ..................................................................... .................................................................................. ............. 409 Funções de Dados Da dos em Lua ................................................ ............................................................................................. ............................................. 410 Funções String ............................................................................. .......................................................................................................... ................................................ ................... 410 Achando o comprimento de uma String .......................................................................... .......................................................................... 410 Substituição Global .............................................................. ............................................................................................ ...................................................... ........................ 410 Encontrando um padrão em uma String......................... String ....................................................... ................................................. ................... 411 Achando um Padrão em uma String .......................................................... .................................................................................. ........................ 412 Obtendo os valores em byte de Caracteres......................................... Caract eres..................................................................... ............................ 413 Obtendo strings de bytes ............................................. ............................................................................ ........................................................... ............................ 413 413 Trocando Maiúsculas e Minúsculas Min úsculas .......................................................................... ................................................................................... ......... 413 413 Retornando Parte de d e uma String ....................................................... ..................................................................................... .................................. .... 414 Funções Matemáticas ............................................................................. ............................................................................................................ .................................. ... 414 Função .................................................. ......................................................................................................... ................................................................................ .........................415 Parâmetros ................................................. ........................................................................................................ ........................................................................ .................415 Retorna........................................................................................................ Retorna................................................. ................................................................................ ......................... 415 Um Aviso A viso sobre Blocos de Código em Lua ...................................................... ............................................................... ......... 416 Diretivas Condicionais ................................................................................................... ................................................................................................... 417 A Diretiva if ............................................................. ........................................................................................... ............................................................. ........................................ ......... 417 Usando else ........................................................................ ....................................................................................................... ........................................................... ............................ 417 Diretivas If Aninhadas.............................................. Aninhadas............................................................................ ............................................................. .................................. ... 418 Loops ..................................................... ............................................................................................................ ................................................................................ .........................419
The for Loop ................................................................................. .............................................................................................................. ................................................ ................... 420 The while Loop .................................................. ................................................................................ ............................................................ ............................................ .............. 421 The repeat Loop ....................................... ..................................................................... ........................................................... ..................................................... ........................ 422 Using break ............................................................. ........................................................................................... ............................................................. ........................................ ......... 422 Custom Functions ............................................................................................................. ............................................................................................................. 424 Defining a Function ....................................................................... ..................................................................................................... ............................................ .............. 424 Returning Values V alues from a Function........................... Function ......................................................... ........................................................... ............................. 425 Returning Nothing ......................................................................... ....................................................................................................... ............................................ .............. 426 Returning Multiple Values ......................................................... ....................................................................................... ............................................ .............. 427 Multiple Assignment Assignm ent in Variable Definition .......................................................... ................................................................... ......... 427 427 Multiple Assignment from Function Return Values ................................................... ................................................... 428 Multiple Return Values V alues as Function F unction Parameters ......................................................... ......................................................... 428 Value Lists ........................................................... ......................................................................................... ............................................................ ............................................ .............. 429 Summary..................................................................................................... Summary.............................................. ................................................................................ ......................... 430
Appendix B ................................................................................................................ ................................................................................................................ 432 Advanced Lua ........................................................................................................... 432 Lua.......................................................................................................................................... Lua....................................................................................................... ................................... 432 Advanced Topics .................................................. ........................................................................................................ ............................................................. ....... 432 Understanding Variables.......................................... Variables.............................................................................................. ...................................................... 432 Global and Local Variables ............................................... ............................................................................. ...................................................... ........................ 433 433 Understanding Scope ......................................................... ....................................................................................... ...................................................... ........................ 434 Functions and Variable Scope ............................................................ .......................................................................................... .................................. .... 436 Closures ........................................................... ......................................................................................... ............................................................ ................................................. ................... 437 Garbage Collection ........................................................................................................... ........................................................................................................... 438 Functions with Variable Arguments ......................................................................... ......................................................................... 439 The VarArg Operator ...................................................................................................... ...................................................................................................... 441 Select....................................................... Select..................................................................................... ............................................................ ........................................................... ............................. 441 Recursion ................................................................................................... ............................................................................................................................ ......................... 442 The Table Type.................................................. ......................................................................................................... ................................................................ ......... 444 444 Associativity ....................................................... ..................................................................................... ............................................................ ............................................ .............. 445 Tables as Arrays..................................................................................... Arrays................................................................................................................ ........................... 447 ........................................................................................ ............................................................. ....................................... ......... 447 Array Indices ......................................................... ........................................................................................ ............................................................ .................................. .... 447 Creating Arrays .......................................................... ....................................................................................... ................................................. ................... 448 Arrays are Tables Too! ......................................................... Unpacking Arrays............................................................ Arrays.......................................................................................... ........................................................... ............................. 450 Finding the Length of an Array ............................................ ......................................................................... ................................................ ................... 450 Looping Over Arrays Arr ays with ipairs .................................................. ................................................................................ ....................................... ......... 450 Adding Values to Arrays.......................................... Arrays......................................................................... ............................................................. ................................. ... 451 Removing Values from Arrays.............................................. Arrays........................................................................... ................................................ ................... 452 452 Converting Arrays to Strings................................................. Strings.............................................................................. ................................................ ................... 453 453 Sorting Arrays............................................................. Arrays............................................................................................ ............................................................. .................................. .... 454
Finding the Largest Index........................................................... ......................................................................................... ............................................ .............. 454 More on Tables ....................................................................... .................................................................................................................. ........................................... 456 Iterating Through Table Keys .......................................... ....................................................................... ..................................................... ........................ 456 ........................................................................................ ........................................................... ............................. 457 The next Function .......................................................... ...................................................................................... ........................................................... ............................. 457 The pairs Function ........................................................ Object Oriented Programming in Lua....................................................................... 458 Creating an Object................................................................. Object.............................................................................................. ..................................................... ........................ 458 Designing Objects .............................................. ........................................................................... ........................................................... ............................................ .............. 459 The self Property ........................................................ ...................................................................................... ............................................................ .................................. .... 460 Metamethods .................................................................................................... ..................................................................................................................... .................462 Understanding Metamethods ....................................................................... ............................................................................................... ........................ 462 Registering Metamethods with setmetatable ....................................................... ................................................................ ......... 463 Operator Metamethods .......................................................... ....................................................................................... ................................................. .................... 463 Operator ..................................................................................................... .............................................................................................................................. ......................... 464 Metamethod Signature ................................................................................................... ................................................................................................... 464 464 Description ................................................. ........................................................................................................ ........................................................................ .................464 Accessing Values with the __index Metamethod ...................................................... .......................................................... .... 465 465 Assigning Values with the __newindex Metamethod............................................... Met amethod.................................................. ... 467 Using rawset and rawget ............................................. ............................................................................ ........................................................... ............................ 469 Creating a Pseudo-Class ........................................................................ ................................................................................................. ......................... 470 Summary..................................................................................................... Summary.............................................. ................................................................................ ......................... 472
Sobre o Autor Brian Gene Burton, Ed.D. é um professor, autor, e desenvolvedor desenvolvedor de d e jogos. Ele criou graduações de jogos em duas universidades e gosta de pesquisar e brincar com ambientes virtuais. Brian apresenta e publica internacionalmente internacionalmente suas pesquisas e gosta de compartilhar o que ele aprendeu sobre desenvolvimento de jogos e mobilidade. Quando não está viajando ou ensinando, ele pode ser encontrado em sua casa nas Montanhas Ozark no Missouri com sua bela esposa há mais de 25 anos, Rosemary.
Sobre o Tradutor Luiz Fernando Duarte Júnior é consultor, empreendedor empreendedor e professor universitário na região de Porto Alegre-RS, Brasil. Bacharel em Ciência da Computação com pós-graduação em Computação Móvel, é aficcionado por desenvolvimento para smartpho s martphones nes desde 2006. De lá para cá, já desenvolveu para as plataformas JME, PalmOS, Blackberry, Android e iOS, tendo ministrado dezenas de palestras e cursos em faculdades e escolas técnicas de seu estado. Ele adora compartilhar seu conhecimento e um pouco de seu trabalho pode ser conhecido no seu blog pessoal LuizTools.com
Dedicatória:
Eu dedico este livro à minha amada esposa cujo suporte e encorajamento manteram-me focado e escrevendo. Um agradecimento especial aos meus estudantes e à comunidade Corona pelo seu suporte e requisições por detalhes específicos que ajudaram bastante no desenvolvimento deste livro. Os loops sonoros e musicais foram graciosamente fornecidos por Shaun Reed da Constant Seas. Você pode checar sua banda em http://www.constantseas.com Gráficos Tileset do Reiner’s Tilesets (http://www.reinerstilesets.de) (http://www.reinerstilesets.de) foram usados com permissão. Todas outras imagens (a menos que especificado) e capa foram desenhados por Brandon Burton. Ajuda na edição e formatação provida por Brianna Burton (http://www.LiteraryDiaries.com http://www.LiteraryDiaries.com ) ) Um agradecimento à Luiz Fernando Duarte Júnior, webmaster do blog http://luiztools.com,, por esta versão em português do livro. http://luiztools.com
Prefácio Bem vindo ao Corona! Seja você somente um iniciante ou um programador experiente, Corona SDK é uma maneira fantástica de desenvolver aplicações móveis ricamente interativas. Eu desenvolvi Corona com os princípios p rincípios de executar e testar. Desta maneira, você estará apto a iterar e construir algo rapidamente. Por exemplo, em poucas linhas de código, você pode ter objetos quicando uns contra os outros. Hoje, Corona SDK é a plataforma líder no desenvolvimento multi-plataforma de jogos, aplicativos e eBooks. Como resultado formou-se uma enorme comunidade colaborativa de desenvolvedores à qual você pode se juntar. Eles possuem todos os históricos e níveis de experiência, de estúdios independentes, a adolescentes, à octagenários, editores e agências digitais. Neste livro, você verá que Corona lhe uma plataforma simples e poderosa para que você pegue sua ideia e construa grandes aplicativos. Se você usou outras tecnologias, eu acho que você ficará surpresso com o quão rapidamente verá algo interessante interessante na tela. Ok, é hora de começar. Com a ajuda do Corona, espero que você se divirta trazendo à vida suas ideias. Boa programação! Walter Luh Criador do CoronaSDK
Introdução Bem vindo Bem vindo ao Criando Aplicações Móveis com Corona. Este livro é o resultado de anos de desenvolvimento para dispositivos móveis. No início de 2010 comecei a buscar uma maneira de desenvolver melhor. A melhor maneira. Buscava uma ferramenta que me permitisse desenvolver mais rapidamente para múltiplas plataformas de dispositivos móveis. Estava cansado e frustrado por ter de reescrever as mesmas aplicações para iPhone, iPad ou Android. Depois de tentar diversas ferramentas e ambientes de desenvolvimento, eu encontrei o Corona SDK da Corona Labs (http://www.coronalabs.com) (http://www.coronalabs.com).. Enquanto ele ainda estava no início do desenvolvimento, desenvolvimento, ele mostrava que o time da Corona Labs estava comprometido a construir um conjunto de ferramentas de qualidade e que uma comunidade devotada de desenvolvedores estava rapidamente se formando em volta deste grande SDK (Kit de Desenvolvimento de Software). Nos dias iniciais de meu aprendizado sobre Corona, eu me foquei em criar tutoriais tutoriais (disponíveis no n o meu website http://www.BurtonsMediaGroup.com/blog , enquanto que tutoriais em Português podem ser encontrados no blog do tradutor: http://www.luiztools.com). http://www.luiztools.com). Depois de ensinar Corona a várias turmas de desenvolvimento desenvolvimento móvel e com o encorajamento de meus estudantes, eu iniciei o processo de criação do livro que poderia ser usado como um recurso de ensino para o Corona SDK. Espero que você goste de aprender sobre Corona assim como eu! Atenciosamente, Brian G. Burton, Ed.D.
Para quem este livro foi feito Enquanto meu foco e ímpeto de escrever este livro era que ele fosse usado como um “livro de consulta”, eu também escrevi acreditando que muitas (esperançosamente) (esperançosamente) pessoas estariam interessadas em aprender mais sobre Corona SDK e desenvolver para múltiplas plataformas ao mesmo tempo. Eu tinha a expectativa de que qualquer um que usasse este livro já tivesse
conhecimentos básicos em programação. Não gastei muito tempo nos fundamentos fundamentos de programação. programação. Existem muitos bons livros de programação e recomendo que você inicie neles e retorne ao desenvolvimento de aplicações quando já tiver dominado o básico.
Como este livro está organizado Enquanto escrevia este livro, eu mantive os tradicionais semestres de 16 semanas, assumindo um capítulo por semana. Uma vez que isto não f unciona para todo mundo, ele deve ser o bastante para a maioria das pessoas que estão iniciando com desenvolvimento móvel usando Corona SDK. Meu primeiro rascunho terminou terminou com mais de 20 capítulos. Depois de reorganizar reorganizar o conteúdo e continuando seu desenvolvimento, nós estávamos agora com 16 capítulos e um capítulo adicional de grandes recursos e um par de apêndices que foram graciosamente supridos pela Corona Labs sobre s obre a linguagem de script Lua.
Convenções usadas neste livro Através deste livro usaremos Courier New para denotar código que deve ser digitado exatamente igual. Quando encontrar encontrar exemplos que estão com c om Courier New, Italics você deverá digitar seus próprios valores.
Usando os exemplos de código Este livro foi escrito para ajudar você a desenvolver aplicações e jogos com Corona SDK. Em geral, você pode usar o código neste livro em seus programas e documentação. documentação. Você não precisa nos contatar para pedir permissão para reproduzir uma porção significante de código. Você não precisa pedir permissão para escrever uma aplicação que use uma grande quantidade de código. Agora, por outro lado, se eu ver aplicações que exatamente reproduzem os exemplos deste livro ou tutorial, eu não ficarei feliz. Eu não tenho problemas com pessoas que usem estes exemplos como um ponto inicial, mas vá além disso; seja original! Responder Responder questões citando este livro ou parafrasear trechos não exigem permissão (mas eu apreciaria uma citacão).
Eu reservo todos os direitos de venda ou distribuição dos exemplos exemplos em qualquer formato fornecido neste livro. Se você não está certo se seu uso cai fora das regras que determinei acima, sinta-se livre l ivre para contatar-me através de: DrBurton@BurtonsMediaG
[email protected] roup.com
Porque não usei ______ para ______ Existem muitos bons produtos disponíveis que podem ajudar os camaradas programadores a tornar seu trabalho muito mais produtivo (veja o capítulo 17 para uma lista curta). Como este livro é direcionado aos estudantes universitários universitários e pessoas p essoas que iniciaram recentemente, eu tentei não usar ferramentas externas. Se alguma ferramenta fosse necessária para que algum projeto fosse concluído, eu tentaria utilizar somente as gratuitas ou de baixo custo. Se eu não usei as suas favoritas, favoritas, eu posso 1) não saber da existência da mesma; 2) não consegui obter uma licença de testes do produto; ou 3) não gosto da ferramenta (provavelmente a primeira ou segunda opção). Se você conhece uma grande ferramenta que pode economizar muito tempo e dinheiro aos desenvolvedores, por favor compartilhe-a com o mundo no local de discussão no site deste livro: http://www.BurtonsMediaGroup.com/books .
Apêndices Apêndices A e B contendo informações sobre a linguagem de programação Lua foram fornecidos pela Corona Labs e estão incluídos com permissão. Enquanto efetuamos algumas edições no conteúdo para melhorar a legibilidade, o conteúdo original original e os exemplos ainda permanecem. p ermanecem.
Como entrar em Contato Por favor enderece seus comentários ou questionamentos para o site do livro: http://www.BurtonsMediaGroup.com/books ou email
[email protected].. Suporte em português
[email protected] p ortuguês pode ser obtido com o tradutor, Luiz Fernando, no e-mail
[email protected]
Porque Escolhi Auto-Publicar A decisão de auto-publicar este livro foi alcançada depois de muita consideração. Enquanto que existem numerosas editoras interessadas (tanto
acadêmicas quanto técnicas), eu decidi publicar ao menos a primeira p rimeira edição sem o uso de editoras tradicionais. Existem muitas razões pelas quais eu tomei esta decisão, mesmo embora ela me leve a menos vendas. Primeiro estão minhas preocupações preocupações com o preço preç o final do livro. Eu fico doente de ver livros impressos custando U$75 ou mesmo mais de U$100. Eu sinto que este preço é errado e colocam col ocam uma barreira anti-estudantes. Enquanto editoras diminuíram ligeiramente o preço com o advento de eBooks e eTextbooks, esta queda não foi o bastante em minha opinião. Minha segunda preocupação foi o quão rapidamente os ambientes de desenvolvimento mudam. Pessoalmente odeio ter de compar um novo livro a cada nova versão de software. Eu tenho pilhas de livros que estão completamente sem uso agora. Eu decidi publicar esta primeira vez como um eBook, que permite-me atualizar e fornecer ao leitor, mais rapidamente. Eu fornecerei as atualizações menores entre as edições do eBook para todos que adquirirem o eBook através do meu website: http://www.BurtonsMediaG http://www.B urtonsMediaGroup.com/boo roup.com/books/book-update/ ks/book-update/ ou ou através do blog do tradutor http://www.luiztools.com. http://www.luiztools.com. Como está sendo dito, se você recebeu uma cópia deste eBook através de torrent ou de um amigo, por favor adquira sua própria cópia através de meu website. Isto lhe fornecerá acesso à versão mais recente do eBook e irá enconrajar-me a continuar com as atualizações. Ainda que eu esteja fazendo isto para ajudar meus estudantes, eu tenho contas para pagar. Por outro lado, ao auto-publicar meu livro eu NÃO tenho um time de pessoas para verificar tudo neste livro. Eu estou certo de que alguns erros de digitação foram colocados por gremlins durante a noite. Sei que eu tenho dislexia. Eu contrataria uma pessoa para verificar a versão final do livro, mas tendo lido muitos livros que foram publicados por grandes companhias e encontrado erros em seus livros, eu estou certo de que erros existem neste também. Por favor, deixe-me sabendo de todos os erros que encontrar no forum do site: http://www.burtonsmediagro http://www.burtonsmediagroup.com/fo up.com/forum rum
1
Capítulo 1 Olá Mundo: Instalando e Indo em Frente! Você teve uma grande idéia de jogo ou aplicação móvel. Maravilha! Agora, como você cria o mesmo e distribui-o para iPhone/Droid/iPad/Nook, (ou qualquer dispositivo que você escolha)? Existem muitos dispositivos para escolher. Qual plataforma é a melhor para minha aplicação? Com tantas plataformas para escolher (Android, iOS, RIM, Windows, nomeando algumas poucas), a escolha da plataforma para desenvolver pode ser muito difícil. Cada plataforma usa uma linguagem diferente, tem uma API diferente (Interface de Programação de Aplicações) e requisitos. Devemos nos prender a uma plataforma de desenvolvimento? Devemos escolher somente uma? Felizmente com o advento de ferramentas como Corona da Corona Labs, agora é possível desenvolver para múltiplas plataformas ao mesmo tempo. Porque escrever uma vez e publicar para dispositivos diferentes é a melhor solução no mundo de desenvolvimento móvel. Corona da Corona Labs permite p ermite que os camaradas desenvolvedores desenvolvedores publiquem para dispositivos Android e iOS (Apple), tanto smartphones quanto tablets. Este livro foi escrito para ajudar estudantes de todo lugar a obterem as habilidades necessárias para transformarem sua idéia em uma aplicação usando Corona SDK.
O que este livro não é Enquanto que este livro é designado para ensinar o básico de desenvolvimento desenvolvimento de aplicações móveis, ele não é designado para ensinar fundamentos de programação. Estou presumindo que você já sabe o básico de programação de computadores. Se você não sabe como usar um bloco
2 if/else, um loop ou uma função, você provavelmente não está preparado para este livro. Enquanto eu fiz todas as tentativas de cobrir o básico que a maioria dos estudantes querem aprender durante o primeiro semestre de um curso de desenvolvimento desenvolvimento móvel, devido a problemas com tempo e espaço, somente os mais importantes puderam ser incluídos. Existe um segundo volume em desenvolvimento desenvolvimento que cobrirá aspectos mais avançados e um volume voltado exclusivamente a projetos de jogos com Corona.
Iniciando Corona: Alguma História
Corona Labs foi criada em 2008 como uma companhia financiada por investidores de risco em Palo Alto, Califórnia. Antes de Corona, o time da Corona Labs foi responsável por criar muitas ferramentas padrões da indústria que tenho certeza de que você você conhece. No tempo que eu estive desenvolvendo aplicações com Corona, Corona, eu encontrei na Corona Labs um dos negócios mais amigáveis e úteis que eu tive o prazer de trabalhar. Além disso, a comunidade é muito amigável amigável e solícita. Se você decidir juntar-se juntar -se à comunidade Corona, Corona, esteja certo de continuar com este grande espírito de solidariedade! Software: Corona
Não é surpresa de que você precisará do Corona SDK para começar. Para aprender, eu recomendo baixar a versão trial (de teste) no site da Corona Labs http://www.CoronaLabs.com/ . Clique no botão de download e registrese (independente se é um usuário pagante ou gratuito). Se você for um estudante ou universitário, você pode obter um desconto acessando http://www.coronalabs.com/sto http://www.co ronalabs.com/store/corona-for-educatio re/corona-for-education/ n/.. Software: Android
3 Para começar o desenvolvimento de aplicações para Android com Corona, você não precisará de nenhum software adicional Android. Entretanto, Entretanto, você precisará do Java SDK (tipicamente conhecido como JDK) para estar apto a compilar em ambiente Microsoft Windows. Vá em http://www.oracle.com/tech http://www.oracle.com/technetwork/java/jav network/java/javase/downloads/index.h ase/downloads/index.html tml e baixe a Java Platform Standard Edition clicando no botão “Download JDK”. Aviso: Você somente precisa baixar o download do JDK se você está em um sistema Microsoft Windows. Se você está usando um Macintosh com OS X, ele já está instalado. Exemplos e Imagens
Um último download deve ser feito: os exemplos de códigos, imagens e outras ferramentas que você pode precisar com os projetos estão listadas neste livro. Eles estão todos disponíveis em http://www.BurtonsMediaG http://www.BurtonsMediaGroup.com/boo roup.com/books. ks. Software: iOS
Para desenvolvimento direto no simulador, você não tem que baixar nada da Apple. Entretanto, quando for hora de testar em um dispositivo ou preparar a aplicação para o iTunes, você necessitará do Apple iOS SDK. Se você já é um um desenvolvedor Apple, você já está apto a realizar a instalação. Se você não é um desenvolvedor Apple atualmente (U$99/ano para uma assinatura padrão de desenvolvedor), você pode se registrar como desenvolvedor gratuito e baixar o Xcode através da Apple App Store por U$4.99). Hardware para Desenvolver: Corona
Corona não demanda muito do seu computador para desenvolvimento. Enquanto você estiver usando ao menos um OSX 10.6 ou superior em um Mac, ou Windows XP com CPU de 1GHz em um PC, você estará bem. Se você está planejando desenvolver aplicações para iPhone, iPod Touch e/ou iPad, você precisará de um Mac. Este é um requisito da Apple. Para manter todo mundo de bom humor, Corona somente publicará para um
4 dispositivo iOS se você estiver usando um Mac. Você também pode criar aplicações Android utilizando um Mac. Se você tem somente um sistema s istema Windows, você pode desenvolver e publicar aplicações Android. Você também está apto a desenvolver para dispositivos dispositivos iOS, entretanto não poderá publicar e vender seu trabalho para iOS fora de um Mac. Eu uso um MacBook MacBook e um PC, regularmente variando entre ambos durante o desenvolvimento de aplicações. Matriz de Hardware Necessário: Hardware Android OS Desenvolver Instalar Macintosh X X Windows PC X X
Apple iOS Desenvolver Instalar X X X
Hardware para Desenvolver: Dispositivos de Teste Se você pretende desenvolver e vender aplicações para dispositivos dispositivos móveis você deve ter um dispositivo móvel para testar suas criações. criações. Eu estive em projetos onde era necessário ter um hardware que eu não tinha. Usar somente o simulador cobrirá 75% do que pode aconteçar com sua s ua aplicação, mas não lhe permitirá permitirá presenciar todos todos os problemas em potencial. Alguns dos projetos que citei anteriormente funcionavam perfeitam p erfeitamente ente no simulador, mas “travavam” no dispositivo móvel e eu era rejeitado pela Apple. A experiência era mais do que apenas frustrante e ensinou-me uma valiosa lição: se você está desenvolvendo para uma plataforma, tenha dispositivos dispositivos de teste! Android
Corona somente compila para Android OS 2.2 ou superiores. Qualquer dispositivo que você planeje utilizar deve ter um processador ARM V7. Existe uma infinidade de dispositivos que preenchem estes requisitos, então você não terá problema em encontrar um para executar seus testes.
5 iOS
Para desenvolvimento no iOS, você precisará de uma licença de desenvolvedor e também de um iPhone, iPod Touch, ou iPad. Obviamente, tendo um telefone antigo ou iPad é uma boa idéia para testar FPS (Frames por Segundo) se sua aplicação usa gráficos intensamente. É recomendado que você use a versão mais recente do iOS em seus dispositivos. dispo sitivos. Para estar apto a instalar sua aplicação em um u m dispositivo iOS, você precisará de um Mac e uma conta de desenvolvedor desenvolvedor Standard, Enterprise, ou University da Apple.
Considerações de Publicação Eu estou certo de que você já está imaginando as primeiras vendas de sua aplicação. Mas antes que você possa vendê-la, você precisará decidir aonde você irá publicá-la. Existem muitas considerações específicas de cada distribuidor que você precisa ter em mente. Android (Google)
O mercado para Android é muito diferente da loja do iTunes da Apple. No mercado Android você tem inúmeros distribuidores diferentes disponíveis para vender suas aplicações, incluindo a Google Play (http://pay.google.com) (http://pay.google.com),, Amazon, Barnes & Noble, entre outros. Você precisará criar uma conta com cada distribuidor que você deseja utilizar como canal de vendas. Por U$25 você pode criar uma conta de desenvolvedor para Android com o Google. Você NÃO tem que se cadastrar em nada até que esteja pronto para começar a vender suas aplicações. Para criar sua conta visite http://developer.android.com/index.html. Uma vez que você tenha sua conta configurada você precisará decidir decidir se sua aplicação será gratuita ou paga. Além disso, a maioria maioria das lojas de aplicações lhe cobrará algo em torno de 30% sobre as vendas por estar lhe oferencendo os serviços. Em outras palavras, se você cobra 99 centavos por uma aplicação, você receberá 69.3 centavos por cada venda.
6 iOS (Apple)
Uma das maiores vantagens do mercado para iOS é que há somente uma loja de aplicativos. Desenvolver aplicações para o iOS lhe custará U$99 por ano para uma licença padrão de desenvolvedor Apple. Existem licenças empresarias que somente são necessárias caso você desenvolva em uma grande empresa. Para as finanças de um estudante, a taxa de U$99 pode ser muito cara, então eu recomendo esperar tanto quanto possível antes de adquirir a licença que deve ser renovada anualmente. Você pode saber mais sobre licenças de desenvolvimento e sobre o iOS SDK em: http://developer.apple.com/pro http://developer.apple.com/programs/register/. grams/register/. Apple também lhe cobrará 30% de comissão sobre as suas vendas.
Programando no Corona: Lua Neste texto, a linguagem que você usará em suas experiências com programação programação é Lua. Lua L ua é uma linguagem l inguagem de script que foi desenvolvida no início da década de 90. Ela é gratuita, distribuída sobre a licença MIT e largamente utilizada para o nível de lógica de grandes jogos e encaixa-se naturalmente no desenvolvimento mobile pelo tamanho diminuto do seu s eu interpretador. interpretador. Corona Labs foi boazinha o bastante para fornecer dois apêndices sobre Lua (Apêndices A & B) que estão incluídos neste livro. Se você quer aprender mais sobre Lua, visite o site s ite da linguagem http://www.lua.org. http://www.lua.org. A primeira edição de Programando em Lua está disponível online em http://www.lua.org/pil. Se você já programou em qualquer outra linguagem moderna, você achará fácil aprender Lua enquanto nós avançaremos nas lições.
Programando no Corona: Editores A escolha de um editor será sempre uma decisão pessoal. Corona não é impactado por nenhum editor específico, então você deve escolher um no qual se sinta confortável. confortável. Eu recomendo um que permita integração com Lua Lu a para tornar sua edição mais fácil. Alguns dos mais populares editores para uso com Corona incluem (mas não estão limitados) BBEdit, Eclipse, Notepad++, TextMate, TextMate, TextWrangler, e
7 Xcode. É claro qu você pode ignorar todos esses e usar o bloco de notas ou textedit se você desejar. BBEdit (Mac) (Mac) por Bare Bones Software, U$99.99. Eu tenho usado BBEdit no meu Mac há algum tempo e é meu editor favorito quando estou trabalhando no Mac. BBEdit tem configurações internas (incluindo Lua), que permitem facilmente a você definir a linguagem na qual você está desenvolvendo. desenvolvendo. http://www.barebones.com Outlaw (antigo Corona Project Manager) (Mac/Win) Manager) (Mac/Win) por J.A. Whye, U$49.99. Outlaw tem um editor interno e juntamente com sua grande habilidade de simplificar o gerenciamento de um projeto Corona, o custo benefício é ótimo. Veja o Capítulo 18 para obter um cupom e economizar 30% no Outlaw. http://www.outlawgametools.com http://www.outlawgametools.com Eclipse (Mac/Win) Eclipse (Mac/Win) Código aberto, $0. Eclipse é o editor que uso u so quando estou trabalhando no meu PC. Eclipse tem uma grande comunidade de suporte. Embora Eclipse tenha sido originalmente originalmente desenvolvido como uma IDE Java (Ambiente de Desenvolvimento Desenvolvimento Integrado) ele é atualmente uma base para p ara muitos editores no mercado. Um plugin para Lua/Corona está disponível. http://eclipse.org Notepad++ (Win) Notepad++ (Win) Código aberto, $0 Um editor de linguagens popular e de d e código aberto para ambientes PC. http://notepad-plus-plus.org/ Sublime (Mac/Win) trial ilimitado, $70 Sublime é atualmente o editor oficial para Corona SDK. Corona Labs criou um plugin que simplifica muitas tarefas. Você pode baixar o Sublime em: http://www.sublimetext.co http://www.sublimetext.com/ m/ e o plugin do Corona em: http://coronalabs.com/products/editor/ TextMate (Mac) por Micromates, €39 (cerca de U$57). Textmate é muito popular na comunidade Corona com um plugin disponível no site da Corona Labs. http://macromates.com http://macromates.com TextWrangler (Mac) TextWrangler (Mac) por Bare Bones Software, $0.
8 TextWrangler tem a vantagem de ser um editor gratuito para o Mac. Embora ele não tenha todos os recursos do BBEdit, ele fará o trabalho necessário e oferece um suporte integrado integrado ao Lua. http://www.barebones.co http://www.barebones.com m Xcode (Mac) Xcode (Mac) por Apple, $0*. Xcode é uma parte integrante integrant e do iOS SDK. Se você está acostumado a desenvolver utilizando Objective-C, Xcode é a escolha natural. Enquanto Xcode está incluído no iOS SDK, ele somente somente é gratuito se você já possui pos sui uma conta de desenvolvedor na Apple. Se você possuir somente uma conta gratuita, o iOS SDK custa U$4.99 (incluindo o Xcode). Dica do Tradutor: eu uso atualmente o Lua Glider, que é uma versão modificada do NetBeans, popular IDE desenvolvida em Java. Ele possui gerenciador de projetos e arquivos, depurador e editor de código com autocomplete e highlight syntax. Sua versão gratuita é o suficiente para desenvolvedores desenvolvedores independentes.
Configurando Corona A instalação do Corona SDK é algo bem direto. Somente clique no botão de download em http://www.coronalabs.com, registre-se, selecione sua plataforma (Mac ou Windows) e siga as orientações abaixo baseado em seu sistema operacional.
9
Download do Corona SDK
Macintosh
Depois que você executar o arquivo baixado e aceitar a licença do software, arraste a pasta do Corona SDK para a pasta Aplicações.
Instalando Corona SDK em um Macintosh
10 Isto irá copiar todos os arquivos do Corona SDK para sua pasta de aplicações. Quando abrir a pasta do Corona SDK, você encontrará amostras de código, ferramentas, uma biblioteca de recursos bem como o Terminal e o Simulator (as ferramentas primárias de desenvolvimento que utilizaremos). utilizaremos). Windows
Corona SDK para Windows possui baixos requisitos de hardware: Sistema operacional operacional Windows 7, Vista, ou XP Processador de 1 GHZ (recomendado) (recomendado) 38 MB de espaço em disco d isco (mínimo) 1 GB de memória RAM (recomendado) Sistema de gráficos OpenGL 1.3 ou superior Em todas as instalações que eu fiz de Corona, o único problema que eu tive foi quando meu sistema s istema não possuía OpenGL 1.3 ou superior instalado. Isto foi facilmente corrigido baixando drivers de vídeo atualizados para meu sistema. Corona SDK executa com versões antigas de OpenGL, porém com baixa performance. Você deve atualizar seus drivers de vídeo o quanto antes para corrigir o problema se ele existir. Mais informações informações sobre OpenGL podem ser encontradas em http://www.opengl.org.
Se você ainda não baixou o Java JDK (Kit para Desenvolvedores Java), você deve fazê-lo agora. Vá em http://www.oracle.com/tech http://www.oracle.com/technetwork/java/jav network/java/javase/downloads/index.h ase/downloads/index.html tml e baixe o Java Platform Standard Edition clicando no botão “Download JDK”. Na próxima próxima página, selecione “Windows x86” na lista de downloads disponíveis. O JDK é obrigatório para compilar aplicações para dispositivos em sistemas Microsoft Windows. Este é um download gratuito no site da Oracle. Depois qeu você tiver baixado o instalador, siga os procedimentos procedimentos normais para instalar o JDK no seu sistema.
Programando no Corona: Olá Mundo (V1.0) A primeira vez que você executar o Corona Terminal ou Simulator ele pedirá
11 que você se autentique com as informações informações de registro que você vo cê usou no site s ite da Corona Labs. Complete estas informações uma única vez e você estará preparado para continuar.
Registro do Desenvolvedor Corona
Você deve sempre executar o Corona Terminal em um Macintosh ao invés do Simulator para compilar e testar aplicações. Em um sistema Windows, executando o Corona Simulator, o Terminal também é executado. O Corona Terminal lhe dá informações importantes quando você está compilando suas aplicações e permite encontrar os erros mais facilmente. O Corona Terminal automaticamente executará o Corona Simulator.
Projeto 1.0: Olá Mundo Eu pessoalmente sempre odiei livros de programação e aulas que gastavam seu primeiro capítulo ou semana cuidando de todos os detalhes. Eu comprava o livro ou assistia a aula porque eu queria programar, não saber de história da programação ou ficar seguindo s eguindo livros entediantes. Então vamos pular essa parte e partir para p ara o necessário projeto “Olá Mundo”. Pare de revirar os olhos! Antes de eu perder você, deixe-me garantir que você irá obter um valioso recurso deste Olá Mundo, algo que você irá usar pro resto do seu tempo enquanto desenvolvedor Corona. Foi o bastante para conseguir sua atenção? Então vamos começar!
12 Configurações do Projeto
Se você seguir este processo cada vez que você iniciar um novo projeto, ele tornará sua vida muito mais fácil: Primeiro, crie uma pasta para o projeto chamada “Hello World” (Olá Mundo em Português). Ela pode ficar em sua Área de Trabalho ou onde preferir. Eu coloco todos meus projetos Corona em uma pasta pas ta “Projetos Corona”.
Crie uma pasta Hello World para seu projeto
Abra seu editor favorito (eu estou usando BBEdit nos screenshots). Crie um arquivo em branco e salve como “main.lua” na pasta Hello World que acabou de criar.
13
Salve o arquivo main.lua na sua pasta Hello World W orld
Agora deve existir um arquivo main.lua na sua pasta Hello World. Voltando ao seu editor, digite: print("Hello World")
e salve seu arquivo arquivo main.lua.
14 A seguir, você precisará executar o Corona. Se você está em um ambiente Microsoft Windows, execute o Corona Simulator. Em um Macintosh, execute o Corona Terminal.
Inicialização do Corona em um Mac – não use o botão de novo projeto ainda!
Ao executar você verá a janela Terminal e a caixá de diálogo Welcome to Corona. Selecione “Open “Open a Project” nesta n esta caixa de diálogo e navegue até a pasta Hello World que foi criada previamente.
15
Abra Hello World & selecione o dispositivo dispositivo a simular
Quando você está abrindo um projeto, você estará apto a selecionar qual dispositivo você gostaria de simular no Corona Simulator. Por enquanto selecione iPhone ou Droid e clique no botão Open. Tao logo você abra o projeto, o simulador irá executar o mesmo. Você percebeu? Está certo, nada aconteceu...no simulador. Olhe na janela do Terminal. No final você verá seu Hello World exibido.
Hello World na janela do Corona Terminal
16 Parabéns! Você fez sua primeira aplicação Corona! Agora antes de ficar desapontado, você deve aprender a usar uma ferramenta muito importante para descobrir problemas em suas aplicações. Quando algo não está funcionando corretamente ou não está exibindo o que você esperava, você pode mandar a si mesmo mensagens através através da janela do Terminal. Acredite quando eu digo que este comando irá lhe salvar horas de dores-de-cabeça com erros ocultos! Aviso: Se você ainda não viu nada, existem dois erros comuns que as pessoas cometem: 1) eles não salvam seu arquivo main.lua (eu ainda faço isso) ou 2) quando salvam o arquivo main.lua, ele não é salvo como um arquivo de texto.
Projeto 1.1: Olá Mundo (v2.0) Voltando ao seu editor (você pode usar o mesmo arquivo), digite: local textobj = display.newText("Hello World", 100, 100, native.systemFont, 24) textobj:setFillColor(255, 255, 255)
Lua, a linguagem por trás do Corona, é case sensitive então newText é diferente de newtext. Tente newtext e olhe o erro que aparece na janela do terminal. Salve o arquivo e então reabra o simulador. Você deve ver agora Hello World exibido no simulador, como na imagem à esquerda. O que você fez? Aqui vai a explicação:
17 Primeiro nós criamos uma variável local textobj. Nós definimos que textobj é igual ao objeto que nós criamos ao chamar o método display.newText, passando à ele o texto “Hello World”, a localização X & Y (partindo do topo esquerdo da tela), fonte e 24 (o tamanho do texto a ser criado). Os parâmetros do display.newText display.newText são: display.newText( text, X, Y, font, text size)
No parâmetro font, você pode usar o padrão do sistema passando native.systemFont native.systemFont ou native.systemFontBold. native.systemFontBold. Você também pode entrar o tipo de fonte como uma string como “arial” ou “arial black”. Se você definir este parâmetro como nil, ele irá assumir native.systemFo n ative.systemFont. nt. Na segunda linha de comando, nós definimos a cor do textobj que será criada usando o sistema de cores R, G, B (cada cor (vermelho, verde e azul) tendo um valor entre 0 – 255) para branco: textobj:setFillColor( R, G, B )
Por padrão, objetos de texto são brancos, então não n ão precisávamos realmente fazer alguma coisa para torná-lo branco. Apenas queria lhe mostrar como configurar a cor de um objeto de texto quando você cria um. Mais tarde veremos como esconder um objeto de texto aos poucos (ou exibí-lo). Agora você fez sua primeira aplicação REAL com Corona! Aviso: Quando Aviso: Quando se copia código de um site (ou mesmo deste livro), algumas vezes as aspas podem trocar de aspas diretas para aspas inteligentes. Isto IRÁ causar erros no Corona. Corona. Esteja certo de que suas aspas são sempre "" e nunca “”.
Objetos
Você deve ter percebido o uso do termo objeto espalhado pelo texto. O termo objeto denota algo que está sendo usado dentro do seu projeto; texto, botões,
18 ou sons, eles são todos objetos. Como na vida real, eu posso mover ou interagir com um objeto (uma lâmpada, mesa ou carro), um objeto em seu software é qualquer coisa que você possa interagir. Objetos do mundo real tem propriedades que ajudam a descrever a localização do mesmo, cor, ou qualquer coisa que possa ser alterada sobre o objeto. Se eu tenho um carro, eu posso descrever a sua localização por sua latitude e longitude. Em programação (incluindo Corona), nós estamos aptos a interagir com cada propriedade de um objeto para realizar alterações; como quando um textobj foi criado, nós definimos as propriedades x, y, font, e size (tamanho) bem como a string que seria exibida. Recapitulando
Este foi um capítulo bem atarefado! Corona deve estar instalado instal ado em seu sistema agora, você foi introduzido aos editores, viu considerações de hardware e informações de publicação. Nós ainda desenvolvemos desenvolvemos duas aplicações! A primeira introduzindo o importantíssimo comando print, e a segunda exibindo texto de verdade no simulador. Finalmente, o conceito de um objeto na programação foi brevemente mencionado. Tarefas
1. Tente váriaos erros de digitação e veja as mensagens de erros resultants na janela do terminal. a. Erre o nome newText. Qual o resultado? resultad o? b. Erro o native.systemFont. native.systemFont. Qual o resultado? resultado? c. Tente setFillColor. Qual o resultado? 2. Troque o objeto de texto para vermelho. 3. Reposicione o texto no rodapé do simulador sem que a letras saiam for a da tela. 4. Coloque 5 diferentes mensagens em diferentes lugares na tela, t ela, cada uma com font, tamanho e cor diferentes.