You are on page 1of 40

Criando Aplicaes

Mveis com Corona

Brian G. Burton, Ed.D.


Traduzido por Luiz F. Duarte Jr.

Criando Aplicaes Mveis com Corona


Por Brian G. Burton, Ed.D.
Traduo por Luiz F. Duarte Jr.
Copyright 2012 Brian G. Burton, Ed.D. Todos os direitos reservados.
Impresso em Abilene, Texas, Estados Unidos da Amrica
Publicado por Burtons Media Group.
Edies eletrnicas esto disponveis. Visite
http://www.BurtonsMediaGroup.com/books para maiores informaes.
Corona SDK uma marca registrada de Corona Labs. Corona Labs, o Logo
Corona Labs, coronalabs.com so marcas registradas da Corona Labs.
Imagens da capa foram geradas usando Corona Simulator e representam
aplicaes feitas neste livro para Droid, Galaxy Tab, iPad, e iPhone
(da esquerda para direita).
Nomes de marcas registradas e imagens podem aparecer neste livro. Ao
invs de usar o smbolo a cada ocorrncia da mesma, utilizamos o nome
somente em uma representao comercial e para benefcio do dono da marca
registrada, sem nenhuma inteno de infringir qualquer marca registrada.
Enquanto precaues tenham sido tomadas na preparao deste livro, o
publicante e autor no assume responsabilidade por erros ou omisses, ou
por danos resultantes do uso da informao contida no mesmo.
TODO SOFTWARE FORNECIDO COMO EST, SEM GARANTIA DE NENHUM TIPO,
EXPRESSA OU IMPLICADA, INCLUINDO MAS NO LIMITADO S GARANTIAS DE
MERCABILIDADE, ADEQUAO PARA UM PROPSITO PARTICULAR E NO
INFRINGIMENTO. EM NENHUM EVENTO DEVEM OS AUTORES OU DETENTORES DE
COPYRIGHTS SEREM RESPONSABILIZADOS POR QUAISQUER QUEIXAS, DANOS OU OUTRAS
RESPONSABILIDADES, QUER EM UMA AO DE CONTRATO, DANO OU CASOCONTRRIO,
PARTINDO DE, FORA DE OU EM CONEXO COM O SOFTWARE OU O USO OU OUTRAS
NEGOCIAES NO SOFTWARE.
ISBN (eTextbook): 978-1-937336-12-7| 1-93733-612-3
Verso 1.7 (16/07/14)

ndice
Sobre o Autor ............................................................................................................ XIII
Sobre o Tradutor......................................................................................................... XIII
Dedicatria: ................................................................................................................................... XIV

Prefcio ......................................................................................................................... XV
Introduo ..................................................................................................................XVI
Bem vindo ........................................................................................................................... XVI
Para quem este livro foi feito ....................................................................................... XVI
Como este livro est organizado................................................................................ XVII
Convenes usadas neste livro................................................................................... XVII
Usando os exemplos de cdigo ................................................................................... XVII
Porque no usei ______ para ______ ............................................................................. XVIII
Apndices ......................................................................................................................... XVIII
Como entrar em Contato............................................................................................. XVIII
Porque Escolhi Auto-Publicar................................................................................... XVIII

Captulo 1 ........................................................................................................................ 1
Ol Mundo: Instalando e Indo em Frente! ........................................................... 1

O que este livro no ........................................................................................................... 1


Iniciando ................................................................................................................................... 2
Corona: Alguma Histria...............................................................................................................2
Software: Corona ..............................................................................................................................2
Software: Android ............................................................................................................................2
Exemplos e Imagens .......................................................................................................................3
Software: iOS ......................................................................................................................................3
Hardware para Desenvolver: Corona ............................................................................ 3
Hardware para Desenvolver: Dispositivos de Teste ................................................ 4
Android .................................................................................................................................................4
iOS ...........................................................................................................................................................5
Consideraes de Publicao............................................................................................ 5
Android (Google)..............................................................................................................................5
iOS (Apple) ..........................................................................................................................................6
Programando no Corona: Lua ........................................................................................... 6
Programando no Corona: Editores ................................................................................. 6
Configurando Corona ........................................................................................................... 8
Macintosh ............................................................................................................................................9
Windows ........................................................................................................................................... 10

Programando no Corona: Ol Mundo (V1.0)............................................................ 10


Projeto 1.0: Ol Mundo ..................................................................................................... 11
Configuraes do Projeto .......................................................................................................... 12
Projeto 1.1: Ol Mundo (v2.0)........................................................................................ 16
Objetos ............................................................................................................................................... 17
Recapitulando ................................................................................................................................. 18
Tarefas ............................................................................................................................................... 18

Captulo 2 ..................................................................................................................... 19
Botes e Texto ............................................................................................................ 19

Conhea seus Limites ........................................................................................................ 19


Projeto 2: Diverso com Botes .................................................................................... 20
Funes.............................................................................................................................................. 22
Projeto 2.1: Diverso com Botes V2 .......................................................................... 24
Ficando Divertido! ........................................................................................................................ 25
Como Corona l seu arquivo main.lua ........................................................................ 26
Recapitulando...................................................................................................................... 27
Tarefas.................................................................................................................................... 27

Captulo 3 ..................................................................................................................... 28
Animao, Alfa e Orientao ................................................................................. 28
Animao ............................................................................................................................... 28
Projeto 3: Animao Bsica ............................................................................................ 28
Agora voc v, Agora no v mais.......................................................................................... 31
Projeto 3.1: Diverso Alfa ............................................................................................... 31
Troca de Orientao ..................................................................................................................... 34
Projeto 3.2: Uma Nova Orientao ............................................................................... 35
Recapitulando...................................................................................................................... 40
Tarefas.................................................................................................................................... 40

Captulo 4 ..................................................................................................................... 42
Preenchendo os Campos ........................................................................................ 42

Campos de Texto................................................................................................................. 42
Projeto 4: Calculadora Simples ..................................................................................... 43
Compilando para Dispositivos ...................................................................................... 51
Apple iOS ........................................................................................................................................... 52
Compilao para o Simulador iOS.......................................................................................... 53
Compilao para Dispositivo Apple iOS .............................................................................. 53
Compilao para Dispositivo Android OS .......................................................................... 55
Tarefas.................................................................................................................................... 58

Captulo 5 Todos Tipos de Grficos .................................................................... 60

Grficos Vetoriais ............................................................................................................... 60


Projeto 5: Formas Vetoriais............................................................................................ 61
Grficos Bitmap................................................................................................................... 65
Resoluo.......................................................................................................................................... 66
Escalonando .................................................................................................................................... 67
Masking ............................................................................................................................................. 67
Sprite Sheets.................................................................................................................................... 69
Projeto 5.1: Sprites Uniformes ...................................................................................... 70
Projeto 5.3: Animao de Sprites ................................................................................. 73
Mtodos de Controle de Sprites .............................................................................................. 74
Propriedades da Sprite ............................................................................................................... 75
Gatilhos de Eventos de Sprites (Listeners) ........................................................................ 75
Outros Usos de Imagens/Sprite Sheets ...................................................................... 75
Recapitulando...................................................................................................................... 76
Tarefas.................................................................................................................................... 76

Captulo 6 ..................................................................................................................... 78
Interface do Usurio ................................................................................................ 78

Recursos ................................................................................................................................ 78
build.settings ................................................................................................................................... 79
config.lua ........................................................................................................................................... 79
Alinhamento Dinmico de Contedo.................................................................................... 81
Resoluo Dinmica de Imagem ............................................................................................. 81
Adicionando Som................................................................................................................ 83
Tipos de Arquivos de Som ......................................................................................................... 83
Tempo Tudo ................................................................................................................................. 83
Streams e Som ................................................................................................................................ 84
Projeto 6.0: Beat-box ........................................................................................................ 85
config.lua file ................................................................................................................................... 86
Arquivo build.settings ................................................................................................................. 87
Fonts Personalizadas ........................................................................................................ 90
Projeto 6.1 Fonts Personalizadas ................................................................................. 91
Recapitulando...................................................................................................................... 94
Tarefas.................................................................................................................................... 94

Captulo 7: .................................................................................................................... 96
Interfaces da Aplicao ........................................................................................... 96

Escondendo a Barra de Status ....................................................................................... 96


Grupos .................................................................................................................................... 97
Projeto 7: Movimento em Grupo .................................................................................. 97
Mdulos e Pacotes ........................................................................................................................ 98

Projeto 7.1: Biblioteca Externa ..................................................................................... 98


Bibliotecas Externas ........................................................................................................ 100
CrawlSpace.................................................................................................................................... 100
CoronaSSK ..................................................................................................................................... 101
Projeto 7.2: Criando uma Splash Screen .................................................................. 101
Composer ............................................................................................................................ 104
Projeto 7.3 Uma Simples Histria .............................................................................. 104
Recapitulando.................................................................................................................... 111
Tarefas.................................................................................................................................. 111

Captulo 8: .................................................................................................................. 112


Diverso com Fsica................................................................................................ 112

Ligando a Fsica ................................................................................................................. 112


Escala ............................................................................................................................................... 113
Corpos ............................................................................................................................................. 113
Tipos de Corpos .......................................................................................................................... 114
Densidade, Frico e Elasticidade ....................................................................................... 114
Formas de Corpos ...................................................................................................................... 115
Propriedades do Corpo............................................................................................................ 116
Mtodos dos Corpos.................................................................................................................. 117
Projeto 8: Usando Fora ................................................................................................. 117
Gravidade ............................................................................................................................ 122
Cho e Bordas .............................................................................................................................. 122
Projeto 8.1: Brincando com Gravidade .................................................................... 123
Deteco de Coliso ......................................................................................................... 126
Sensores ......................................................................................................................................... 127
Joints ................................................................................................................................................ 127
Pivot Joint ...................................................................................................................................... 128
Distance Joint ............................................................................................................................... 129
Piston Joint .................................................................................................................................... 129
Friction Joint ................................................................................................................................ 129
Weld Joint ...................................................................................................................................... 130
Wheel Joint .................................................................................................................................... 130
Pulley Joint .................................................................................................................................... 130
Touch Joint .................................................................................................................................... 131
Mtodos e Propriedades Comuns aos Joints .................................................................. 132
Projeto 8.2: Bola de Demolio ................................................................................... 132
Depurando Fsica ....................................................................................................................... 134
Recapitulando.................................................................................................................... 135
Tarefas.................................................................................................................................. 135

Captulo 9: .................................................................................................................. 136

Criando um Jogo com Corona ............................................................................. 136

Projeto de Jogo .................................................................................................................. 136


Arrastando Objetos ......................................................................................................... 139
Deteco de Coliso ......................................................................................................... 143
D o Seu Melhor Tiro ....................................................................................................... 145
Reduzindo a Sobrecarga ................................................................................................ 145
Lao de Jogo ........................................................................................................................ 146
Recapitulando.................................................................................................................... 147
Tarefas.................................................................................................................................. 147

Captulo 10: ............................................................................................................... 149


Continuando o Star Explorer .............................................................................. 149

Configurando a Aplicao para Mltiplos Dispositivos ..................................... 149


Splash Screen ..................................................................................................................... 150
Melhorando o Desempenho ......................................................................................... 156
Variando a Dificuldade ................................................................................................... 164
Aumentando a Velocidade do Jogo ..................................................................................... 164
Uma Pequena Variedade ......................................................................................................... 165
Recapitulando.................................................................................................................... 166
Tarefas.................................................................................................................................. 166

Captulo 11: ............................................................................................................... 167


Mdia faz o Mundo Girar ....................................................................................... 167

Trabalhando com Som.................................................................................................... 167


Controles Bsicos de udio ................................................................................................... 167
Controles de Durao de udio ........................................................................................... 169
Controles de Volume ................................................................................................................ 169
Canais de udio........................................................................................................................... 170
Tipos de Arquivos de Som (Reviso) ........................................................................ 171
Onde coloquei aquele arquivo?................................................................................... 171
API Multimdia................................................................................................................... 172
Gravando udio ................................................................................................................ 172
Projeto 11: Gravador Simples de udio ................................................................... 173
Reproduo de Vdeo ...................................................................................................... 182
Cmera ................................................................................................................................. 182
Projeto 11.1 Cmera de Raio-X ................................................................................... 182
Recapitulando.................................................................................................................... 187
Tarefas.................................................................................................................................. 187

Captulo 12: ............................................................................................................... 188


Armazenamento de Arquivos & SQLite ........................................................... 188

Consideraes de E/S ...................................................................................................... 188


Lendo Dados ....................................................................................................................... 189
Manipulao de Arquivos Implcita vs. Explcita ......................................................... 189
Leitura Implcita ......................................................................................................................... 190
Leitura Explcita.......................................................................................................................... 190
Escrevendo Dados ............................................................................................................ 190
Implcito ......................................................................................................................................... 191
Explcito.......................................................................................................................................... 191
JSON ....................................................................................................................................... 191
Projeto 12: Leitura & Escrita com JSON ................................................................... 191
SQLite .................................................................................................................................... 193
Comandos LuaSQLite................................................................................................................ 194
Projeto 13: Lendo uma Base SQLite........................................................................... 194
Projeto 13.1 Escrevendo em uma Base SQLite ...................................................... 197
Recapitulando.................................................................................................................... 209
Tarefas.................................................................................................................................. 209

Captulo 13: ............................................................................................................... 210


Espera de Tabelas ............................................................................................... 210
Tabela vs. Table: Entendendo a Confuso ............................................................... 210
Ferramentas para Tabelas ............................................................................................ 211
Projeto 13: Criando uma TableView Simples ........................................................ 212
Projeto 13.1: Table View com SQLite ....................................................................... 217
............................................................................................................................................................ 222
Tela de Detalhes (parte do main.lua) ................................................................................ 222
Tela ZipScreen (parte do main.lua) .................................................................................... 223
Tela cityList (parte do main.lua) ......................................................................................... 226
Tela stateList (parte do main.lua)....................................................................................... 227
Recapitulando.................................................................................................................... 230
Tarefas.................................................................................................................................. 231

Captulo 14: ............................................................................................................... 232


Redes ........................................................................................................................... 232

Web Services ...................................................................................................................... 232


HTTP ................................................................................................................................................ 233
Projeto 14: Download de Imagens Via Biblioteca Network .......................... 234
Socket.................................................................................................................................... 236
Projeto 14a: Download de Imagem Via Biblioteca Socket ............................. 236
Rastreando o Status da Rede ................................................................................................ 238
Upload para um Servidor Web .................................................................................... 238
Arquitetura 3-Camadas ........................................................................................................... 239

Exemplo de Post 1: Fazendo Upload de Dados de Formulrio .............................. 239


Exemplo de Post 2: Fazendo Upload de Arquivos ou Imagens .............................. 240
Conectando a Redes Propietrias .............................................................................. 241
Facebook.............................................................................................................................. 241
Exemplo Facebook..................................................................................................................... 242
Redes de Publicidade ...................................................................................................... 243
Game Services .................................................................................................................... 244
Apple Game Center .......................................................................................................... 244
Google Play Game Services ........................................................................................... 246
Pubnub ................................................................................................................................. 248
Projeto 14.1 Aplicao Multi-Usurio....................................................................... 248
Recapitulando.................................................................................................................... 252
Tarefas.................................................................................................................................. 252

Captulo 15: ............................................................................................................... 254


Trabalhando com Widgets & Popups .............................................................. 254

Ferramentas de Mock-up e pr-design .................................................................... 254


Widgets ................................................................................................................................ 255
Widgets mais Atraentes ................................................................................................. 257
widget.newButton ..................................................................................................................... 257
widget.newPickerWheel ......................................................................................................... 260
Projeto 15.1 Exemplo widget.newPickerWheel ........................................................... 262
widget.newSlider ....................................................................................................................... 265
Projeto 15.2 Exemplo Widget Slider & Progress View .............................................. 267
widget.newScrollView ............................................................................................................. 268
widget.newSegmentedControl ............................................................................................. 270
widget.newSpinner ................................................................................................................... 271
widget.newStepper ................................................................................................................... 271
widget.newSwitch...................................................................................................................... 272
widget.newTableView.............................................................................................................. 274
Exemplo widget.newTableView .......................................................................................... 276
widget.newTabBar .................................................................................................................... 279
Project 15.4 Widget Tab Bar Example ...................................................................... 281
Removendo Widgets ....................................................................................................... 294
Web Popups ........................................................................................................................ 294
Exemplo Web Popup ................................................................................................................ 295
Recapitulando.................................................................................................................... 296
Tarefas.................................................................................................................................. 296

Captulo 16: ............................................................................................................... 297


Rotten Apple um Jogo de Defender a Torre ............................................... 297

Rotten Apples Inspirao e Recursos .................................................................... 297


Adicionando Animao com Sprites.......................................................................... 299
Preciso de um mapa! ....................................................................................................... 300
Duas Estradas Divergem ................................................................................................ 301
Espao, A Fronteira Final............................................................................................... 302
Corrida de Ratos ............................................................................................................... 303
Em suas Marcas.............................................................................................................. 309
Reduzindo Colises.......................................................................................................... 314
Planilha de Colises .................................................................................................................. 314
Pegue o Tiro Cuidando das Colises ...................................................................... 315
J estamos l? adicionando o clubinho ................................................................. 317
Adicionando Torres: Arrastando Torres na Tela ................................................. 328
Qual a Pontuao? ............................................................................................................ 332
Vamos Deixar o Jogo Rolar! .......................................................................................... 333
Closures .......................................................................................................................................... 333
Inicializao .................................................................................................................................. 334
Loop-De-Loop!............................................................................................................................. 337
Controle de Fases e Ondas ..................................................................................................... 339
Fora Rudos! ................................................................................................................................. 340
Adicionando opes pausar/resumir/salvar ........................................................ 340
Adicionando a Splash Screen ....................................................................................... 344
Recapitulando.................................................................................................................... 346
Tarefas.................................................................................................................................. 346

Captulo 17 ................................................................................................................ 347


Eventos do Sistema & Ferramentas .................................................................. 347

Eventos do Sistema .......................................................................................................... 347


Acelermetro ..................................................................................................................... 348
Projeto 17.0 Acelermetro ........................................................................................... 350
Giroscpio ........................................................................................................................... 354
Projeto 17.1 Giroscpio ................................................................................................. 355
Alertas .................................................................................................................................. 360
GPS ......................................................................................................................................... 360
Projeto 17.2 GPS ............................................................................................................... 361
Mapas .................................................................................................................................... 366
Objeto Map .................................................................................................................................... 367
Map Address ................................................................................................................................. 368
Map Location ................................................................................................................................ 368
Projeto 17.3 Mapas .......................................................................................................... 368
Recapitulando.................................................................................................................... 370
Tarefas.................................................................................................................................. 370

Captulo 18 ................................................................................................................ 371


Grficos Avanados ................................................................................................ 371

Graphics 2.0 ........................................................................................................................ 371


Pintar .................................................................................................................................... 371
Preenchimentos - Fiiltros, Composite, e Geradores ............................................ 372
Preenchimentos .......................................................................................................................... 372
Filtros .............................................................................................................................................. 372
Projeto 18.1 Filtrando com chromaKey ................................................................... 377
Efeitos Compostos ..................................................................................................................... 378
Geradores ...................................................................................................................................... 382
Projeto 18.2 Marching Ants .......................................................................................... 383
Containers ........................................................................................................................... 384
Projeto 18.3 Containers........................................................................................................... 385
Liquid Fun ........................................................................................................................... 386
Projeto 18.4 Liquid Fun ........................................................................................................... 386
Recapitulando.................................................................................................................... 389
Tarefas.................................................................................................................................. 390

Captulo 19 ................................................................................................................ 391


Recursos Adicionais ............................................................................................... 391
Autocomplete..................................................................................................................... 391
BBEdit ................................................................................................................................... 392
Corona Comic ..................................................................................................................... 392
Outlaw Project Manager ................................................................................................ 392
CoronaSSK ..................................................................................................................................... 393
Corona Remote .................................................................................................................. 393
Crawlspace .......................................................................................................................... 393
Kwik ...................................................................................................................................... 394
Lime ....................................................................................................................................... 394
Physics Editor .................................................................................................................... 394
SpriteHelper & Level Helper ........................................................................................ 395
Sublime Text 3 ................................................................................................................... 395
Texture Packer .................................................................................................................. 395
Tiled ...................................................................................................................................... 396
Websites teis ................................................................................................................... 396
Imagens Isomtricas Gratuitas ............................................................................................ 396
Msica ............................................................................................................................................. 396
Efeitos Sonoros ........................................................................................................................... 396
Tutoriais ......................................................................................................................................... 396

Apndice A ................................................................................................................. 397

A Linguagem Lua ..................................................................................................... 397

Lua.......................................................................................................................................... 397
Uma Introduo ................................................................................................................ 397
O que Lua? ........................................................................................................................ 397
Lua na Prtica .................................................................................................................... 399
Tipos e Variveis .............................................................................................................. 399
Declaraes de Tipos ................................................................................................................ 400
Nil ...................................................................................................................................................... 401
Booleans ......................................................................................................................................... 401
Numeric Values ........................................................................................................................... 402
Operadores Numricos............................................................................................................ 403
Diviso por Zero ......................................................................................................................... 403
Strings ............................................................................................................................................. 404
Declarando Strings .................................................................................................................... 404
Caracteres de Escape ................................................................................................................ 405
Concatenando Strings .............................................................................................................. 406
Comparando Valores ...................................................................................................... 406
Operadores Booleanos ................................................................................................... 407
O operador and (E) .................................................................................................................... 408
O operador or (OU) ................................................................................................................... 408
O operador not (Negao) ...................................................................................................... 408
Empilhando Operadores Booleanos .................................................................................. 409
Funes de Dados em Lua ............................................................................................. 410
Funes String ............................................................................................................................. 410
Achando o comprimento de uma String .......................................................................... 410
Substituio Global .................................................................................................................... 410
Encontrando um padro em uma String.......................................................................... 411
Achando um Padro em uma String .................................................................................. 412
Obtendo os valores em byte de Caracteres..................................................................... 413
Obtendo strings de bytes ........................................................................................................ 413
Trocando Maisculas e Minsculas ................................................................................... 413
Retornando Parte de uma String ......................................................................................... 414
Funes Matemticas ............................................................................................................... 414
Funo .................................................................................................................................. 415
Parmetros ......................................................................................................................... 415
Retorna................................................................................................................................. 415
Um Aviso sobre Blocos de Cdigo em Lua ............................................................... 416
Diretivas Condicionais ................................................................................................... 417
A Diretiva if ................................................................................................................................... 417
Usando else ................................................................................................................................... 417
Diretivas If Aninhadas.............................................................................................................. 418
Loops ..................................................................................................................................... 419

The for Loop ................................................................................................................................. 420


The while Loop ............................................................................................................................ 421
The repeat Loop .......................................................................................................................... 422
Using break ................................................................................................................................... 422
Custom Functions ............................................................................................................. 424
Defining a Function ................................................................................................................... 424
Returning Values from a Function...................................................................................... 425
Returning Nothing ..................................................................................................................... 426
Returning Multiple Values ..................................................................................................... 427
Multiple Assignment in Variable Definition ................................................................... 427
Multiple Assignment from Function Return Values ................................................... 428
Multiple Return Values as Function Parameters ......................................................... 428
Value Lists ..................................................................................................................................... 429
Summary.............................................................................................................................. 430

Appendix B ................................................................................................................ 432


Advanced Lua ........................................................................................................... 432

Lua.......................................................................................................................................... 432
Advanced Topics............................................................................................................... 432
Understanding Variables............................................................................................... 432
Global and Local Variables ..................................................................................................... 433
Understanding Scope ............................................................................................................... 434
Functions and Variable Scope .............................................................................................. 436
Closures .......................................................................................................................................... 437
Garbage Collection ........................................................................................................... 438
Functions with Variable Arguments ......................................................................... 439
The VarArg Operator ...................................................................................................... 441
Select................................................................................................................................................ 441
Recursion ............................................................................................................................ 442
The Table Type .................................................................................................................. 444
Associativity ................................................................................................................................. 445
Tables as Arrays................................................................................................................ 447
Array Indices ............................................................................................................................... 447
Creating Arrays .......................................................................................................................... 447
Arrays are Tables Too! .......................................................................................................... 448
Unpacking Arrays....................................................................................................................... 450
Finding the Length of an Array ............................................................................................ 450
Looping Over Arrays with ipairs ......................................................................................... 450
Adding Values to Arrays.......................................................................................................... 451
Removing Values from Arrays.............................................................................................. 452
Converting Arrays to Strings................................................................................................. 453
Sorting Arrays.............................................................................................................................. 454

Finding the Largest Index ....................................................................................................... 454


More on Tables .................................................................................................................. 456
Iterating Through Table Keys ............................................................................................... 456
The next Function ..................................................................................................................... 457
The pairs Function ................................................................................................................... 457
Object Oriented Programming in Lua....................................................................... 458
Creating an Object...................................................................................................................... 458
Designing Objects....................................................................................................................... 459
The self Property ........................................................................................................................ 460
Metamethods ..................................................................................................................... 462
Understanding Metamethods ............................................................................................... 462
Registering Metamethods with setmetatable ................................................................ 463
Operator Metamethods ........................................................................................................... 463
Operator .............................................................................................................................. 464
Metamethod Signature ................................................................................................... 464
Description ......................................................................................................................... 464
Accessing Values with the __index Metamethod .......................................................... 465
Assigning Values with the __newindex Metamethod.................................................. 467
Using rawset and rawget ........................................................................................................ 469
Creating a Pseudo-Class ................................................................................................. 470
Summary.............................................................................................................................. 472

Sobre o Autor
Brian Gene Burton, Ed.D. um professor, autor, e desenvolvedor de jogos. Ele
criou graduaes de jogos em duas universidades e gosta de pesquisar e
brincar com ambientes virtuais. Brian apresenta e publica
internacionalmente suas pesquisas e gosta de compartilhar o que ele
aprendeu sobre desenvolvimento de jogos e mobilidade. Quando no est
viajando ou ensinando, ele pode ser encontrado em sua casa nas Montanhas
Ozark no Missouri com sua bela esposa h mais de 25 anos, Rosemary.

Sobre o Tradutor
Luiz Fernando Duarte Jnior consultor, empreendedor e professor
universitrio na regio de Porto Alegre-RS, Brasil.
Bacharel em Cincia da Computao com ps-graduao em Computao
Mvel, aficcionado por desenvolvimento para smartphones desde 2006. De
l para c, j desenvolveu para as plataformas JME, PalmOS, Blackberry,
Android e iOS, tendo ministrado dezenas de palestras e cursos em faculdades
e escolas tcnicas de seu estado. Ele adora compartilhar seu conhecimento e
um pouco de seu trabalho pode ser conhecido no seu blog pessoal
LuizTools.com

Dedicatria:
Eu dedico este livro minha amada esposa cujo suporte e encorajamento
manteram-me focado e escrevendo.
Um agradecimento especial aos meus estudantes e comunidade Corona
pelo seu suporte e requisies por detalhes especficos que ajudaram
bastante no desenvolvimento deste livro.
Os loops sonoros e musicais foram graciosamente fornecidos por Shaun Reed
da Constant Seas. Voc pode checar sua banda em
http://www.constantseas.com
Grficos Tileset do Reiners Tilesets (http://www.reinerstilesets.de) foram
usados com permisso.
Todas outras imagens (a menos que especificado) e capa foram desenhados
por Brandon Burton.
Ajuda na edio e formatao provida por Brianna Burton
(http://www.LiteraryDiaries.com )
Um agradecimento Luiz Fernando Duarte Jnior, webmaster do blog
http://luiztools.com, por esta verso em portugus do livro.

Prefcio
Bem vindo ao Corona!
Seja voc somente um iniciante ou um programador experiente, Corona SDK
uma maneira fantstica de desenvolver aplicaes mveis ricamente
interativas. Eu desenvolvi Corona com os princpios de executar e testar.
Desta maneira, voc estar apto a iterar e construir algo rapidamente. Por
exemplo, em poucas linhas de cdigo, voc pode ter objetos quicando uns
contra os outros.
Hoje, Corona SDK a plataforma lder no desenvolvimento multi-plataforma
de jogos, aplicativos e eBooks. Como resultado formou-se uma enorme
comunidade colaborativa de desenvolvedores qual voc pode se juntar.
Eles possuem todos os histricos e nveis de experincia, de estdios
independentes, a adolescentes, octagenrios, editores e agncias digitais.
Neste livro, voc ver que Corona lhe uma plataforma simples e poderosa
para que voc pegue sua ideia e construa grandes aplicativos. Se voc usou
outras tecnologias, eu acho que voc ficar surpresso com o quo
rapidamente ver algo interessante na tela.
Ok, hora de comear. Com a ajuda do Corona, espero que voc se divirta
trazendo vida suas ideias.
Boa programao!
Walter Luh
Criador do CoronaSDK

Introduo
Bem vindo
Bem vindo ao Criando Aplicaes Mveis com Corona. Este livro o
resultado de anos de desenvolvimento para dispositivos mveis. No incio de
2010 comecei a buscar uma maneira de desenvolver melhor. A melhor
maneira. Buscava uma ferramenta que me permitisse desenvolver mais
rapidamente para mltiplas plataformas de dispositivos mveis. Estava
cansado e frustrado por ter de reescrever as mesmas aplicaes para iPhone,
iPad ou Android. Depois de tentar diversas ferramentas e ambientes de
desenvolvimento, eu encontrei o Corona SDK da Corona Labs
(http://www.coronalabs.com). Enquanto ele ainda estava no incio do
desenvolvimento, ele mostrava que o time da Corona Labs estava
comprometido a construir um conjunto de ferramentas de qualidade e que
uma comunidade devotada de desenvolvedores estava rapidamente se
formando em volta deste grande SDK (Kit de Desenvolvimento de Software).
Nos dias iniciais de meu aprendizado sobre Corona, eu me foquei em criar
tutoriais (disponveis no meu website
http://www.BurtonsMediaGroup.com/blog, enquanto que tutoriais em
Portugus podem ser encontrados no blog do tradutor:
http://www.luiztools.com). Depois de ensinar Corona a vrias turmas de
desenvolvimento mvel e com o encorajamento de meus estudantes, eu
iniciei o processo de criao do livro que poderia ser usado como um recurso
de ensino para o Corona SDK. Espero que voc goste de aprender sobre
Corona assim como eu!
Atenciosamente,
Brian G. Burton, Ed.D.

Para quem este livro foi feito


Enquanto meu foco e mpeto de escrever este livro era que ele fosse usado
como um livro de consulta, eu tambm escrevi acreditando que muitas
(esperanosamente) pessoas estariam interessadas em aprender mais sobre
Corona SDK e desenvolver para mltiplas plataformas ao mesmo tempo. Eu
tinha a expectativa de que qualquer um que usasse este livro j tivesse

conhecimentos bsicos em programao. No gastei muito tempo nos


fundamentos de programao. Existem muitos bons livros de programao e
recomendo que voc inicie neles e retorne ao desenvolvimento de aplicaes
quando j tiver dominado o bsico.

Como este livro est organizado


Enquanto escrevia este livro, eu mantive os tradicionais semestres de 16
semanas, assumindo um captulo por semana. Uma vez que isto no funciona
para todo mundo, ele deve ser o bastante para a maioria das pessoas que
esto iniciando com desenvolvimento mvel usando Corona SDK. Meu
primeiro rascunho terminou com mais de 20 captulos. Depois de
reorganizar o contedo e continuando seu desenvolvimento, ns estvamos
agora com 16 captulos e um captulo adicional de grandes recursos e um par
de apndices que foram graciosamente supridos pela Corona Labs sobre a
linguagem de script Lua.

Convenes usadas neste livro


Atravs deste livro usaremos Courier New para denotar cdigo que deve
ser digitado exatamente igual. Quando encontrar exemplos que esto com
Courier New, Italics voc dever digitar seus prprios valores.

Usando os exemplos de cdigo


Este livro foi escrito para ajudar voc a desenvolver aplicaes e jogos com
Corona SDK. Em geral, voc pode usar o cdigo neste livro em seus
programas e documentao. Voc no precisa nos contatar para pedir
permisso para reproduzir uma poro significante de cdigo. Voc no
precisa pedir permisso para escrever uma aplicao que use uma grande
quantidade de cdigo.
Agora, por outro lado, se eu ver aplicaes que exatamente reproduzem os
exemplos deste livro ou tutorial, eu no ficarei feliz. Eu no tenho problemas
com pessoas que usem estes exemplos como um ponto inicial, mas v alm
disso; seja original! Responder questes citando este livro ou parafrasear
trechos no exigem permisso (mas eu apreciaria uma citaco).

Eu reservo todos os direitos de venda ou distribuio dos exemplos em


qualquer formato fornecido neste livro. Se voc no est certo se seu uso cai
fora das regras que determinei acima, sinta-se livre para contatar-me atravs
de: DrBurton@BurtonsMediaGroup.com

Porque no usei ______ para ______


Existem muitos bons produtos disponveis que podem ajudar os camaradas
programadores a tornar seu trabalho muito mais produtivo (veja o captulo
17 para uma lista curta). Como este livro direcionado aos estudantes
universitrios e pessoas que iniciaram recentemente, eu tentei no usar
ferramentas externas. Se alguma ferramenta fosse necessria para que algum
projeto fosse concludo, eu tentaria utilizar somente as gratuitas ou de baixo
custo. Se eu no usei as suas favoritas, eu posso 1) no saber da existncia da
mesma; 2) no consegui obter uma licena de testes do produto; ou 3) no
gosto da ferramenta (provavelmente a primeira ou segunda opo). Se voc
conhece uma grande ferramenta que pode economizar muito tempo e
dinheiro aos desenvolvedores, por favor compartilhe-a com o mundo no local
de discusso no site deste livro:
http://www.BurtonsMediaGroup.com/books.

Apndices
Apndices A e B contendo informaes sobre a linguagem de programao
Lua foram fornecidos pela Corona Labs e esto includos com permisso.
Enquanto efetuamos algumas edies no contedo para melhorar a
legibilidade, o contedo original e os exemplos ainda permanecem.

Como entrar em Contato


Por favor enderece seus comentrios ou questionamentos para o site do
livro: http://www.BurtonsMediaGroup.com/books ou email
DrBurton@BurtonsMediaGroup.com. Suporte em portugus pode ser obtido
com o tradutor, Luiz Fernando, no e-mail me@luiztools.com

Porque Escolhi Auto-Publicar


A deciso de auto-publicar este livro foi alcanada depois de muita
considerao. Enquanto que existem numerosas editoras interessadas (tanto

acadmicas quanto tcnicas), eu decidi publicar ao menos a primeira edio


sem o uso de editoras tradicionais. Existem muitas razes pelas quais eu
tomei esta deciso, mesmo embora ela me leve a menos vendas.
Primeiro esto minhas preocupaes com o preo final do livro. Eu fico
doente de ver livros impressos custando U$75 ou mesmo mais de U$100. Eu
sinto que este preo errado e colocam uma barreira anti-estudantes.
Enquanto editoras diminuram ligeiramente o preo com o advento de
eBooks e eTextbooks, esta queda no foi o bastante em minha opinio.
Minha segunda preocupao foi o quo rapidamente os ambientes de
desenvolvimento mudam. Pessoalmente odeio ter de compar um novo livro a
cada nova verso de software. Eu tenho pilhas de livros que esto
completamente sem uso agora. Eu decidi publicar esta primeira vez como um
eBook, que permite-me atualizar e fornecer ao leitor, mais rapidamente. Eu
fornecerei as atualizaes menores entre as edies do eBook para todos que
adquirirem o eBook atravs do meu website:
http://www.BurtonsMediaGroup.com/books/book-update/ ou atravs do
blog do tradutor http://www.luiztools.com.
Como est sendo dito, se voc recebeu uma cpia deste eBook atravs de
torrent ou de um amigo, por favor adquira sua prpria cpia atravs de meu
website. Isto lhe fornecer acesso verso mais recente do eBook e ir
enconrajar-me a continuar com as atualizaes. Ainda que eu esteja fazendo
isto para ajudar meus estudantes, eu tenho contas para pagar.
Por outro lado, ao auto-publicar meu livro eu NO tenho um time de pessoas
para verificar tudo neste livro. Eu estou certo de que alguns erros de
digitao foram colocados por gremlins durante a noite. Sei que eu tenho
dislexia. Eu contrataria uma pessoa para verificar a verso final do livro, mas
tendo lido muitos livros que foram publicados por grandes companhias e
encontrado erros em seus livros, eu estou certo de que erros existem neste
tambm. Por favor, deixe-me sabendo de todos os erros que encontrar no
forum do site: http://www.burtonsmediagroup.com/forum

Captulo 1
Ol Mundo: Instalando e Indo em Frente!
Voc teve uma grande idia de jogo ou aplicao mvel. Maravilha! Agora,
como voc cria o mesmo e distribui-o para iPhone/Droid/iPad/Nook, (ou
qualquer dispositivo que voc escolha)? Existem muitos dispositivos para
escolher. Qual plataforma a melhor para minha aplicao?
Com tantas plataformas para escolher (Android, iOS, RIM, Windows,
nomeando algumas poucas), a escolha da plataforma para desenvolver pode
ser muito difcil. Cada plataforma usa uma linguagem diferente, tem uma API
diferente (Interface de Programao de Aplicaes) e requisitos. Devemos
nos prender a uma plataforma de desenvolvimento? Devemos escolher
somente uma?
Felizmente com o advento de ferramentas como Corona da Corona Labs,
agora possvel desenvolver para mltiplas plataformas ao mesmo tempo.
Porque escrever uma vez e publicar para dispositivos diferentes a melhor
soluo no mundo de desenvolvimento mvel.
Corona da Corona Labs permite que os camaradas desenvolvedores
publiquem para dispositivos Android e iOS (Apple), tanto smartphones
quanto tablets. Este livro foi escrito para ajudar estudantes de todo lugar a
obterem as habilidades necessrias para transformarem sua idia em uma
aplicao usando Corona SDK.

O que este livro no


Enquanto que este livro designado para ensinar o bsico de
desenvolvimento de aplicaes mveis, ele no designado para ensinar
fundamentos de programao. Estou presumindo que voc j sabe o bsico
de programao de computadores. Se voc no sabe como usar um bloco

2
if/else, um loop ou uma funo, voc provavelmente no est preparado para
este livro.
Enquanto eu fiz todas as tentativas de cobrir o bsico que a maioria dos
estudantes querem aprender durante o primeiro semestre de um curso de
desenvolvimento mvel, devido a problemas com tempo e espao, somente
os mais importantes puderam ser includos. Existe um segundo volume em
desenvolvimento que cobrir aspectos mais avanados e um volume voltado
exclusivamente a projetos de jogos com Corona.

Iniciando
Corona: Alguma Histria
Corona Labs foi criada em 2008 como uma companhia financiada por
investidores de risco em Palo Alto, Califrnia. Antes de Corona, o time da
Corona Labs foi responsvel por criar muitas ferramentas padres da
indstria que tenho certeza de que voc conhece. No tempo que eu estive
desenvolvendo aplicaes com Corona, eu encontrei na Corona Labs um dos
negcios mais amigveis e teis que eu tive o prazer de trabalhar. Alm disso,
a comunidade muito amigvel e solcita. Se voc decidir juntar-se
comunidade Corona, esteja certo de continuar com este grande esprito de
solidariedade!

Software: Corona
No surpresa de que voc precisar do Corona SDK para comear. Para
aprender, eu recomendo baixar a verso trial (de teste) no site da Corona
Labs http://www.CoronaLabs.com/. Clique no boto de download e registrese (independente se um usurio pagante ou gratuito). Se voc for um
estudante ou universitrio, voc pode obter um desconto acessando
http://www.coronalabs.com/store/corona-for-education/.

Software: Android

3
Para comear o desenvolvimento de aplicaes para Android com Corona,
voc no precisar de nenhum software adicional Android. Entretanto, voc
precisar do Java SDK (tipicamente conhecido como JDK) para estar apto a
compilar em ambiente Microsoft Windows. V em
http://www.oracle.com/technetwork/java/javase/downloads/index.html e
baixe a Java Platform Standard Edition clicando no boto Download JDK.
Aviso: Voc somente precisa baixar o download do JDK se voc est em um
sistema Microsoft Windows. Se voc est usando um Macintosh com OS X, ele
j est instalado.

Exemplos e Imagens
Um ltimo download deve ser feito: os exemplos de cdigos, imagens e
outras ferramentas que voc pode precisar com os projetos esto listadas
neste livro. Eles esto todos disponveis em
http://www.BurtonsMediaGroup.com/books.

Software: iOS
Para desenvolvimento direto no simulador, voc no tem que baixar nada da
Apple. Entretanto, quando for hora de testar em um dispositivo ou preparar a
aplicao para o iTunes, voc necessitar do Apple iOS SDK. Se voc j um
desenvolvedor Apple, voc j est apto a realizar a instalao. Se voc no
um desenvolvedor Apple atualmente (U$99/ano para uma assinatura padro
de desenvolvedor), voc pode se registrar como desenvolvedor gratuito e
baixar o Xcode atravs da Apple App Store por U$4.99).

Hardware para Desenvolver: Corona


Corona no demanda muito do seu computador para desenvolvimento.
Enquanto voc estiver usando ao menos um OSX 10.6 ou superior em um
Mac, ou Windows XP com CPU de 1GHz em um PC, voc estar bem.
Se voc est planejando desenvolver aplicaes para iPhone, iPod Touch
e/ou iPad, voc precisar de um Mac. Este um requisito da Apple. Para
manter todo mundo de bom humor, Corona somente publicar para um

4
dispositivo iOS se voc estiver usando um Mac. Voc tambm pode criar
aplicaes Android utilizando um Mac.
Se voc tem somente um sistema Windows, voc pode desenvolver e publicar
aplicaes Android. Voc tambm est apto a desenvolver para dispositivos
iOS, entretanto no poder publicar e vender seu trabalho para iOS fora de
um Mac. Eu uso um MacBook e um PC, regularmente variando entre ambos
durante o desenvolvimento de aplicaes.
Matriz de Hardware Necessrio:
Hardware
Android OS
Desenvolver
Instalar
Macintosh
X
X
Windows PC
X
X

Apple iOS
Desenvolver
Instalar
X
X
X

Hardware para Desenvolver: Dispositivos de Teste


Se voc pretende desenvolver e vender aplicaes para dispositivos mveis
voc deve ter um dispositivo mvel para testar suas criaes. Eu estive em
projetos onde era necessrio ter um hardware que eu no tinha. Usar
somente o simulador cobrir 75% do que pode acontear com sua aplicao,
mas no lhe permitir presenciar todos os problemas em potencial. Alguns
dos projetos que citei anteriormente funcionavam perfeitamente no
simulador, mas travavam no dispositivo mvel e eu era rejeitado pela
Apple. A experincia era mais do que apenas frustrante e ensinou-me uma
valiosa lio: se voc est desenvolvendo para uma plataforma, tenha
dispositivos de teste!

Android
Corona somente compila para Android OS 2.2 ou superiores. Qualquer
dispositivo que voc planeje utilizar deve ter um processador ARM V7. Existe
uma infinidade de dispositivos que preenchem estes requisitos, ento voc
no ter problema em encontrar um para executar seus testes.

iOS
Para desenvolvimento no iOS, voc precisar de uma licena de
desenvolvedor e tambm de um iPhone, iPod Touch, ou iPad. Obviamente,
tendo um telefone antigo ou iPad uma boa idia para testar FPS (Frames
por Segundo) se sua aplicao usa grficos intensamente. recomendado
que voc use a verso mais recente do iOS em seus dispositivos. Para estar
apto a instalar sua aplicao em um dispositivo iOS, voc precisar de um
Mac e uma conta de desenvolvedor Standard, Enterprise, ou University da
Apple.

Consideraes de Publicao
Eu estou certo de que voc j est imaginando as primeiras vendas de sua
aplicao. Mas antes que voc possa vend-la, voc precisar decidir aonde
voc ir public-la. Existem muitas consideraes especficas de cada
distribuidor que voc precisa ter em mente.

Android (Google)
O mercado para Android muito diferente da loja do iTunes da Apple. No
mercado Android voc tem inmeros distribuidores diferentes disponveis
para vender suas aplicaes, incluindo a Google Play
(http://pay.google.com), Amazon, Barnes & Noble, entre outros. Voc
precisar criar uma conta com cada distribuidor que voc deseja utilizar
como canal de vendas.
Por U$25 voc pode criar uma conta de desenvolvedor para Android com o
Google. Voc NO tem que se cadastrar em nada at que esteja pronto para
comear a vender suas aplicaes. Para criar sua conta visite
http://developer.android.com/index.html.
Uma vez que voc tenha sua conta configurada voc precisar decidir se sua
aplicao ser gratuita ou paga. Alm disso, a maioria das lojas de aplicaes
lhe cobrar algo em torno de 30% sobre as vendas por estar lhe oferencendo
os servios. Em outras palavras, se voc cobra 99 centavos por uma
aplicao, voc receber 69.3 centavos por cada venda.

iOS (Apple)
Uma das maiores vantagens do mercado para iOS que h somente uma loja
de aplicativos. Desenvolver aplicaes para o iOS lhe custar U$99 por ano
para uma licena padro de desenvolvedor Apple. Existem licenas
empresarias que somente so necessrias caso voc desenvolva em uma
grande empresa. Para as finanas de um estudante, a taxa de U$99 pode ser
muito cara, ento eu recomendo esperar tanto quanto possvel antes de
adquirir a licena que deve ser renovada anualmente. Voc pode saber mais
sobre licenas de desenvolvimento e sobre o iOS SDK em:
http://developer.apple.com/programs/register/. Apple tambm lhe cobrar
30% de comisso sobre as suas vendas.

Programando no Corona: Lua


Neste texto, a linguagem que voc usar em suas experincias com
programao Lua. Lua uma linguagem de script que foi desenvolvida no
incio da dcada de 90. Ela gratuita, distribuda sobre a licena MIT e
largamente utilizada para o nvel de lgica de grandes jogos e encaixa-se
naturalmente no desenvolvimento mobile pelo tamanho diminuto do seu
interpretador. Corona Labs foi boazinha o bastante para fornecer dois
apndices sobre Lua (Apndices A & B) que esto includos neste livro. Se
voc quer aprender mais sobre Lua, visite o site da linguagem
http://www.lua.org. A primeira edio de Programando em Lua est
disponvel online em http://www.lua.org/pil. Se voc j programou em
qualquer outra linguagem moderna, voc achar fcil aprender Lua enquanto
ns avanaremos nas lies.

Programando no Corona: Editores


A escolha de um editor ser sempre uma deciso pessoal. Corona no
impactado por nenhum editor especfico, ento voc deve escolher um no
qual se sinta confortvel. Eu recomendo um que permita integrao com Lua
para tornar sua edio mais fcil.
Alguns dos mais populares editores para uso com Corona incluem (mas no
esto limitados) BBEdit, Eclipse, Notepad++, TextMate, TextWrangler, e

7
Xcode. claro qu voc pode ignorar todos esses e usar o bloco de notas ou
textedit se voc desejar.
BBEdit (Mac) por Bare Bones Software, U$99.99.
Eu tenho usado BBEdit no meu Mac h algum tempo e meu editor favorito
quando estou trabalhando no Mac. BBEdit tem configuraes internas
(incluindo Lua), que permitem facilmente a voc definir a linguagem na qual
voc est desenvolvendo. http://www.barebones.com
Outlaw (antigo Corona Project Manager) (Mac/Win) por J.A. Whye,
U$49.99. Outlaw tem um editor interno e juntamente com sua grande
habilidade de simplificar o gerenciamento de um projeto Corona, o custo
benefcio timo. Veja o Captulo 18 para obter um cupom e economizar
30% no Outlaw. http://www.outlawgametools.com
Eclipse (Mac/Win) Cdigo aberto, $0.
Eclipse o editor que uso quando estou trabalhando no meu PC. Eclipse tem
uma grande comunidade de suporte. Embora Eclipse tenha sido
originalmente desenvolvido como uma IDE Java (Ambiente de
Desenvolvimento Integrado) ele atualmente uma base para muitos editores
no mercado. Um plugin para Lua/Corona est disponvel. http://eclipse.org
Notepad++ (Win) Cdigo aberto, $0
Um editor de linguagens popular e de cdigo aberto para ambientes PC.
http://notepad-plus-plus.org/
Sublime (Mac/Win) trial ilimitado, $70
Sublime atualmente o editor oficial para Corona SDK. Corona Labs criou
um plugin que simplifica muitas tarefas. Voc pode baixar o Sublime em:
http://www.sublimetext.com/ e o plugin do Corona em:
http://coronalabs.com/products/editor/
TextMate (Mac) por Micromates, 39 (cerca de U$57). Textmate muito
popular na comunidade Corona com um plugin disponvel no site da Corona
Labs. http://macromates.com
TextWrangler (Mac) por Bare Bones Software, $0.

8
TextWrangler tem a vantagem de ser um editor gratuito para o Mac. Embora
ele no tenha todos os recursos do BBEdit, ele far o trabalho necessrio e
oferece um suporte integrado ao Lua. http://www.barebones.com
Xcode (Mac) por Apple, $0*.
Xcode uma parte integrante do iOS SDK. Se voc est acostumado a
desenvolver utilizando Objective-C, Xcode a escolha natural. Enquanto
Xcode est includo no iOS SDK, ele somente gratuito se voc j possui uma
conta de desenvolvedor na Apple. Se voc possuir somente uma conta
gratuita, o iOS SDK custa U$4.99 (incluindo o Xcode).
Dica do Tradutor: eu uso atualmente o Lua Glider, que uma verso
modificada do NetBeans, popular IDE desenvolvida em Java. Ele possui
gerenciador de projetos e arquivos, depurador e editor de cdigo com
autocomplete e highlight syntax. Sua verso gratuita o suficiente para
desenvolvedores independentes.

Configurando Corona
A instalao do Corona SDK algo bem direto. Somente clique no boto de
download em http://www.coronalabs.com, registre-se, selecione sua
plataforma (Mac ou Windows) e siga as orientaes abaixo baseado em seu
sistema operacional.

Download do Corona SDK

Macintosh
Depois que voc executar o arquivo baixado e aceitar a licena do software,
arraste a pasta do Corona SDK para a pasta Aplicaes.

Instalando Corona SDK em um Macintosh

10
Isto ir copiar todos os arquivos do Corona SDK para sua pasta de aplicaes.
Quando abrir a pasta do Corona SDK, voc encontrar amostras de cdigo,
ferramentas, uma biblioteca de recursos bem como o Terminal e o Simulator
(as ferramentas primrias de desenvolvimento que utilizaremos).

Windows
Corona SDK para Windows possui baixos requisitos de hardware:
Sistema operacional Windows 7, Vista, ou XP
Processador de 1 GHZ (recomendado)
38 MB de espao em disco (mnimo)
1 GB de memria RAM (recomendado)
Sistema de grficos OpenGL 1.3 ou superior
Em todas as instalaes que eu fiz de Corona, o nico problema que eu tive
foi quando meu sistema no possua OpenGL 1.3 ou superior instalado. Isto
foi facilmente corrigido baixando drivers de vdeo atualizados para meu
sistema. Corona SDK executa com verses antigas de OpenGL, porm com
baixa performance. Voc deve atualizar seus drivers de vdeo o quanto antes
para corrigir o problema se ele existir. Mais informaes sobre OpenGL
podem ser encontradas em http://www.opengl.org.
Se voc ainda no baixou o Java JDK (Kit para Desenvolvedores Java), voc
deve faz-lo agora. V em
http://www.oracle.com/technetwork/java/javase/downloads/index.html e
baixe o Java Platform Standard Edition clicando no boto Download JDK. Na
prxima pgina, selecione Windows x86 na lista de downloads disponveis.
O JDK obrigatrio para compilar aplicaes para dispositivos em sistemas
Microsoft Windows. Este um download gratuito no site da Oracle. Depois
qeu voc tiver baixado o instalador, siga os procedimentos normais para
instalar o JDK no seu sistema.

Programando no Corona: Ol Mundo (V1.0)


A primeira vez que voc executar o Corona Terminal ou Simulator ele pedir

11
que voc se autentique com as informaes de registro que voc usou no site
da Corona Labs. Complete estas informaes uma nica vez e voc estar
preparado para continuar.

Registro do Desenvolvedor Corona

Voc deve sempre executar o Corona Terminal em um Macintosh ao invs do


Simulator para compilar e testar aplicaes. Em um sistema Windows,
executando o Corona Simulator, o Terminal tambm executado. O Corona
Terminal lhe d informaes importantes quando voc est compilando suas
aplicaes e permite encontrar os erros mais facilmente. O Corona Terminal
automaticamente executar o Corona Simulator.

Projeto 1.0: Ol Mundo


Eu pessoalmente sempre odiei livros de programao e aulas que gastavam
seu primeiro captulo ou semana cuidando de todos os detalhes. Eu
comprava o livro ou assistia a aula porque eu queria programar, no saber de
histria da programao ou ficar seguindo livros entediantes. Ento vamos
pular essa parte e partir para o necessrio projeto Ol Mundo.
Pare de revirar os olhos! Antes de eu perder voc, deixe-me garantir que voc
ir obter um valioso recurso deste Ol Mundo, algo que voc ir usar pro
resto do seu tempo enquanto desenvolvedor Corona.
Foi o bastante para conseguir sua ateno? Ento vamos comear!

12

Configuraes do Projeto
Se voc seguir este processo cada vez que voc iniciar um novo projeto, ele
tornar sua vida muito mais fcil:
Primeiro, crie uma pasta para o projeto chamada Hello World (Ol Mundo
em Portugus). Ela pode ficar em sua rea de Trabalho ou onde preferir. Eu
coloco todos meus projetos Corona em uma pasta Projetos Corona.

Crie uma pasta Hello World para seu projeto

Abra seu editor favorito (eu estou usando BBEdit nos screenshots). Crie um
arquivo em branco e salve como main.lua na pasta Hello World que acabou
de criar.

13

Salve o arquivo main.lua na sua pasta Hello World

Agora deve existir um arquivo main.lua na sua pasta Hello World.


Voltando ao seu editor, digite:
print("Hello World")
e salve seu arquivo main.lua.

14
A seguir, voc precisar executar o Corona. Se voc est em um ambiente
Microsoft Windows, execute o Corona Simulator. Em um Macintosh, execute
o Corona Terminal.

Inicializao do Corona em um Mac no use o boto de novo projeto ainda!

Ao executar voc ver a janela Terminal e a caix de dilogo Welcome to


Corona. Selecione Open a Project nesta caixa de dilogo e navegue at a
pasta Hello World que foi criada previamente.

15

Abra Hello World & selecione o dispositivo a simular

Quando voc est abrindo um projeto, voc estar apto a selecionar qual
dispositivo voc gostaria de simular no Corona Simulator. Por enquanto
selecione iPhone ou Droid e clique no boto Open.
Tao logo voc abra o projeto, o simulador ir executar o mesmo.
Voc percebeu? Est certo, nada aconteceu...no simulador. Olhe na janela do
Terminal. No final voc ver seu Hello World exibido.

Hello World na janela do Corona Terminal

16
Parabns! Voc fez sua primeira aplicao Corona! Agora antes de ficar
desapontado, voc deve aprender a usar uma ferramenta muito importante
para descobrir problemas em suas aplicaes. Quando algo no est
funcionando corretamente ou no est exibindo o que voc esperava, voc
pode mandar a si mesmo mensagens atravs da janela do Terminal. Acredite
quando eu digo que este comando ir lhe salvar horas de dores-de-cabea
com erros ocultos!
Aviso: Se voc ainda no viu nada, existem
dois erros comuns que as pessoas cometem:
1) eles no salvam seu arquivo main.lua (eu
ainda fao isso) ou 2) quando salvam o
arquivo main.lua, ele no salvo como um
arquivo de texto.

Projeto 1.1: Ol Mundo (v2.0)


Voltando ao seu editor (voc pode usar o
mesmo arquivo), digite:
local textobj =
display.newText("Hello World",
100, 100, native.systemFont, 24)
textobj:setFillColor(255, 255,
255)
Lua, a linguagem por trs do Corona, case
sensitive ento newText diferente de newtext. Tente newtext e olhe o erro
que aparece na janela do terminal. Salve o arquivo e ento reabra o
simulador.
Voc deve ver agora Hello World exibido no simulador, como na imagem
esquerda.
O que voc fez? Aqui vai a explicao:

17
Primeiro ns criamos uma varivel local textobj. Ns definimos que textobj
igual ao objeto que ns criamos ao chamar o mtodo display.newText,
passando ele o texto Hello World, a localizao X & Y (partindo do topo
esquerdo da tela), fonte e 24 (o tamanho do texto a ser criado).
Os parmetros do display.newText so:
display.newText(text, X, Y, font, text size)
No parmetro font, voc pode usar o padro do sistema passando
native.systemFont ou native.systemFontBold. Voc tambm pode entrar o
tipo de fonte como uma string como arial ou arial black. Se voc definir
este parmetro como nil, ele ir assumir native.systemFont.
Na segunda linha de comando, ns definimos a cor do textobj que ser criada
usando o sistema de cores R, G, B (cada cor (vermelho, verde e azul) tendo
um valor entre 0 255) para branco:
textobj:setFillColor(R, G, B)
Por padro, objetos de texto so brancos, ento no precisvamos realmente
fazer alguma coisa para torn-lo branco. Apenas queria lhe mostrar como
configurar a cor de um objeto de texto quando voc cria um. Mais tarde
veremos como esconder um objeto de texto aos poucos (ou exib-lo).
Agora voc fez sua primeira aplicao REAL com Corona!
Aviso: Quando se copia cdigo de um site (ou mesmo deste livro), algumas
vezes as aspas podem trocar de aspas diretas para aspas inteligentes. Isto
IR causar erros no Corona. Esteja certo de que suas aspas so sempre "" e
nunca .

Objetos
Voc deve ter percebido o uso do termo objeto espalhado pelo texto. O termo
objeto denota algo que est sendo usado dentro do seu projeto; texto, botes,

18
ou sons, eles so todos objetos. Como na vida real, eu posso mover ou
interagir com um objeto (uma lmpada, mesa ou carro), um objeto em seu
software qualquer coisa que voc possa interagir.
Objetos do mundo real tem propriedades que ajudam a descrever a
localizao do mesmo, cor, ou qualquer coisa que possa ser alterada sobre o
objeto. Se eu tenho um carro, eu posso descrever a sua localizao por sua
latitude e longitude.
Em programao (incluindo Corona), ns estamos aptos a interagir com cada
propriedade de um objeto para realizar alteraes; como quando um textobj
foi criado, ns definimos as propriedades x, y, font, e size (tamanho) bem
como a string que seria exibida.

Recapitulando
Este foi um captulo bem atarefado! Corona deve estar instalado em seu
sistema agora, voc foi introduzido aos editores, viu consideraes de
hardware e informaes de publicao. Ns ainda desenvolvemos duas
aplicaes! A primeira introduzindo o importantssimo comando print, e a
segunda exibindo texto de verdade no simulador. Finalmente, o conceito de
um objeto na programao foi brevemente mencionado.

Tarefas
1. Tente vriaos erros de digitao e veja as mensagens de erros
resultants na janela do terminal.
a. Erre o nome newText. Qual o resultado?
b. Erro o native.systemFont. Qual o resultado?
c. Tente setFillColor. Qual o resultado?
2. Troque o objeto de texto para vermelho.
3. Reposicione o texto no rodap do simulador sem que a letras saiam
for a da tela.
4. Coloque 5 diferentes mensagens em diferentes lugares na tela, cada
uma com font, tamanho e cor diferentes.

You might also like