Criando aplicações móveis com Corona

40 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto

(1)
(2)

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.

(3)

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)

(4)

Índice

Índice

Sobre

Sobre 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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

 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

(14)

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

(15)

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...

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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).

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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.

Imagem

Referências

temas relacionados :