Criando Aplicações
Criando Aplicações
Móveis com Corona
Móveis com Corona
Brian G. Burton, Ed.D.
Brian G. Burton, Ed.D.
Traduzido por Luiz F. Duarte Jr.
Traduzido por Luiz F. Duarte Jr.
Criando Aplicações Móveis com Corona
Criando Aplicações Móveis com Corona
Por Brian G. Burton, Ed.D.Por Brian G. Burton, Ed.D.
Tradução por Luiz F. Duarte Jr. Tradução por Luiz F. Duarte Jr.
Copyright © 2012 Brian G. Burton, Ed.D. Todos os direitos reservados. Copyright © 2012 Brian G. Burton, Ed.D. Todos os direitos reservados. Impresso em Abilene, Texas, Estados Unidos da América
Impresso em Abilene, Texas, Estados Unidos da América Publicado por Burtons Media Group.
Publicado por Burtons Media Group.
Edições eletrônicas estão disponíveis. Visite Edições eletrônicas estão disponíveis. Visite http://www.B
http://www.BurtonsMediaGrourtonsMediaGroup.com/books para up.com/books para maioremaiores s informações.informações.
Corona® SDK é uma marca registrada de Corona Labs®. Corona Labs, o Logo Corona® SDK é uma marca registrada de Corona Labs®. Corona Labs, o Logo Corona Labs, coronalabs.com são marcas registradas da Corona Labs.
Corona Labs, coronalabs.com são marcas registradas da Corona Labs.
Imagens da capa foram geradas usando Corona Simulator e representam Imagens da capa foram geradas usando Corona Simulator e representam aplicações feitas neste livro para
aplicações feitas neste livro para Droid®, Galaxy Tab®, iPad®, e iPhone®Droid®, Galaxy Tab®, iPad®, e iPhone® (da esquerda para direita).
(da esquerda para direita). Nomes de marcas
Nomes de marcas registradas e imagens podem registradas e imagens podem apareceaparecer neste r neste livro. Aolivro. Ao invés de usar o símbolo © a cada ocorrência da mesma, utilizamos o nome invés de usar o símbolo © a cada ocorrência da mesma, utilizamos o nome somente em uma representação comercial e para
somente em uma representação comercial e para benefício do dono da marcabenefício do dono da marca registrada, sem nenhuma intenção de infringir qualquer marca registrada. registrada, sem nenhuma intenção de infringir qualquer marca registrada.
Enquanto precauções tenham sido tomadas na preparação deste livro, o Enquanto precauções tenham sido tomadas na preparação deste livro, o publicante e autor não assume responsabilidade por erros ou
publicante e autor não assume responsabilidade por erros ou omissões, ouomissões, ou por danos resultantes do uso da informação contida no mesmo.
por danos resultantes do uso da informação contida no mesmo.
TODO SOFTWARE É FORNECIDO “COMO ESTÁ”, SEM GARANTIA DE NENHUM TIPO, TODO SOFTWARE É FORNECIDO “COMO ESTÁ”, SEM GARANTIA DE NENHUM TIPO, EXPRESSA OU IMPLICADA, INCLUINDO MAS NÃO LIMITADO ÀS GARANTIAS DE EXPRESSA OU IMPLICADA, INCLUINDO MAS NÃO LIMITADO ÀS GARANTIAS DE MERCABILIDADE, ADEQUAÇÃO PARA UM PROPÓSITO PARTICULAR E NÃO MERCABILIDADE, ADEQUAÇÃO PARA UM PROPÓSITO PARTICULAR E NÃO
INFRINGIMENTO. EM NENHUM EVENTO DEVEM OS AUTORES OU DETENTORES DE INFRINGIMENTO. EM NENHUM EVENTO DEVEM OS AUTORES OU DETENTORES DE
COPYRIGHTS SEREM RESPONSABILIZADOS POR QUAISQUER QUEIXAS, DANOS OU OUTRAS COPYRIGHTS SEREM RESPONSABILIZADOS POR QUAISQUER QUEIXAS, DANOS OU OUTRAS RESPONSABILIDADES, QUER EM UMA AÇÃO DE CONTRATO, DANO OU CASOCONTRÁRIO, 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 PARTINDO DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE. NEGOCIAÇÕES NO SOFTWARE. ISBN (eTextbook): 978-1-937336-12-7| 1-93733-612-3 ISBN (eTextbook): 978-1-937336-12-7| 1-93733-612-3 Versão 1.7 (16/07/14) Versão 1.7 (16/07/14)
Índice
Índice
SobreSobre o o Autor Autor ... XIII... XIII
Sobre o Tradutor
Sobre o Tradutor... XIII... XIII
Dedicatória:
Dedicatória: ... ... XIVXIV
Prefácio ...
Prefácio ... X... X VV Introdução ...XVI Introdução ...XVI
Bem
Bem vindo ...vindo ... XVI... XVI Para
Para quem este lquem este livro foi ivro foi feito feito ... XVI... XVI Como este
Como este livro está livro está organizado... organizado... XVIIXVII Convenções usadas
Convenções usadas neste lineste livro...vro... ... XVIIXVII Usando
Usando os os exemplos exemplos de de código código ... ... XVIIXVII Porque não usei
Porque não usei ______ para ______ para ______ ...______ ... XVIII.... XVIII Apêndices
Apêndices ... XVIII... XVIII Como entrar
Como entrar em Contato...em Contato... XVIII... XVIII Porque Escolhi
Porque Escolhi Auto-Publicar...Auto-Publicar... XVIII... XVIII Capítulo
Capítulo 1 ...1 ... 1... 1 Olá Mundo:
Olá Mundo: Instalando Instalando e Indo e Indo em Frente! em Frente! ... ... 11 O
O que este que este livro livro não não é é ... 1... 1 Iniciando
Iniciando ... ... 22
Corona:
Corona: Alguma Alguma História...História... 2.... 2 Software:
Software: Corona ...Corona ... 2... 2 Software:
Software: Android ...Android ... 2... 2 Exemplos
Exemplos e e Imagens Imagens ... ... 33 Software:
Software: iOS iOS ... 3... 3
Hardware
Hardware para para Desenvolver: Corona ...Desenvolver: Corona ... ... 33 Hardware
Hardware para para Desenvolver: Dispositivos Desenvolver: Dispositivos de Teste ...de Teste ... ... 44
Android
Android ... ... 44
iOS
iOS ... ... 55
Considerações
Considerações de de Publicação ...Publicação ... 5... 5
Android
Android (Google)...(Google)... 5. 5 iOS
iOS (Apple) (Apple) ... 6... 6
Programando
Programando no no Corona: Corona: Lua Lua ... ... 66 Programando
Programando no no Corona: Editores ...Corona: Editores ... ... 66 Configurando
Configurando Corona ...Corona ... 8... 8
Macintosh
Macintosh ... 9... 9 Windows
Programando
Programando no no Corona: Olá Corona: Olá Mundo (V1.0) Mundo (V1.0) ... 10... 10 Projeto 1.0:
Projeto 1.0: Olá Olá Mundo Mundo ... 11... 11
Configurações
Configurações do do Projeto Projeto ... ... 1212
Projeto 1.1: Ol
Projeto 1.1: Olá á Mundo (v2.0)...Mundo (v2.0)... 16... 16
Objetos Objetos ... ... 1717 Recapitulando Recapitulando ... ... 1818 Tarefas Tarefas ... ... 1818 Capítulo Capítulo 2 2 ... 19... 19 Botões e
Botões e Texto Texto ... 19... 19 Conheça
Conheça seus seus Limites Limites ... 19... 19 Projeto 2:
Projeto 2: Diversão Diversão com com Botões Botões ... 20... 20
Funções...
Funções... ... 2222
Projeto 2.1: Div
Projeto 2.1: Diversão com ersão com Botões V2 ...Botões V2 ... 24... 24
Ficando
Ficando Divertido! Divertido! ... 25... 25
Como Corona
Como Corona lê seu lê seu arquivo main.larquivo main.lua ua ... 26... 26 Recapitulando... Recapitulando... ... 2727 Tarefas ... Tarefas ... ... 2727 Capítulo Capítulo 3 3 ... 28... 28 Animação, Alfa e Orientação
Animação, Alfa e Orientação ... 2... 288 Animação
Animação ... ... 2828 Projeto 3:
Projeto 3: Animação Animação Básica ...Básica ... 28... 28
Agora você
Agora você vê, vê, Agora não Agora não vê maisvê mais... ... 3131
Projeto 3.1: Diversão
Projeto 3.1: Diversão Alfa ...Alfa ... 31... 31
Troca
Troca de de Orientação ...Orientação ... 34... 34
Projeto 3.2:
Projeto 3.2: Uma Uma Nova Nova Orientação Orientação ... 35... 35 Recapitulando... Recapitulando... ... 4040 Tarefas ... Tarefas ... ... 4040 Capítulo Capítulo 4 4 ... 42... 42 Preenchendo os Campos ... 42 Preenchendo os Campos ... 42 Campos
Campos de Textode Texto... 42... 42 Projeto 4:
Projeto 4: Calculadora Calculadora Simples ...Simples ... 43... 43 Compilando
Compilando para para Dispositivos ...Dispositivos ... 51... 51
Apple
Apple iOS ...iOS ... 52... 52 Compilação para
Compilação para o o Simulador Simulador iOS...iOS... ... 5353 Compilação para
Compilação para Dispositivo Dispositivo Apple iOS ...Apple iOS ... . 5353 Compilação para
Compilação para Dispositivo Dispositivo Android OS Android OS ... ... 5555
Tarefas ...
Tarefas ... ... 5858 Capítulo 5
Gráficos
Gráficos Vetoriais ...Vetoriais ... 60... 60 Projeto 5:
Projeto 5: Formas VFormas Vetoriais...etoriais... 61... 61 Gráficos
Gráficos Bitmap...Bitmap... 65... 65
Resolução... Resolução... ... 6666 Escalonando Escalonando ... 67... 67 Masking Masking ... 67... 67 Sprite
Sprite Sheets...Sheets... . 6969
Projeto 5.1:
Projeto 5.1: Sprites Sprites Uniformes ...Uniformes ... 70... 70 Projeto 5.3: Ani
Projeto 5.3: Animação mação de Sprites ...de Sprites ... 73... 73
Métodos
Métodos de de Controle Controle de de Sprites Sprites ... ... 7474 Propriedades
Propriedades da da Sprite ...Sprite ... 7... 755 Gatilhos d
Gatilhos de e Eventos de Eventos de Sprites Sprites (Listeners) .(Listeners) ... ... 7575
Outros Usos
Outros Usos de Imagens/Sprite de Imagens/Sprite Sheets ...Sheets ... 75... 75 Recapitulando... Recapitulando... ... 7676 Tarefas ... Tarefas ... ... 7676 Capítulo Capítulo 6 6 ... 78... 78 Interface do Usuário ... 78 Interface do Usuário ... 78 Recursos Recursos ... 78... 78 build.settings build.settings ... ... 7979 config.lua config.lua ... ... 7979 Alinhamento
Alinhamento Dinâmico Dinâmico de de Conteúdo...Conteúdo... ... 8181 Resolução
Resolução Dinâmica Dinâmica de de Imagem ...Imagem ... ... 8181
Adicionando Som
Adicionando Som ... 83... 83
Tipos
Tipos de de Arquivos Arquivos de de Som Som ... ... 8383 Tempo
Tempo é é Tudo ...Tudo ... 83... 83 Streams
Streams e e Som Som ... 84... 84
Projeto 6.0:
Projeto 6.0: Beat-box Beat-box ... 85... 85
config.lua
config.lua file file ... 86... 86 Arquivo
Arquivo build.settings ...build.settings ... 87... 87
Fonts
Fonts Personalizadas ...Personalizadas ... 90... 90 Projeto 6.1
Projeto 6.1 Fonts PersonaFonts Personalizadas lizadas ... 91... 91 Recapitulando... Recapitulando... ... 9494 Tarefas ... Tarefas ... ... 9494 Capítulo Capítulo 7: 7: ... 96... 96 Interfaces d
Interfaces da a Aplicação Aplicação ... 96... 96 Escondendo a
Escondendo a Barra de Barra de Status ...Status ... 96... 96 Grupos
Grupos ... 97... 97 Projeto 7: Movimento
Projeto 7: Movimento em Grupo em Grupo ... 97... 97
Módulos
Projeto 7.1: Bib
Projeto 7.1: Biblioteca lioteca Externa ...Externa ... 98... 98 Bibliotecas
Bibliotecas Externas ...Externas ... 100... 100
CrawlSpace...
CrawlSpace... ... 100100 CoronaSSK
CoronaSSK ... ... 101101
Projeto 7.2:
Projeto 7.2: Criando Criando uma uma Splash Splash Screen Screen ... ... 101101 Composer
Composer ... 104... 104 Projeto 7.3
Projeto 7.3 Uma Uma Simples Simples História ...História ... ... 104104 Recapitulando... Recapitulando... ... 111111 Tarefas Tarefas ... ... 111111 Capítulo Capítulo 8: 8: ... ... 112112 Diversão c
Diversão com om Física... Física... 112112 Ligando
Ligando a a Física ...Física ... 112. 112
Escala
Escala ... ... 113113 Corpos
Corpos ... ... 113113 Tipos
Tipos de de Corpos ...Corpos ... 114... 114 Densidade,
Densidade, Fricção Fricção e e Elasticidade Elasticidade ... 1... 11414 Formas
Formas de de Corpos ...Corpos ... 115... 115 Propriedades
Propriedades do do Corpo...Corpo... 116... 116 Métodos
Métodos dos dos Corpos...Corpos... 117... 117
Projeto
Projeto 8: 8: Usando Usando Força Força ... ... 117117 Gravidade
Gravidade ... 122... 122
Chão
Chão e e Bordas ...Bordas ... 122... 122
Projeto 8.1:
Projeto 8.1: Brincando Brincando com com Gravidade ...Gravidade ... ... 123123 Detecção
Detecção de de Colisão ...Colisão ... ... 126126
Sensores
Sensores ... ... 127127 Joints
Joints ... ... 127127 Pivot
Pivot Joint Joint ... 128... 128 Distance
Distance Joint Joint ... ... 129129 Piston
Piston Joint ...Joint ... ... 129129 Friction
Friction Joint Joint ... 129... 129 Weld
Weld Joint Joint ... 130... 130 Wheel
Wheel Joint ...Joint ... ... 130130 Pulley
Pulley Joint ...Joint ... 130... 130 Touch
Touch Joint Joint ... ... 131131 Métodos e
Métodos e Propriedades Propriedades Comuns Comuns aos Jaos Joints oints ... 13... 1322
Projeto 8.2:
Projeto 8.2: Bola Bola de Demoliçde Demolição ...ão ... ... 132132
Depurando
Depurando Física Física ... 134.... 134
Recapitulando... Recapitulando... ... 135135 Tarefas Tarefas ... ... 135135 Capítulo Capítulo 9: 9: ... ... 136136
Criando
Criando um Jogo cum Jogo com Corona om Corona ... ... 136136 Projeto
Projeto de de Jogo Jogo ... ... 136136 Arrastando Objetos ...
Arrastando Objetos ... ... 139139 Detecção
Detecção de de Colisão ...Colisão ... ... 143143 Dê
Dê o o Seu Seu Melhor Melhor Tiro Tiro ... ... 145145 Reduzindo
Reduzindo a a Sobrecarga ...Sobrecarga ... ... 145145 Laço
Laço de de Jogo ...Jogo ... ... 146146 Recapitulando... Recapitulando... ... 147147 Tarefas Tarefas ... ... 147147 Capítulo Capítulo 10: ... 10: ... 149149 Continuando
Continuando o Star o Star Explorer ... Explorer ... 149149 Configurando a
Configurando a Aplicação para Aplicação para Múltiplos Dispositivos ... Múltiplos Dispositivos ... 149149 Splash
Splash Screen ...Screen ... 150. 150 Melhorando
Melhorando o o Desempenho ...Desempenho ... ... 156156 Variando
Variando a a Dificuldade Dificuldade ... ... 164164
Aumentando a
Aumentando a Velocidade Velocidade do Jdo Jogo ogo ... ... 164164 Uma
Uma Pequena Pequena Variedade ...Variedade ... 165... 165
Recapitulando... Recapitulando... ... 166166 Tarefas Tarefas ... ... 166166 Capítulo Capítulo 11: ... 11: ... 167167 Mídia faz
Mídia faz o Mundo o Mundo Girar ... Girar ... 167167 Trabalhando
Trabalhando com com Som...Som... ... 167167
Controles
Controles Básicos Básicos de de Áudio ...Áudio ... 1... 16767 Controles de
Controles de Duração dDuração de e Áudio ...Áudio ... 1... 16969 Controles
Controles de de Volume Volume ... 169... 169 Canais
Canais de de Áudio...Áudio... 170... 170
Tipos de
Tipos de Arquivos de Arquivos de Som Som (Revisão) ...(Revisão) ... ... 171171 Onde
Onde coloquei coloquei aquele aquele arquivo?...arquivo?... ... 171171 API Multimídia...
API Multimídia... ... 172172 Gravando
Gravando Áudio Áudio ... 17... 1722 Projeto 11:
Projeto 11: Gravador Gravador Simples Simples de Áudio ...de Áudio ... ... 173173 Reprodução
Reprodução de de Vídeo ...Vídeo ... ... 182182 Câmera
Câmera ... 182... 182 Projeto 11.1
Projeto 11.1 Câmera de Câmera de Raio-X Raio-X ... ... 182182 Recapitulando... Recapitulando... ... 187187 Tarefas Tarefas ... ... 187187 Capítulo Capítulo 12: ... 12: ... 188188 Armazenamento de Arquivos & SQLite
Considerações
Considerações de de E/S ...E/S ... ... 188188 Lendo
Lendo Dados ...Dados ... ... 189189
Manipulação de Arquiv
Manipulação de Arquivos Implícita os Implícita vs. Explícita vs. Explícita ... ... 189189 Leitura
Leitura Implícita Implícita ... .... 190190 Leitura
Leitura Explícita...Explícita... 190... 190
Escrevendo
Escrevendo Dados ...Dados ... 1... 19090
Implícito Implícito ... ... 191191 Explícito... Explícito... ... 191191 JSON JSON ... 191... 191 Projeto 12: L
Projeto 12: Leitura & eitura & Escrita cEscrita com JSON ... om JSON ... 191191 SQLite
SQLite ... 193... 193
Comandos
Comandos LuaSQLite...LuaSQLite... 194... 194
Projeto 13:
Projeto 13: Lendo Lendo uma Bauma Base SQLite... se SQLite... 194194 Projeto 13.1
Projeto 13.1 Escrevendo em Escrevendo em uma uma Base Base SQLite ..SQLite ... . 197197 Recapitulando... Recapitulando... ... 209209 Tarefas Tarefas ... ... 209209 Capítulo Capítulo 13: ... 13: ... 210210 À Espera de Tabelas À Espera de Tabelas ... ... 210210 Tabela
Tabela vs. vs. Table: Table: Entendendo a Entendendo a Confusão Confusão ... ... 210210 Ferramentas
Ferramentas para para Tabelas ...Tabelas ... ... 211211 Projeto 13: Criando
Projeto 13: Criando uma Tabuma TableView SileView Simples ...mples ... ... 212212 Projeto 13.1:
Projeto 13.1: Table VTable View com Siew com SQLite QLite ... ... 217217
...
... ... 222222 Tela de
Tela de Detalhes (parte Detalhes (parte do main.ludo main.lua) ...a) ... 22... 2222 Tela Z
Tela ZipScreen ipScreen (parte (parte do do main.lua) main.lua) ... ... 223223 Tela cityLi
Tela cityList st (parte (parte do mdo main.lua) ...ain.lua) ... 226... 226 Tela stateList
Tela stateList (parte do (parte do main.lua)...main.lua)... 2... 22727
Recapitulando... Recapitulando... ... 230230 Tarefas Tarefas ... ... 231231 Capítulo Capítulo 14: ... 14: ... 232232 Redes Redes ... ... 232232 Web
Web Services ...Services ... 2... 23232
HTTP
HTTP ... ... 233233
Projeto 14: Download de Imagens
Projeto 14: Download de Imagens ––Via BVia Biblioteca Network ... iblioteca Network ... 234234
Socket...
Socket... ... 236236 Projeto 14a: Download de Imagem
Projeto 14a: Download de Imagem –– Via Via Biblioteca Biblioteca Socket ....Socket ... ... 236236
Rastreando o
Rastreando o Status dStatus da Rede a Rede ... 23... 2388
Upload
Upload para para um Servidor um Servidor Web ...Web ... ... 238238
Arquitetura
Exemplo de Post 1:
Exemplo de Post 1: Fazendo Upload de Dados dFazendo Upload de Dados de Formulário ... e Formulário ... 239239 Exemplo de Post 2:
Exemplo de Post 2: Fazendo Upload de ArquiFazendo Upload de Arquivos ou Imagens ... vos ou Imagens ... 240240
Conectando
Conectando a a Redes Propietárias Redes Propietárias ... ... 241241 Facebook...
Facebook... ... 241241
Exemplo
Exemplo Facebook...Facebook... 242... 242
Redes
Redes de de Publicidade ...Publicidade ... ... 243243 Game
Game Services ...Services ... 244... 244 Apple Game Center
Apple Game Center ... ... 244244 Google
Google Play Play Game Game Services ...Services ... ... 246246 Pubnub
Pubnub ... 248... 248 Projeto 14.1
Projeto 14.1 Aplicação Aplicação Multi-Usuário...Multi-Usuário... ... 248248 Recapitulando... Recapitulando... ... 252252 Tarefas Tarefas ... ... 252252 Capítulo Capítulo 15: ... 15: ... 254254 Trabalhando com
Trabalhando com Widgets & Widgets & Popups ... Popups ... 254254 Ferramentas de
Ferramentas de Mock-up Mock-up e pre pré-design ...é-design ... ... 254254 Widgets
Widgets ... 255... 255 Widgets
Widgets mais mais Atraentes ...Atraentes ... ... 257257
widget.newButton
widget.newButton ... 257... 257 widget.newPickerWheel
widget.newPickerWheel ... ... 260260 Projeto 15.1
Projeto 15.1 Exemplo Exemplo widget.newPickerWheel ...widget.newPickerWheel ... ... 262262 widget.newSlider
widget.newSlider ... .... 265265 Projeto 15.2 Exemplo
Projeto 15.2 Exemplo Widget Slider Widget Slider & Progress & Progress View ...View ... ... 267267 widget.newScrollView widget.newScrollView ... 268... 268 widget.newSegmentedControl widget.newSegmentedControl ... .... 270270 widget.newSpinner widget.newSpinner ... 271... 271 widget.newStepper widget.newStepper ... 271... 271 widget.newSwitch... widget.newSwitch... ... 272272 widget.newTableView... widget.newTableView... ... 274274 Exemplo
Exemplo widget.newTableView widget.newTableView ... 276.... 276 widget.newTabBar
widget.newTabBar ... 279... 279
Project 15.4
Project 15.4 Widget Tab Widget Tab Bar Bar Example Example ... ... 281281 Removendo
Removendo Widgets Widgets ... ... 294294 Web
Web Popups ...Popups ... 294... 294
Exemplo
Exemplo Web Web Popup Popup ... 295... 295
Recapitulando... Recapitulando... ... 296296 Tarefas Tarefas ... ... 296296 Capítulo Capítulo 16: ... 16: ... 297297 Rotten Apple
Rotten Apples
Rotten Apples–– Inspiração Inspiração e e Recursos ...Recursos ... ... 297297
Adicionando Animação com Sprites...
Adicionando Animação com Sprites... ... 299299 Preciso
Preciso de de um um mapa! ...mapa! ... ... 300300 Duas
Duas Estradas Estradas Divergem Divergem ... ... 301301 Espaço,
Espaço, A A Fronteira Fronteira Final...Final... . 302302 Corrida
Corrida de de Ratos ...Ratos ... ... 303303 Em suas Ma
Em suas Marcas…rcas…... ... 309309
Reduzindo
Reduzindo Colisões...Colisões... 31... 3144
Planilha
Planilha de de Colisões Colisões ... 31... 3144
Pegue o Tiro
Pegue o Tiro ––Cuidando das Cuidando das Colisões ... Colisões ... 315315
Já estamos lá?
Já estamos lá?––adicionando adicionando o o clubinho ...clubinho ... ... 317317
Adicionando Torres: Arrastando Torres na Tela
Adicionando Torres: Arrastando Torres na Tela ... . 328328 Qual
Qual a a Pontuação? ...Pontuação? ... ... 332332 Vamos
Vamos Deixar Deixar o o Jogo Jogo Rolar! ...Rolar! ... ... 333333
Closures Closures ... ... 333333 Inicialização Inicialização ... ... 334334 Loop-De-Loop!... Loop-De-Loop!... .... 337337 Controle de
Controle de Fases Fases e e Ondas ...Ondas ... ... 339339 Fora
Fora Ruídos! Ruídos! ... 340... 340
Adicionando opções pausar/resumir/salvar ....
Adicionando opções pausar/resumir/salvar ... ... 340340 Adicionando a Splash Screen
Adicionando a Splash Screen ... ... 344344 Recapitulando... Recapitulando... ... 346346 Tarefas Tarefas ... ... 346346 Capítulo Capítulo 17 ... 17 ... 347347 Eventos
Eventos do do Sistema Sistema & & Ferramentas Ferramentas ... ... 347347 Eventos
Eventos do do Sistema ...Sistema ... ... 347347 Acelerômetro
Acelerômetro ... ... 348348 Projeto
Projeto 17.0 17.0 Acelerômetro Acelerômetro ... ... 350350 Giroscópio
Giroscópio ... 354... 354 Projeto
Projeto 17.1 17.1 Giroscópio Giroscópio ... ... 355355 Alertas ... Alertas ... ... 360360 GPS GPS ... 360... 360 Projeto Projeto 17.2 17.2 GPS GPS ... ... 361361 Mapas Mapas ... 366... 366 Objeto
Objeto Map ...Map ... 367... 367 Map
Map Address ...Address ... .... 368368 Map
Map Location ...Location ... .... 368368
Projeto
Projeto 17.3 17.3 Mapas ...Mapas ... ... 368368 Recapitulando...
Recapitulando... ... 370370 Tarefas
Capítulo
Capítulo 18 ... 18 ... 371371 Gráficos
Gráficos Avançados ... Avançados ... 371371 Graphics
Graphics 2.0 ...2.0 ... 371... 371 Pintar
Pintar ... 371... 371 Preenchimentos -
Preenchimentos - Fiiltros, Composite, Fiiltros, Composite, e Ge Geradores .eradores ... ... 372372
Preenchimentos
Preenchimentos ... .... 372372 Filtros
Filtros ... ... 372372
Projeto
Projeto 18.1 18.1 Filtrando Filtrando com com chromaKey chromaKey ... ... 377377
Efeitos
Efeitos Compostos Compostos ... 378... 378 Geradores
Geradores ... ... 382382
Projeto
Projeto 18.2 18.2 Marching Marching Ants ...Ants ... ... 383383 Containers
Containers ... ... 384384
Projeto
Projeto 18.3 18.3 Containers...Containers... 385... 385
Liquid
Liquid Fun Fun ... 38... 3866
Projeto
Projeto 18.4 18.4 Liquid Liquid Fun ...Fun ... 386... 386
Recapitulando... Recapitulando... ... 389389 Tarefas Tarefas ... ... 390390 Capítulo Capítulo 19 ... 19 ... 391391 Recursos
Recursos Adicionais ... Adicionais ... 391391 Autocomplete...
Autocomplete... ... 391391 BBEdit
BBEdit ... 392... 392 Corona
Corona Comic ...Comic ... ... 392392 Outlaw
Outlaw Project Project Manager ...Manager ... ... 392392
CoronaSSK
CoronaSSK ... ... 393393
Corona
Corona Remote ...Remote ... 393... 393 Crawlspace Crawlspace ... ... 393393 Kwik Kwik ... 394... 394 Lime Lime ... 394... 394 Physics
Physics Editor Editor ... 39... 3944 SpriteHelper
SpriteHelper & & Level Level Helper ...Helper ... ... 395395 Sublime
Sublime Text Text 3 ...3 ... ... 395395 Texture
Texture Packer ...Packer ... 3... 39595 Tiled
Tiled ... 396... 396 Websites
Websites Úteis Úteis ... 396... 396
Imagens
Imagens Isométricas Isométricas Gratuitas ...Gratuitas ... 396... 396 Música
Música ... ... 396396 Efeitos
Efeitos Sonoros Sonoros ... 396.... 396 Tutoriais
Tutoriais ... ... 396396
Apêndice A
A Linguagem Lua
A Linguagem Lua ... ... 397397 Lua...
Lua... ... 397397 Uma
Uma Introdução ...Introdução ... 3... 39797 O
O que que é é Lua? Lua? ... ... 397397 Lua
Lua na na Prática ...Prática ... ... 399399 Tipos
Tipos e e Variáveis Variáveis ... ... 399399
Declarações
Declarações de de Tipos ...Tipos ... 400... 400 Nil
Nil ... .... 401401 Booleans
Booleans ... ... 401401 Numeric
Numeric Values ...Values ... 402... 402 Operadores
Operadores Numéricos...Numéricos... ... 403403 Divisão
Divisão por por Zero Zero ... 403.... 403 Strings
Strings ... ... 404404 Declarando
Declarando Strings Strings ... 404... 404 Caracteres
Caracteres de de Escape ...Escape ... 405... 405 Concatenando
Concatenando Strings Strings ... 406... 406
Comparando
Comparando Valores Valores ... ... 406406 Operadores
Operadores Booleanos ...Booleanos ... 407... 407
O
O operador operador and and (E) (E) ... 408... 408 O
O operador or operador or (OU) ...(OU) ... 408.... 408 O
O operador operador not not (Negação) (Negação) ... 408... 408 Empilhando
Empilhando Operadores Operadores Booleanos ...Booleanos ... 409... 409
Funções
Funções de Dade Dados dos em Lua em Lua ... ... 410410
Funções
Funções String ...String ... 410... 410 Achando o
Achando o comprimento comprimento de uma de uma String ...String ... ... 410410 Substituição
Substituição Global ...Global ... 410... 410 Encontrando um
Encontrando um padrão em padrão em uma Stringuma String... ... 411411 Achando um
Achando um Padrão em Padrão em uma String uma String ... ... 412412 Obtendo os
Obtendo os valores em valores em byte de Caractbyte de Caracteres...eres... ... 413413 Obtendo
Obtendo strings strings de de bytes ...bytes ... 4... 41313 Trocando Maiúsculas
Trocando Maiúsculas e Mine Minúsculas ...úsculas ... 41... 4133 Retornando
Retornando Parte dParte de e uma uma String String ... 414.... 414 Funções
Funções Matemáticas ...Matemáticas ... 414... 414
Função Função ... 415... 415 Parâmetros Parâmetros ... 415... 415 Retorna... Retorna... ... 415415 Um A
Um Aviso sobre viso sobre Blocos Blocos de Código de Código em Lua ..em Lua ... ... 416416 Diretivas
Diretivas Condicionais Condicionais ... ... 417417
A
A Diretiva Diretiva if ...if ... 417... 417 Usando
Usando else ...else ... 417... 417 Diretivas
Diretivas If If Aninhadas...Aninhadas... 418... 418
Loops
The
The for for Loop ...Loop ... 420... 420 The
The while while Loop ...Loop ... 421... 421 The
The repeat repeat Loop ...Loop ... 422... 422 Using
Using break ...break ... ... 422422
Custom
Custom Functions ...Functions ... ... 424424
Defining
Defining a a Function ...Function ... 424... 424 Returning V
Returning Values from alues from a Functiona Function... ... 425425 Returning
Returning Nothing ...Nothing ... 426... 426 Returning
Returning Multiple Multiple Values Values ... 427... 427 Multiple Assignm
Multiple Assignment in ent in Variable Definition ...Variable Definition ... 4... 42727 Multiple Assignment
Multiple Assignment from Function from Function Return Values ...Return Values ... ... 428428 Multiple Return V
Multiple Return Values as Falues as Function Parameters unction Parameters ... ... 428428 Value
Value Lists Lists ... 429... 429
Summary... Summary... ... 430430 Appendix B ... Appendix B ... ... 432432 Advanced Lua ... Advanced Lua ... 432432 Lua... Lua... ... 432432 Advanced Topics Advanced Topics ... ... 432432 Understanding
Understanding Variables...Variables... 432. 432
Global
Global and and Local Local Variables ...Variables ... 43... 4333 Understanding
Understanding Scope Scope ... 434... 434 Functions
Functions and and Variable Scope Variable Scope ... 436.... 436 Closures
Closures ... ... 437437
Garbage
Garbage Collection ...Collection ... ... 438438 Functions
Functions with with Variable Variable Arguments ...Arguments ... ... 439439 The
The VarArg VarArg Operator ...Operator ... ... 441441
Select...
Select... ... 441441
Recursion
Recursion ... 442... 442 The
The Table Table Type Type ... 44... 4444
Associativity
Associativity ... ... 445445
Tables
Tables as as Arrays...Arrays... ... 447447
Array Indices
Array Indices... ... 447447 Creating Arrays
Creating Arrays... .... 447447 Arrays are Tables Too!
Arrays are Tables Too!... ... 448448
Unpacking
Unpacking Arrays...Arrays... 450... 450 Finding
Finding the Length the Length of an of an Array ...Array ... ... 450450 Looping
Looping Over ArrOver Arrays ays with with ipairs ...ipairs ... 450... 450 Adding
Adding Values Values to to Arrays...Arrays... 451... 451 Removing
Removing Values from Values from Arrays...Arrays... 4... 45252 Converting
Converting Arrays to Arrays to Strings...Strings... 4... 45353 Sorting
Finding
Finding the the Largest Largest Index Index ... 454... 454
More
More on on Tables ...Tables ... ... 456456
Iterating
Iterating Through Through Table Table Keys ...Keys ... 456... 456
The next Function
The next Function... ... 457457 The pairs Function
The pairs Function... 457... 457
Object
Object Oriented Programming Oriented Programming in Lua... in Lua... 458458
Creating
Creating an an Object...Object... 458... 458 Designing
Designing Objects ...Objects ... ... 459459 The
The self self Property ...Property ... 460.... 460
Metamethods
Metamethods ... 462... 462
Understanding
Understanding Metamethods ...Metamethods ... 462... 462 Registering
Registering Metamethods Metamethods with with setmetatable setmetatable ... 463... 463 Operator
Operator Metamethods Metamethods ... 463... 463
Operator
Operator ... 464... 464 Metamethod
Metamethod Signature ...Signature ... 46... 4644 Description
Description ... 464... 464
Accessing
Accessing Values with Values with the __index the __index Metamethod ...Metamethod ... 4.... 46565 Assigning
Assigning Values with the __newindex MetValues with the __newindex Metamethod...amethod... ... 467467 Using
Using rawset rawset and and rawget ...rawget ... ... 469469
Creating
Creating a a Pseudo-Class ...Pseudo-Class ... ... 470470 Summary...
Sobre o Autor
Sobre o Autor
Brian Gene Burton, Ed.D. é um professor, autor, e desenvolvedo
Brian Gene Burton, Ed.D. é um professor, autor, e desenvolvedor dr de jogos. Elee jogos. Ele criou graduações de jogos em duas universidades e gosta de pesquisar
criou graduações de jogos em duas universidades e gosta de pesquisar ee brincar com ambientes virtuais. Brian apresenta e publica
brincar com ambientes virtuais. Brian apresenta e publica internacionalme
internacionalmente suas nte suas pesquisas e gosta de compartilhar o que elepesquisas e gosta de compartilhar o que ele aprendeu sobre desenvolvimento de jogos e mobilidade. Quando não está aprendeu sobre desenvolvimento de jogos e mobilidade. Quando não está viajando ou ensinando, ele pode ser encontrado em sua casa nas Montanhas viajando ou ensinando, ele pode ser encontrado em sua casa nas Montanhas Ozark no Missouri com sua bela esposa há mais
Ozark no Missouri com sua bela esposa há mais de 25 anos, Rosemary.de 25 anos, Rosemary.
Sobre o Tradutor
Sobre o Tradutor
Luiz Fernando Duarte Júnior é
Luiz Fernando Duarte Júnior é consultor, empreendedoconsultor, empreendedor e r e professorprofessor
universitário na região de
universitário na região de Porto Alegre-RS, Brasil.Porto Alegre-RS, Brasil.
Bacharel em Ciência da
Bacharel em Ciência da Computação com pós-graduação em ComputaçãoComputação com pós-graduação em Computação
Móvel, é aficcionado por desenvolvimento para s
Móvel, é aficcionado por desenvolvimento para smartphomartphones desde nes desde 2006. De2006. De
lá para cá, já
lá para cá, já desenvolveu para as plataformas JME, PalmOS, Blackberry,desenvolveu para as plataformas JME, PalmOS, Blackberry,
Android e iOS, tendo ministrado dezenas de palestras e
Android e iOS, tendo ministrado dezenas de palestras e cursos em faculdadescursos em faculdades
e escolas técnicas de
e escolas técnicas de seu estado. Ele adora compartilhar seu conhecimento eseu estado. Ele adora compartilhar seu conhecimento e
um pouco de seu trabalho pode ser conhecido no seu
um pouco de seu trabalho pode ser conhecido no seu blog pessoalblog pessoal
LuizTools.com
Dedicatória: Dedicatória:
Eu dedico este livro à minha amada
Eu dedico este livro à minha amada esposa cujo suporte e encorajamentoesposa cujo suporte e encorajamento manteram-me focado e escrevendo.
manteram-me focado e escrevendo.
Um agradecimento especial aos
Um agradecimento especial aos meus estudantes e à meus estudantes e à comunidade Coronacomunidade Corona pelo seu suporte e requisições por detalhes específicos que ajudaram pelo seu suporte e requisições por detalhes específicos que ajudaram bastante no desenvolvimento deste livro.
bastante no desenvolvimento deste livro. Os loops sonoros e
Os loops sonoros e musicais foram graciosamente fornecidos por Shaun Reedmusicais foram graciosamente fornecidos por Shaun Reed da Constant Seas.
da Constant Seas. Você pode Você pode checar sua checar sua banda embanda em http://www.constantseas.com
http://www.constantseas.com Gráficos Tileset do
Gráficos Tileset do Reiner’s Tilesets (http://www.reinerstileReiner’s Tilesets (http://www.reinerstilesets.de) foramsets.de) foram usados com permissão.
usados com permissão.
Todas outras imagens (a menos
Todas outras imagens (a menos que especificado) e capa que especificado) e capa foram desenhadosforam desenhados por Brandon Burton.
por Brandon Burton.
Ajuda na edição e formatação provida por Brianna Burton Ajuda na edição e formatação provida por Brianna Burton ((http://www.LiteraryDiaries.comhttp://www.LiteraryDiaries.com ) )
Um agradecimento à Luiz Fernando Duarte Júnior, webmaster do blog Um agradecimento à Luiz Fernando Duarte Júnior, webmaster do blog http://luiztools.com
Prefácio
Prefácio
Bem vindo ao Corona! Bem vindo ao Corona!
Seja você somente um iniciante ou um programador experiente, Corona SDK Seja você somente um iniciante ou um programador experiente, Corona SDK é uma maneira fantástica de desenvolver aplicações móveis ricamente
é uma maneira fantástica de desenvolver aplicações móveis ricamente interativas. Eu desenvolvi Corona com os p
interativas. Eu desenvolvi Corona com os princípios de executar e testar.rincípios de executar e testar. Desta maneira, você estará apto a iterar e
Desta maneira, você estará apto a iterar e construir algo rapidamente. Porconstruir algo rapidamente. Por exemplo, em poucas linhas de código, você pode ter objetos quicando uns exemplo, em poucas linhas de código, você pode ter objetos quicando uns contra os outros.
contra os outros. Hoje, Corona SDK é a
Hoje, Corona SDK é a plataforma líder no desenvolvimento multi-plataformaplataforma líder no desenvolvimento multi-plataforma de jogos, aplicativos e eBooks.
de jogos, aplicativos e eBooks. Como resultado formou-se uma Como resultado formou-se uma enormeenorme comunidade colaborativa de desenvolvedores à qual você pode
comunidade colaborativa de desenvolvedores à qual você pode se juntar.se juntar. Eles possuem todos os históricos e níveis de experiência, de estúdios 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. independentes, a adolescentes, à octagenários, editores e agências digitais.
Neste livro, você verá que Corona lhe uma plataforma simples e
Neste livro, você verá que Corona lhe uma plataforma simples e poderosapoderosa para que você pegue sua
para que você pegue sua ideia e construa grandes aplicativos. Se você usouideia e construa grandes aplicativos. Se você usou outras tecnologias, eu acho que você ficará surpresso com o quão
outras tecnologias, eu acho que você ficará surpresso com o quão rapidamente verá algo inte
rapidamente verá algo interessante na tela.ressante na tela.
Ok, é hora de começar. Com a ajuda do Corona, espero que você se divirta Ok, é hora de começar. Com a ajuda do Corona, espero que você se divirta trazendo à vida suas ideias.
trazendo à vida suas ideias.
Boa programação! Boa programação! Walter Luh Walter Luh Criador do CoronaSDK Criador do CoronaSDK
Introdução
Introdução
Bem vindo
Bem vindo
Bem vindo ao Criando Aplicações Móveis com Corona. Este livro é o 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 resultado de anos de desenvolvimento para dispositivos móveis. No início de 2010 comecei a buscar uma maneira de desenvolver melhor. A melhor
2010 comecei a buscar uma maneira de desenvolver melhor. A melhor maneira. Buscava uma ferramenta que me
maneira. Buscava uma ferramenta que me permitisse desenvolver maispermitisse desenvolver mais rapidamente para múltiplas plataformas de
rapidamente para múltiplas plataformas de dispositivos móveis. Estavadispositivos móveis. Estava
cansado e frustrado por ter de reescrever as mesmas aplicações para iPhone, cansado e frustrado por ter de reescrever as mesmas aplicações para iPhone, iPad ou Android. Depois de tentar diversas ferramentas e ambientes de
iPad ou Android. Depois de tentar diversas ferramentas e ambientes de desenvolvimento, eu encontrei o Corona SDK da Corona Labs
desenvolvimento, eu encontrei o Corona SDK da Corona Labs (http://www
(http://www.coronalabs.com).coronalabs.com). Enquanto ele . Enquanto ele ainda estava no ainda estava no início doinício do desenvolvim
desenvolvimento, ele mostrava que o time da ento, ele mostrava que o time da Corona Labs estavaCorona Labs estava
comprometido a construir um conjunto de ferramentas de qualidade e que comprometido a construir um conjunto de ferramentas de qualidade e que uma comunidade devotada de desenvolvedores estava
uma comunidade devotada de desenvolvedores estava rapidamente serapidamente se
formando em volta deste grande SDK (Kit de Desenvolvimento de Software). formando em volta deste grande SDK (Kit de Desenvolvimento de Software). Nos dias iniciais de meu aprendizado sobre Corona, eu me foquei em criar Nos dias iniciais de meu aprendizado sobre Corona, eu me foquei em criar tutoriai
tutoriais (disponíveis ns (disponíveis no meu websiteo meu website
http://www.BurtonsMediaGroup.com/blog
http://www.BurtonsMediaGroup.com/blog, enquanto que tutoriais em, enquanto que tutoriais em Português podem ser encontrados no blog do tradutor:
Português podem ser encontrados no blog do tradutor: http://www.luiz
http://www.luiztools.com). Depois de ensinar Corona a tools.com). Depois de ensinar Corona a várias turmas devárias turmas de desenvolvim
desenvolvimento móvel e com o ento móvel e com o encorajamento de meus estudantes, euencorajamento de meus estudantes, eu
iniciei o processo de criação do livro que poderia ser usado como um recurso 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
de ensino para o Corona SDK. Espero que você goste de aprender sobre Corona assim como eu!
Corona assim como eu! Atenciosamente,
Atenciosamente,
Brian G. Burton, Ed.D. Brian G. Burton, Ed.D.
Para quem este livro foi feito
Para quem este livro foi feito
Enquanto meu foco e ímpeto de escrever este livro era
Enquanto meu foco e ímpeto de escrever este livro era que ele fosse usadoque ele fosse usado como um “livro de consulta”, eu também escrevi acreditando que muitas como um “livro de consulta”, eu também escrevi acreditando que muitas (esperançosa
(esperançosamente) pessoas estariam mente) pessoas estariam interessadas em aprender interessadas em aprender mais sobremais sobre Corona SDK e desenvolver para múltiplas plataformas ao mesmo tempo. Eu Corona SDK e desenvolver para múltiplas plataformas ao mesmo tempo. Eu tinha a expectativa de que qualquer
conhecimentos básicos em programação. Não gastei muito tempo nos conhecimentos básicos em programação. Não gastei muito tempo nos fundamento
fundamentos de s de programaçãprogramação. Existem muitos bons o. Existem muitos bons livros de programação elivros de programação e recomendo que você inicie neles e
recomendo que você inicie neles e retorne ao desenvolvimento de aplicaçõesretorne ao desenvolvimento de aplicações quando já tiver dominado o básico.
quando já tiver dominado o básico.
Como este livro está organizado
Como este livro está organizado
Enquanto escrevia este livro, eu mantive os tradicionais semestres de 16 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
semanas, assumindo um capítulo por semana. Uma vez que isto não f uncionaunciona para todo mundo, ele deve ser o
para todo mundo, ele deve ser o bastante para a maioria das pessoas quebastante para a maioria das pessoas que estão iniciando com desenvolvimento móvel usando Corona SDK. Meu estão iniciando com desenvolvimento móvel usando Corona SDK. Meu primeiro rascunho term
primeiro rascunho terminou com mais de 20 inou com mais de 20 capítulos. Depois decapítulos. Depois de reorganiza
reorganizar o r o conteúdo e continuando seu conteúdo e continuando seu desenvolvimento, nós estávamosdesenvolvimento, nós estávamos agora com 16 capítulos e um capítulo adicional de
agora com 16 capítulos e um capítulo adicional de grandes recursos e um pargrandes recursos e um par de apêndices que foram graciosamente supridos pela Corona Labs s
de apêndices que foram graciosamente supridos pela Corona Labs sobre aobre a linguagem de script Lua.
linguagem de script Lua.
Convenções usadas neste livro
Convenções usadas neste livro
Através deste livro usaremos
Através deste livro usaremos Courier NewCourier New para denotar código que deve para denotar código que deve
ser digitado exatamente igual. Quando encontra
ser digitado exatamente igual. Quando encontrar exemplos que estão cr exemplos que estão comom
Courier New, Italics
Courier New, Italics você deverá digitar seus próprios valores.você deverá digitar seus próprios valores.
Usando os exemplos de código
Usando os exemplos de código
Este livro foi escrito para ajudar você a desenvolver aplicações e jogos com 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
Corona SDK. Em geral, você pode usar o código neste livro em seus programas e documentação
programas e documentação. Você não precisa nos . Você não precisa nos contatar para pedircontatar para pedir permissão para reproduzir uma porção significante de
permissão para reproduzir uma porção significante de código. Você nãocódigo. Você não precisa pedir permissão para escrever uma aplicação que use
precisa pedir permissão para escrever uma aplicação que use uma grandeuma grande quantidade de código.
quantidade de código.
Agora, por outro lado, se eu ver aplicações que exatamente reproduzem os 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 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
com pessoas que usem estes exemplos como um ponto inicial, mas vá alémvá além disso; seja
disso; seja original! Respondeoriginal! Responder questões citando este r questões citando este livro ou parafrasearlivro ou parafrasear trechos não exigem permissão (mas eu apreciaria uma citacão).
Eu reservo todos os direitos de venda ou
Eu reservo todos os direitos de venda ou distribuição dos exemplodistribuição dos exemplos ems em
qualquer formato fornecido neste livro. Se você não está certo se seu uso cai qualquer formato fornecido neste livro. Se você não está certo se seu uso cai fora das regras que determinei acima, sinta-se l
fora das regras que determinei acima, sinta-se livre para contatar-me atravésivre para contatar-me através de:
de: DrBurton@BDrBurton@BurtonsMediaGurtonsMediaGroup.comroup.com
Porque não usei ______ para
Porque não usei ______ para ______
______
Existem muitos bons produtos disponíveis que
Existem muitos bons produtos disponíveis que podem ajudar os camaradaspodem ajudar os camaradas programadores a tornar seu trabalho muito mais produtivo (veja o capítulo programadores a tornar seu trabalho muito mais produtivo (veja o capítulo 17 para uma lista curta). Como este livro é direcionado aos estudantes
17 para uma lista curta). Como este livro é direcionado aos estudantes universitário
universitários e ps e pessoas que iniciaram recentemente, eu essoas que iniciaram recentemente, eu tentei não usartentei não usar ferramentas externas. Se alguma ferramenta fosse necessária para
ferramentas externas. Se alguma ferramenta fosse necessária para que algumque algum projeto fosse concluído, eu tentaria utilizar somente as
projeto fosse concluído, eu tentaria utilizar somente as gratuitas ou de gratuitas ou de baixobaixo custo. Se eu não usei as
custo. Se eu não usei as suas favoritsuas favoritas, eu posso as, eu posso 1) não saber da 1) não saber da existência daexistência da mesma; 2) não consegui obter uma licença de testes do produto; ou 3) não 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ê gosto da ferramenta (provavelmente a primeira ou segunda opção). Se você conhece uma grande ferramenta que pode economizar muito tempo e
conhece uma grande ferramenta que pode economizar muito tempo e dinheiro aos desenvolvedores, por favor compartilhe-a com o
dinheiro aos desenvolvedores, por favor compartilhe-a com o mundo no localmundo no local de discussão no site deste
de discussão no site deste livro:livro:
http://www.BurtonsMediaGroup.com/books
http://www.BurtonsMediaGroup.com/books ..
Apêndices
Apêndices
Apêndices A e B contendo informações sobre a linguagem de programação Apêndices A e B contendo informações sobre a linguagem de programação Lua foram fornecidos pela Corona Labs e
Lua foram fornecidos pela Corona Labs e estão incluídos com permissão.estão incluídos com permissão. Enquanto efetuamos algumas edições no conteúdo para melhorar a
Enquanto efetuamos algumas edições no conteúdo para melhorar a legibilidade, o conteúdo origina
legibilidade, o conteúdo original e l e os exemplos ainda pos exemplos ainda permanecem.ermanecem.
Como entrar em Contato
Como entrar em Contato
Por favor enderece seus comentários ou questionamentos para o site do Por favor enderece seus comentários ou questionamentos para o site do livro: http://www.BurtonsMediaGroup.com/books ou email
livro: http://www.BurtonsMediaGroup.com/books ou email DrBurton@BurtonsMediaGroup.com
DrBurton@BurtonsMediaGroup.com. Suporte em p. Suporte em português pode ser obtidoortuguês pode ser obtido com o tradutor, Luiz
com o tradutor, Luiz Fernando, no e-mail me@luiztools.comFernando, no e-mail me@luiztools.com
Porque Escolhi Auto-Publicar
Porque Escolhi Auto-Publicar
A decisão de auto-publicar este livro foi alcançada
A decisão de auto-publicar este livro foi alcançada depois de muitadepois de muita
consideração. Enquanto que existem numerosas editoras interessadas (tanto consideração. Enquanto que existem numerosas editoras interessadas (tanto
acadêmicas quanto técnicas), eu decidi publicar ao menos a p
acadêmicas quanto técnicas), eu decidi publicar ao menos a primeira ediçãorimeira edição sem o uso de editoras tradicionais. Existem muitas razões pelas quais
sem o uso de editoras tradicionais. Existem muitas razões pelas quais eueu tomei esta decisão, mesmo embora ela me leve a menos vendas.
tomei esta decisão, mesmo embora ela me leve a menos vendas. Primeiro estão minhas preocupaçõ
Primeiro estão minhas preocupações com o preçes com o preço final do o final do livro. Eu ficolivro. Eu fico doente de ver livros impressos custando U$75 ou mesmo mais de
doente de ver livros impressos custando U$75 ou mesmo mais de U$100. EuU$100. Eu sinto que este preço é errado e col
sinto que este preço é errado e colocam uma barreira anti-estudantes.ocam uma barreira anti-estudantes. Enquanto editoras diminuíram ligeiramente o preço com o
Enquanto editoras diminuíram ligeiramente o preço com o advento deadvento de eBooks e eTextbooks, esta queda não foi o bastante em minha opinião. 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 Minha segunda preocupação foi o quão rapidamente os ambientes de
desenvolvimento mudam. Pessoalmente odeio ter de compar um novo livro a 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
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 completamente sem uso agora. Eu decidi publicar esta primeira vez como um eBook, que permite-me atualizar e fornecer ao leitor, mais rapidamente. Eu 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 fornecerei as atualizações menores entre as edições do eBook para todos que adquirirem o eBook através do meu website:
adquirirem o eBook através do meu website: http://www.B
http://www.BurtonsMediaGurtonsMediaGroup.com/booroup.com/books/book-update/ks/book-update/ ou através do ou através do blog do
blog do tradutor http://www.luiztotradutor http://www.luiztools.com.ols.com.
Como está sendo dito, se você recebeu uma cópia
Como está sendo dito, se você recebeu uma cópia deste eBook através dedeste eBook através de torrent ou de um amigo, por favor adquira sua própria cópia através de meu 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
website. Isto lhe fornecerá acesso à versão mais recente do eBook e iráirá
enconrajar-me a continuar com as atualizações. Ainda que eu esteja fazendo enconrajar-me a continuar com as atualizações. Ainda que eu esteja fazendo isto para ajudar meus estudantes,
isto para ajudar meus estudantes, eu tenho contas para pagar.eu tenho contas para pagar.
Por outro lado, ao auto-publicar meu livro eu NÃO tenho um time de pessoas 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
para verificar tudo neste livro. Eu estou certo de que alguns erros dealguns erros de digitação foram colocados por gremlins durante a noite. Sei que eu tenho 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 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 tendo lido muitos livros que foram publicados por grandes companhias e encontrado erros em seus livros, eu estou certo de que erros existem neste 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 também. Por favor, deixe-me sabendo de todos os erros que encontrar nono forum
11
Capítulo 1
Capítulo 1
Olá Mundo: Instalando e Indo em Frente!
Olá Mundo: Instalando e Indo em Frente!
Você teve uma grande idéia de jogo ou aplicação móvel. Maravilha! Agora, 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 como você cria o mesmo e distribui-o para iPhone/Droid/iPad/Nook, (ou qualquer dispositivo que você escolha)? Existem muitos
qualquer dispositivo que você escolha)? Existem muitos dispositivos paradispositivos para escolher. Qual plataforma é a melhor para minha
escolher. Qual plataforma é a melhor para minha aplicação?aplicação? Com tantas plataformas para escolher (Android, iOS, RIM,
Com tantas plataformas para escolher (Android, iOS, RIM, Windows,Windows, nomeando algumas poucas), a escolha da
nomeando algumas poucas), a escolha da plataforma para desenvolver podeplataforma para desenvolver pode ser muito difícil. Cada plataforma usa uma linguagem diferente, tem uma API ser muito difícil. Cada plataforma usa uma linguagem diferente, tem uma API diferente (Interface de Programação de Aplicações)
diferente (Interface de Programação de Aplicações) e requisitos. Devemose requisitos. Devemos nos prender a
nos prender a uma plataforma de desenvolvimento? Devemos escolheruma plataforma de desenvolvimento? Devemos escolher somente uma?
somente uma?
Felizmente com o advento de ferramentas como Corona da Corona Labs, Felizmente com o advento de ferramentas como Corona da Corona Labs, agora é possível desenvolver para múltiplas plataformas ao mesmo tempo. agora é possível desenvolver para múltiplas plataformas ao mesmo tempo. Porque escrever uma vez e publicar para dispositivos diferentes é a melhor Porque escrever uma vez e publicar para dispositivos diferentes é a melhor solução no mundo de desenvolvimento móvel.
solução no mundo de desenvolvimento móvel. Corona da Corona Labs p
Corona da Corona Labs permite que os camaradas ermite que os camaradas desenvolvedodesenvolvedoresres publiquem para dispositivos Android e
publiquem para dispositivos Android e iOS (Apple), tanto smartphonesiOS (Apple), tanto smartphones quanto tablets. Este livro foi escrito para ajudar estudantes de
quanto tablets. Este livro foi escrito para ajudar estudantes de todo lugar atodo lugar a obterem as habilidades necessárias para transformarem sua idéia em uma obterem as habilidades necessárias para transformarem sua idéia em uma aplicação usando Corona SDK.
aplicação usando Corona SDK.
O que este livro não é
O que este livro não é
Enquanto que este livro é designado para
Enquanto que este livro é designado para ensinar o básico deensinar o básico de desenvolvim
desenvolvimento de aplicações móveis, ele ento de aplicações móveis, ele não é designado para ensinarnão é designado para ensinar fundamentos de programação. Estou presumindo que você já sabe o básico 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 de programação de computadores. Se você não sabe como usar um bloco
22 if/else, um loop ou
if/else, um loop ou uma função, você provavelmente não está preparado parauma função, você provavelmente não está preparado para este livro.
este livro.
Enquanto eu fiz todas as tentativas de cobrir o básico que a maioria dos 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 estudantes querem aprender durante o primeiro semestre de um curso de desenvolvim
desenvolvimento móvel, devido a ento móvel, devido a problemas com tempo problemas com tempo e espaço, somentee espaço, somente os mais importantes puderam ser incluídos. Existe um segundo volume em os mais importantes puderam ser incluídos. Existe um segundo volume em desenvolvim
desenvolvimento que ento que cobrirá aspectos mais avançados e cobrirá aspectos mais avançados e um volume voltadoum volume voltado exclusivamente a projetos de jogos com Corona.
exclusivamente a projetos de jogos com Corona.
Iniciando Iniciando
Corona: Alguma História Corona: Alguma História
Corona Labs foi criada em 2008 como uma companhia financiada por 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 investidores de risco em Palo Alto, Califórnia. Antes de Corona, o time da Corona Labs foi responsável por
Corona Labs foi responsável por criar muitas ferramentas padrões dacriar muitas ferramentas padrões da indústria que tenho
indústria que tenho certeza de que vocerteza de que você conhece. cê conhece. No tempo que eu estiveNo tempo que eu estive desenvolvendo aplicações com Coro
desenvolvendo aplicações com Corona, eu encontrei na na, eu encontrei na Corona Labs um dosCorona Labs um dos negócios mais amigáveis e úteis que eu
negócios mais amigáveis e úteis que eu tive o prazer de trabalhar. Além disso,tive o prazer de trabalhar. Além disso, a comunidade é muito amigá
a comunidade é muito amigável e solícita. Se você decidir juntarvel e solícita. Se você decidir juntar-se à-se à comunidade Coro
comunidade Corona, esteja certo de na, esteja certo de continuar com este grande espírito decontinuar com este grande espírito de solidariedade!
solidariedade!
Software: Corona Software: Corona
Não é surpresa de que você precisará do Corona SDK para começar. Para 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 aprender, eu recomendo baixar a versão trial (de teste) no site da Corona Labs
Labs http://www.CoronaLabs.com/http://www.CoronaLabs.com/. Clique no botão de download e registre-. Clique no botão de download e registre-se (independente registre-se é um usuário pagante ou gratuito). Se você for um
se (independente se é um usuário pagante ou gratuito). Se você for um estudante ou universitário, você pode obter um desconto acessando estudante ou universitário, você pode obter um desconto acessando http://www.co
http://www.coronalabs.com/storonalabs.com/store/corona-for-educatiore/corona-for-education/n/..
Software: Android Software: Android
33 Para começar o desenvolvimento de
Para começar o desenvolvimento de aplicações para Android com aplicações para Android com Corona,Corona, você não precisará de
você não precisará de nenhum software adicional Android. nenhum software adicional Android. EntretantEntretanto, vocêo, você precisará do Java SDK (tipicamente conhecido como JDK) para estar apto a precisará do Java SDK (tipicamente conhecido como JDK) para estar apto a compilar em ambiente Microsoft Windows. Vá
compilar em ambiente Microsoft Windows. Vá emem http://www.o
http://www.oracle.com/techracle.com/technetwork/java/javnetwork/java/javase/downloads/index.hase/downloads/index.html tml ee baixe a Java Platform Standard Edition clicando
baixe a Java Platform Standard Edition clicando no botão “Download JDK”.no botão “Download JDK”. Aviso: Você somente precisa baixar o download do JDK se você está em um 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 sistema Microsoft Windows. Se você está usando um Macintosh com OS X, ele já está instalado.
já está instalado.
Exemplos e Imagens Exemplos e Imagens
Um último download deve ser feito: os exemplos de
Um último download deve ser feito: os exemplos de códigos, imagens ecódigos, imagens e outras ferramentas que você pode precisar com os projetos estão listadas outras ferramentas que você pode precisar com os projetos estão listadas neste livro. Eles
neste livro. Eles estão todos disponíveis emestão todos disponíveis em http://www.B
http://www.BurtonsMediaGurtonsMediaGroup.com/booroup.com/books.ks.
Software: iOS Software: iOS
Para desenvolvimento direto no simulador, você não tem que baixar nada da 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 Apple. Entretanto, quando for hora de testar em um dispositivo ou preparar a aplicação para o iTunes, você necessitará do Apple iOS
aplicação para o iTunes, você necessitará do Apple iOS SDK. Se você já é uSDK. Se você já é umm desenvolvedor Apple, você já está apto a realizar a instalação. Se você não é desenvolvedor Apple, você já está apto a realizar a instalação. Se você não é um desenvolvedor Apple atualmente (U$99/ano para uma
um desenvolvedor Apple atualmente (U$99/ano para uma assinatura padrãoassinatura padrão de desenvolvedor), você pode se registrar como desenvolvedor gratuito e de desenvolvedor), você pode se registrar como desenvolvedor gratuito e baixar o Xcode através da Apple App
baixar o Xcode através da Apple App Store por U$4.99).Store por U$4.99).
Hardware para Desenvolver: Corona Hardware para Desenvolver: Corona
Corona não demanda muito do seu computador para desenvolvimento. Corona não demanda muito do seu computador para desenvolvimento. Enquanto você estiver usando ao menos um OSX 10.6 ou superior em um Enquanto você estiver usando ao menos um OSX 10.6 ou superior em um Mac, ou Windows XP com CPU de
Mac, ou Windows XP com CPU de 1GHz em um PC, você estará bem.1GHz em um PC, você estará bem. Se você está planejando desenvolver
Se você está planejando desenvolver aplicações para iPhone, iPod aplicações para iPhone, iPod TouchTouch e/ou iPad, você precisará de um Mac.
e/ou iPad, você precisará de um Mac. Este é um requisito da Apple. ParaEste é um requisito da Apple. Para manter todo mundo de bom humor, Corona somente publicará para um manter todo mundo de bom humor, Corona somente publicará para um
44 dispositivo iOS se você estiver usando um Mac. Você também pode criar
dispositivo iOS se você estiver usando um Mac. Você também pode criar aplicações Android utilizando um Mac.
aplicações Android utilizando um Mac.
Se você tem somente um s
Se você tem somente um sistema Windows, você pode desenvolver e publicaristema Windows, você pode desenvolver e publicar aplicações Android. Você também está
aplicações Android. Você também está apto a desenvolver para apto a desenvolver para dispositivodispositivoss iOS, entretanto não poderá publicar e vender seu trabalho para iOS fora de iOS, entretanto não poderá publicar e vender seu trabalho para iOS fora de um Mac. Eu uso um
um Mac. Eu uso um MacBooMacBook e um k e um PC, regularmente variando entre ambosPC, regularmente variando entre ambos durante o desenvolvimento de aplicações.
durante o desenvolvimento de aplicações.
Matriz de Hardware Necessário: Matriz de Hardware Necessário: Hardware
Hardware Android Android OS OS Apple Apple iOSiOS
Desenvolver Instalar Desenvolver Instalar Desenvolver Instalar Desenvolver Instalar Macintosh
Macintosh X X X X X X XX
Windows
Windows PC PC X X X X XX
Hardware para Desenvolver: Dispositivos de Teste
Hardware para Desenvolver: Dispositivos de Teste
Se você pretende desenvolver e
Se você pretende desenvolver e vender aplicações para vender aplicações para dispositivodispositivos móveiss móveis você deve ter um dispositivo móvel para testar suas
você deve ter um dispositivo móvel para testar suas criaçõecriações. Eu s. Eu estive emestive em projetos onde era necessário ter um hardware que eu não tinha. Usar
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 s
somente o simulador cobrirá 75% do que pode aconteçar com sua aplicação,ua aplicação, mas não lhe permi
mas não lhe permitirá presenciar todotirá presenciar todos os problemas em potencial. s os problemas em potencial. AlgunsAlguns dos projetos que citei anteriormente funcionavam p
dos projetos que citei anteriormente funcionavam perfeitamerfeitamente noente no simulador, mas “travavam” no dispositivo móvel e eu era rejeitado pela simulador, mas “travavam” no dispositivo móvel e eu era rejeitado pela Apple. A experiência era mais do que
Apple. A experiência era mais do que apenas frustrante e ensinou-me umaapenas frustrante e ensinou-me uma valiosa lição: se você está desenvolvendo para uma plataforma, tenha
valiosa lição: se você está desenvolvendo para uma plataforma, tenha dispositivo
dispositivos de s de teste!teste!
Android Android
Corona somente compila para Android OS
Corona somente compila para Android OS 2.2 ou superiores. Qualquer2.2 ou superiores. Qualquer dispositivo que você planeje utilizar deve ter um
dispositivo que você planeje utilizar deve ter um processador ARM V7. Existeprocessador ARM V7. Existe uma infinidade de dispositivos que
uma infinidade de dispositivos que preenchem estes requisitos, então vocêpreenchem estes requisitos, então você não terá problema em encontrar um para
55
iOS iOS
Para desenvolvimento no iOS, você precisará de uma licença de Para desenvolvimento no iOS, você precisará de uma licença de
desenvolvedor e também de um iPhone, iPod Touch, ou iPad. Obviamente, 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 tendo um telefone antigo ou iPad é uma boa idéia para testar FPS (Frames por Segundo) se sua
por Segundo) se sua aplicação usa gráficos intensamente. É recomendadoaplicação usa gráficos intensamente. É recomendado que você use a versão mais recente do iOS
que você use a versão mais recente do iOS em seus dispoem seus dispositivos. Para estarsitivos. Para estar apto a instalar sua aplicação em u
apto a instalar sua aplicação em um dispositivo iOS, você precisará de umm dispositivo iOS, você precisará de um Mac e uma conta de
Mac e uma conta de desenvolvedodesenvolvedor Standard, Enterprise, ou University dar Standard, Enterprise, ou University da Apple.
Apple.
Considerações de Publicação
Considerações de Publicação
Eu estou certo de que você já está imaginando as primeiras vendas de sua Eu estou certo de que você já está imaginando as primeiras vendas de sua aplicação. Mas antes que você possa vendê-la,
aplicação. Mas antes que você possa vendê-la, você precisará decidir aondevocê precisará decidir aonde você irá publicá-la. Existem muitas considerações específicas de cada
você irá publicá-la. Existem muitas considerações específicas de cada distribuidor que você precisa ter em mente.
distribuidor que você precisa ter em mente.
Android (Google) Android (Google)
O mercado para Android é muito diferente da loja do iTunes
O mercado para Android é muito diferente da loja do iTunes da Apple. Noda Apple. No mercado Android você tem
mercado Android você tem inúmeros distribuidores diferentes disponíveisinúmeros distribuidores diferentes disponíveis para vender suas aplicações, incluindo
para vender suas aplicações, incluindo a Google Playa Google Play (http://pay.go
(http://pay.google.com)ogle.com), Amazon, Barnes , Amazon, Barnes & & Noble, entre outros. Noble, entre outros. VocêVocê precisará criar uma conta com cada distribuidor que você deseja utilizar precisará criar uma conta com cada distribuidor que você deseja utilizar como canal de vendas.
como canal de vendas.
Por U$25 você pode criar uma conta de desenvolvedor para Android com o 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 Google. Você NÃO tem que se cadastrar em nada até que esteja pronto para começar a vender suas
começar a vender suas aplicações. Para criar sua conta visiteaplicações. Para criar sua conta visite http://developer.android.com/index.html.
http://developer.android.com/index.html.
Uma vez que você tenha sua
Uma vez que você tenha sua conta configurada você precisará decidiconta configurada você precisará decidir se r se suasua aplicação será gratuita ou paga. Além disso, a
aplicação será gratuita ou paga. Além disso, a maiorimaioria das lojas a das lojas de aplicaçõesde aplicações lhe cobrará algo em torno de 30% sobre as vendas por estar lhe oferencendo 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
os serviços. Em outras palavras, se você cobra 99 centavos por umapor uma aplicação, você receberá 69.3 centavos por cada venda.