Monografia - Gabriela Davila - Corona SDK-Libre
-
Upload
rafael-nunes -
Category
Documents
-
view
101 -
download
0
Transcript of Monografia - Gabriela Davila - Corona SDK-Libre
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
1/52
Faculdade de Tecnologia de AmericanaCurso Superior de Tecnologia em Desenvolvimento de Jogos Digitais
CORONA SDK: UMA INTRODUO NODESENVOLVIMENTO MVEL DE JOGOS COM
FRAMEWORK MULTI-PLATAFORMA
GABRIELA DAVILA
Americana, SP2012
Gabriela
Davila
Assinado de forma digital por
Gabriela Davila
DN: cn=Gabriela Davila, o, ou,
c=BR
Dados: 2012.06.24 20:50:03 -03'00'
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
2/52
II
Faculdade de Tecnologia de AmericanaCurso Superior de
CORONA SDK: UMA INTRODUO NODESENVOLVIMENTO MVEL DE JOGOS COM
FRAMEWORK MULTI-PLATAFORMA
GABRIELA DAVILA
Trabalho de Concluso de Cursodesenvolvido em cumprimento exigncia curricular do Curso Superior
de Tecnologia em Desenvolvimento deJogos Digitais, sob a orientao doProf. Benedito A. Cruz.
rea: Jogos Digitais
Americana, SP2012
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
3/52
III
BANCA EXAMINADORA
Prof. Benedito Aparecido Cruz (Orientador)
Prof. Jos William Pinto Gomes
Prof. Antonio Alfredo Lacerda
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
4/52
IV
AGRADECIMENTOS
Gostaria de agradecer ao meu companheiro que insistentemente ficou me
questionando do andamento desta monografia, ao meu professor orientador, e ao
Professor Me. Cleberson Forte pelo incentivo.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
5/52
V
DEDICATRIA
Dedico minha Me.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
6/52
VI
RESUMO
O desenvolvimento para plataformas mveis est em alta nos ltimos 4 anos.
E como o iOS e o Android praticamente dominam o mercado de smartphones, fazsentido utilizar uma ferramenta que possa unir as duas plataformas e economizar
tempo de produo de um jogo, por isso o Corona SDK, existem outros frameworks
multiplataforma, porm o Corona tem ganhado bastante destaque no ltimo ano
devido a facilidade de programar nele. Espero que esse trabalho agregue mais
conhecimento para a comunidade de jogos do Brasil, visto que h quase uma
inexistncia de material em nossa lngua.
Palavras Chave: Corona, iOS, Android, Jogos
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
7/52
VII
ABSTRACT
The development for mobile platforms is rising in the last four years. And asthe iOS and Android practically dominate the smartphone market, it makes sense to
use a tool that can unite the two platforms and save production time of a game,
hence the Corona SDK, there are other frameworks multi-platform, but the Corona is
gained enough prominence in the last year due easiness of programming it. I hope
that this work adds more knowledge to the game development community in Brazil,
since there is an absence of material in our language.
Keywords: Corona, iOS, Android, Games.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
8/52
VIII
SUMRIO
AGRADECIMENTOS ................................................................................................. IVDEDICATRIA ............................................................................................................ VRESUMO .................................................................................................................... VIABSTRACT ............................................................................................................... VII1 INTRODUO ..................................................................................................... 131.1 Requisitos Mnimos ....................................................................................... 151.2 O simulador ................................................................................................... 161.3 Licenciamento ............................................................................................... 172 ESTRUTURA DE UM PROJETO ........................................................................ 202.1 O arquivo config.lua...................................................................................... 202.2 O arquivo build.settings................................................................................ 202.3 Adicionando um projeto ao simulador ........................................................... 213 BREVE INTRODUO AO Lua.......................................................................... 224 ELEMENTOS GRFICOS: OS DisplayObjects................................................ 244.1 Principais propriedades ................................................................................ 244.2 Principais mtodos ........................................................................................ 264.3 Manipulao de imagens e texto .................................................................. 27
4.3.1 Adicionar imagem ............................................................................... 274.3.2 Redimensionar imagens ..................................................................... 28
4.4 Lidando com tamanhos diferentes de tela .................................................... 294.4.1 Redimensionamento automtico de contedo ................................. 304.4.2 Alinhamento automtico de contedo .............................................. 314.4.3 Redimensionamento automtico de imagem ................................... 314.4.4 Texto ..................................................................................................... 32
5 A API DE Physics ............................................................................................... 345.1 Configurando o Physics................................................................................ 34
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
9/52
IX
5.1.1 Iniciando, pausando e parandophysics........................................... 345.1.2 Gravidade ............................................................................................. 355.1.3 Outros mtodos ................................................................................... 36
5.2 Colises ........................................................................................................ 385.3 Corpos Fsicos .............................................................................................. 39
5.3.1 O construtorphysics.addBody.......................................................... 395.3.2 Sensores .............................................................................................. 41
6 INSERO DE UDIO ........................................................................................ 426.1 Carregando o udio ...................................................................................... 436.2 Controle de udio .......................................................................................... 44
6.2.1 audio.play............................................................................................. 446.2.2 Demais mtodos de controle ............................................................. 456.2.3 Controle de Volume ............................................................................. 45
7 GERAO DA BUILD......................................................................................... 477.1 Executvel para o iOS .................................................................................. 477.2 Executvel para Android ............................................................................... 488 LIMITAES ....................................................................................................... 499 CONSIDERAES FINAIS ................................................................................. 5010 REFERNCIAS BIBLIOGRFICAS ................................................................. 51
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
10/52
X
LISTA DE FIGURAS E TABELAS
Figura 1 - Comparativo entre sistemas operacionais (NPD GROUP, 2011) ............. 14Figura 2 - Tela Corona SDK no Mac OS X (FERNANDEZ, 2012) ............................ 16Figura 3 - Janela de registro do Corona (FERNANDEZ, 2012) ................................. 17Figura 4 - Janela de alerta exibida ao iniciar um jogo no Android, uma imagem
similar a essa exibida no iPhone ..................................................................... 17Figura 5 - Estrutura de um projeto com Corona SDK ................................................ 20Figura 6 - Exemplo de cdigo em Lua....................................................................... 23Figura 7 - Exemplo de chamada de mtodos ............................................................ 26Figura 8 - Aplicao de object.rotate()....................................................................... 27Figura 9 - Imagem carregada via display.newImage().............................................. 28Figura 10 - Diversos dispositivos Android (ANIMOCA, 2012) ................................... 30Figura 11 - Exemplo de redimensionamento de imagem dinmico........................... 32Figura 12 - Exemplo de chamada de imagem dinmica ........................................... 32Figura 13 - Criando o Physics namespace................................................................ 34Figura 14 - Redefinio de gravidade........................................................................ 35Figura 15 - Recuperando valor da gravidade ............................................................ 36Figura 16 - Influncia do acelermetro na gravidade (ANSCA, 2012) ...................... 36Figura 17 - Modo debug(FERNANDEZ, 2012) ......................................................... 37Figura 18 - Modo hybrid(FERNANDEZ, 2012) ......................................................... 37Figura 19 - Modo normal (FERNANDEZ, 2012) ........................................................ 38Figura 20 - Exemplos de tipos de corpos fsicos (ANSCA, 2012, traduo nossa).. 41Figura 21 - Exemplos de carregamentos de udio (FERNANDEZ, 2012) ................ 43Figura 22 - Caixa de dilogo (FERNANDEZ, 2012) .................................................. 47
Figura 23 - Caixa de dilogo (FERNANDEZ, 2012) .................................................. 48
Tabela 1 - Comparativo entre licenas do Corona SDK ............................................ 18Tabela 2 - Valores permitidos paraxAligne yAlign................................................... 31Tabela 3 - Sintaxes de controle de udio .................................................................. 45Tabela 4 - Controles de volume ................................................................................. 46
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
11/52
XI
LISTA DE ABREVIAES E SIGLAS
aac Advanced Audio Coding
apk Android Aplication PackageANSI American National Standards Institute
API Application Programming Interface
BMP Bitmap
caf Core Audio File
CPU Central Processing Unit
EUA Estados Unidos da Amrica
Ex/ ex ExemploGB Gigabyte
GHz Gigahertz
GIF Graphics Interchange Forma
JPEG Join Photographic Experts Group
JPG Join Photographic Group
m Unidade de metro
MB MegabyteMIT Massachusetts Institute of Technology
MPEG Moving Picture Experts Group
MP3 MPEG-1/2 Audio Layer 3
msi Microsoft Installer
ogg Ogg Vorbis Audio
OpenAL Open Audio Library
OpenGL Open Graphic Library
PNG Portable Network Graphics
PUC Pontifcia Universidade Catlica
s Unidade de Segundo
SI Sistema Internacional
SDK Software Development Kit
RAM Random Access Memory
ROW Rest of the world
TIFF Tagged Image File Format
v verso
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
12/52
XII
wav WAVEform audio format
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
13/52
13
1 INTRODUO
Ao longo dos anos a distribuio de jogos e aplicativos para dispositivos
mveis era feita de acordo com os contratos com as operadoras de celulares. Aoqual o sucesso de um aplicativo era diretamente interligado com o tamanho da
empresa e o peso do acordo comercial. Desta maneira grandes desenvolvedoras
conseguiam grandes destaques nos portais de vendas.
Esse cenrio mudou e popularizou o desenvolvimento de software mobile
com o lanamento da Apple App Store em julho de 2008. Segundo Mary Meeker
(2010), analista para Morgan Stanley, esse crescimento constante dos smartphones
a partir de 2008 foi um pouco mais de 20% de penetrao no mercado de celulares
no Reino Unido e nos Estados Unidos da Amrica e que no resto do mundo (ROW)
essa taxa de 20% s chegar a ser verdade no final de 2012.
Um desenvolvimento de softwarepara celulares engloba utilizar ferramentas e
APIs especficas para cada plataforma. O foco aqui poder utilizar uma ferramenta
para desenvolvimento que permita gerar um universal, um executvel, para o
sistema operacional escolhido.
Os sistemas a serem destacados nesse texto so o iOS e o Android, visto a
posio das duas ferramentas no marketshare atual. E que todas as outras
plataformas juntas no ultrapassam 10%.
Segundo o NPD GROUP (ALLEN; GRAUPERA; LUNDRIGAN, 2010, p. 10) a
RIM no Q2 de 2006 tinha 50% de todas as vendas de smartphones. Porm no Q3 de
2011 a sua expressividade era de 8%. A Nokia numa tentativa tardia de voltar ao
mercado, fez uma parceria com a Microsoft em 2011 e espera recuperar seusucesso entre a consistncia do iPhone e a flexibilidade do Android.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
14/52
14
Figura 1 - Comparativo entre sistemas operacionais (NPD GROUP, 2011)
Com base nesses dados, percebe-se que caso um jogo ou aplicativo seja
desenvolvido para mais de uma plataforma, ele poder alcanar quase 91% do
mercado de celulares, por isso o desenvolvimento multiplataforma fica como uma
das opes caso no seja vivel a produo de dois aplicativos distintos.
Ser abordado aqui o Corona SDK voltado para iOS e Android, como
possvel fazer essa programao multi-plataforma com o uso das principais APIs do
Corona.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
15/52
15
SOBRE O CORONA SDK
O Corona SDK pertence a Ansca Mobile e foi fundada em 2008 por um time
de programadores que antes trabalharam e contriburam para softwares como
Illustrator, Photoshope Flash Authoringpara a Adobe e Apple.
A plataforma foi lanada em Setembro de 2010 e atualmente o software
encontra-se na verso 2011.704, sua numerao sempre leva em considerao o
ano da build. O SDK gera aplicaes para 4 plataformas: iOS, Android, Kindle Fire e
Nook. Estes ltimos dois so possveis somente porque a base do sistema
operacional uma verso modificada do Android.
1.1 Requisitos Mnimos
Segundo a Ansca Mobile, o mnimo necessrio para instalar o Corona :
No Macintosh:
Mac OS X 10.6 ou superior
Processador Intel
CPU 64 bits Sistema grfico OpenGL 1.4 ou superior
Xcode para Mac OS X
Assinatura no Apple Developer Program (necessrio para testar seus
aplicativos no seu dispositivo)
Editor de Texto
No Windows:
Windows 7, Vista ou XP
Processador de 1GHz (recomendado)
38 MB de disco livre (mnimo)
1 GB de memria RAM (mnimo)
Sistema grfico OpenGL 1.3 ou superior (disponvel nas verses mais
recentes do Windows)
Java 6 SDK
Editor de Texto
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
16/52
16
Uma observao pertinente ao criar jogos para iOS que mesmo o Corona
SDK ter uma verso para Windows apesar de o desenvolvimento nessa plataforma
ser suportado, o builddeve ser realizado no Macintosh, pois no existe SDK do iOSpara o Windows.
Ele adiciona uma camada a mais no desenvolvimento de jogos ou aplicativos
para celulares. No caso, como ele usa Lua como linguagem de programao, o
trabalho do Corona traduzir essa aplicao para o iOS ou o Android.
1.2 O simulador
O Corona SDK est disponvel para instalao no endereo
http://www.anscamobile.com/corona/. necessrio estar registrado no site para
transferir o arquivo.
A instalao do simulador segue os passos padres de qualquer aplicao, no
Mac OS X basta apenas arrastar a pasta Corona SDK para a pasta Applications
(Figura 2):
Figura 2 - Tela Corona SDK no Mac OS X (FERNANDEZ, 2012)
A instalao no Windows feita a partir de um arquivo .msitransferido do site
da Ansca Mobile. Deve-se clicar duas vezes no arquivo e seguir as instrues
exibidas na tela.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
17/52
17
Em ambos os sistemas operacionais, necessrio ao executar o simulador
pela primeira vez, informar os dados cadastrados no registro (Figura 3):
Figura 3 - Janela de registro do Corona (FERNANDEZ, 2012)
1.3 Licenciamento
O Corona um softwareque trabalha com o modelo de assinatura. A licena
paga anualmente e todas as atualizaes futuras podem ser baixadas sem custo
adicional. Isso significa que alm das licenas de SDK de plataforma (Apple,
Google) necessrio pagar um valor a eles tambm.At a presente data, existem 3 modelos de assinatura: Indie(iOS only), Indie
(Android only) e Pro (all platforms). A assinatura necessria caso o programador
queira publicar o aplicativo nas lojas oficiais.
A verso trialinsere uma marca dgua no jogo:
Figura 4 - Janela de alerta exibida ao iniciar um jogo no Android, uma imagem similar a essa
exibida no iPhone
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
18/52
18
E assinantes tm prioridade na hora de fazer o buildda aplicao, entende-se
por buildo executvel que ser gerado para o sistema operacional escolhido, alm
de ter um tamanho de arquivo otimizado, acesso a fruns exclusivos e apoio
promocional do aplicativo no momento do lanamento.
A Tabela 1 na prxima pgina apresenta uma listagem detalhada dos itens
presentes em cada tipo de licena.
Tabela 1 - Comparativo entre licenas do Corona SDK
Descrio Trial Pro
Testar e visualizar os aplicativos no simulador do Corona
para DesktopSim Sim
Instalar e testar os aplicativos em seu iPhone pessoal, iPad
iPod touch, Android e dispositivosSim Sim
Acesso ilimitado a todas as APIs simples e poderosas doCorona
Sim Sim
O acesso prioritrio a novos recursos a partir do momentoque eles tornam-se disponveis em Daily Builds
No Sim
Prioridade na compilao, at 5x mais rpido No Sim
Tamanho otimizado do aplicativo No Sim
Sem marca dgua No Sim
Fruns exclusivos para assinantes No Sim
Corona Analytics No Sim
Recursos Promocionais e divulgao do aplicativo pelaAnsca Mobile
No Sim
Distribuir para a iTunes App Store, Android Marketplace,Amazon Kindle Fire Appstore, e Barnes & Noble NOOKColor Appstore
No Sim
O Corona SDK promete diminuir consideravelmente o ciclo de criao de
software, porque elimina a complexidade do Objective-C, no caso do iOS, e a
dificuldade de programar em Java, no caso do Android. Isso alcanado usando a
linguagem de programao Lua, que amplamente usada no desenvolvimento de
jogos digitais.
O Cientista da Computao, Daniel Nations (2011) refere-se plataforma da
seguinte maneira:
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
19/52
19
O que ele faz cortar drasticamente em tempo de programao. Noh nenhuma maneira que eu posso enfatizar isto o mximo: o quepode levar centenas de linhas de cdigo para fazer em Objective-Cs pode ter algumas linhas de cdigo para realizar na Lua. E porqueo Corona SDK mantm o controle de seu modelo de memriaprpria, voc no precisa se preocupar sobre como inicializar objetosou remov-los da memria quando feito com eles.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
20/52
20
2 ESTRUTURA DE UM PROJETO
Um projeto no Corona SDK pode ter apenas um arquivo principal, chamado
main.lua. Arquivos adicionais para deixar o projeto mais organizado e desacopladopodem ser adicionados a medida que for necessrio.
Outros arquivos podem opcionalmente compor um projeto, os principais so: config.lua, ebuild.settings. A
Figura 5 abaixo exibe a estrutura mais bsica de um projeto, o arquivo em
vermelho, main.lua, o arquivo obrigatrio do projeto e os arquivos em cinza so
opcionais.
Figura 5 - Estrutura de um projeto com Corona SDK
2.1 O arquivo config.lua
Este arquivo contm informaes referentes ao runtime e acessado pelo
aplicativo em tempo de execuo. A principal informao contida nesse arquivo
referente tamanho da tela e redimensionamento.
2.2 O arquivo build.settings
Apesar de ter a extenso diferente dos restantes, esse arquivo usa a sintaxe
da linguagem Luae nele devem ser inseridas instrues para serem usadas na hora
do build.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
21/52
21
2.3 Adicionando um projeto ao simulador
Para visualizar o projeto no simulador do Corona, necessrio apenas abrir o
arquivo main.luapelo caminho: File > Open. Os demais arquivos sero diretamenteou indiretamente adicionados ao simulador devido a este arquivo.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
22/52
22
3 BREVE INTRODUO AO Lua
Lua uma linguagem interpretada, de tipagem dinmica com seu
interpretador escrito em ANSI C. Alm disso, uma linguagem de cdigo aberto egratuita sob a licena MIT. Assim como o Java, o Lua, roda sobre uma mquina
virtual e tem gerenciamento de memria automtico com um garbage collector. Ele
gera um bytecode, e esse recurso permite que o cdigo possa ser interpretado em
um grande conjunto de hardwaredado ao fato do seu cdigo final ser nico.
A linguagem foi criada por um time da PUC-Rio e usada amplamente no
desenvolvimento de jogos digitais e vrios outros tipos de softwarescomo ApacheHTTP Server, Adobe Photoshop Lightroom, entre outros. Jung e Brown (2007)
opinam que:
[...] Lua tem caractersticas que suportam os requisitos avanados deprogramas. Ele impe muito poucas convenes sobre a maneiracomo voc escreve seu cdigo, ele fornece mecanismos com osquais voc pode construir solues claras e de fcil manuteno parasuas tarefas de programao. At mesmo os programadores maisexperientes encontram novas formas poderosas de usar Lua para
estender e simplificar suas aplicaes.
Lua robusto, mas sua leve curva de aprendizagem o torna bastanteadequado como primeira linguagem de programao. Em conjunto,estas caractersticas fazem de Lua uma linguagem atraente para osestudantes e profissionais.
A sintaxe do Lua semelhante a do Javascript e ActionScript. Para mais
informaes sobre a linguagem, por favor acesse o portal http://www.lua.org.
O Luatem 3 tipos de variveis: variveis locais, variveis globais e campos detabelas. O que diferencia uma varivel global de uma varivel local praticamente o
escopo, possvel adicionar um bloco de cdigo e manter a validade de uma
varivel local somente dentro desse bloco. Variveis locais so iniciadas com o
comando local, a ausncia dessa instruo, torna a varivel global. (PUC-RIO)
Fernandez (2012, traduo nossa) caracteriza por sua vez, os campos de
tabela so os prprios elementos das tabelas. Caso seja utilizado nmeros inteiroscomo ndice dessa tabela, ela tratada como uma matriz, caso seja utilizado strings
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
23/52
23
ela passa ser tratada como uma propriedade. Um exemplo dos tipos de variveis
pode ser encontrado na Figura 6.
Figura 6 - Exemplo de cdigo em Lua
Note que o operador ponto foi utilizado pra acessar a propriedade de dentro
da tabela e que quando a tabela visto como uma matriz, usa-se as chaves.
possvel usar tambm as chaves para acessar uma propriedade tal como na matriz.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
24/52
24
4 ELEMENTOS GRFICOS: OS DisplayObjects
Cada elemento carregado na tela do seu dispositivo uma instncia da classe
DisplayObject. No se cria esses objetos diretamente com o uso do comando newcomo acontece normalmente com as linguagens orientadas a objetos. O que na
verdade criado um tipo de DisplayObject cada vez que o mtodo para
retngulos, crculos, imagens e texto so chamados.
Nesse caso existem construtores para cada um desses tipos de objetos, por
exemplo, display.newRect() cria um VectorObject, no caso um objeto vetorial.
Atualmente, cada vez que um desses construtores so executados, elesimplicitamente adicionam como classepaio cenrio atual. Porm, existe apenas um
cenrio no Corona, para poder deixar o conjunto de objetos um pouco mais
organizado, pode se usar o parmetro parentGroup, para definir um grupo como o
paidesses objetos (FERNANDEZ, 2012, traduo nossa).
4.1 Principais propriedades
Conforme demonstrado anteriormente, o operador ponto deve ser usado paraacessar essas propriedades. Uma vez atribudo a uma varivel um DisplayObject.
Qualquer uma das propriedades a seguir podem ser utilizadas para modificar o
objeto (FERNANDEZ, 2012, traduo nossa):
object.alpha: altera a opacidade do objeto, varia de 0 a 1.
object.height: retorna a altura do objeto em coordenadaslocais.
object.isVisible : controla se o objeto visvel na tela ou no,true para que seja visvel e false para que no. O valorpadro true.
object.isHitTestable : permite a um objeto a continuar areceber eventos de toque (hit) mesmo que no esteja visvel.Se true, o objeto receber os eventos de toqueindependentemente da visibilidade; se false, eventos apenasafetaro objetos visveis. O valor padro false.
object.parent: retorna o pai do objeto, essa propriedade imutvel.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
25/52
25
object.rotation: retorna o ngulo de rotao atual em graus.Pode ser negativo ou positivo. O valor padro 0.
object.contentBounds : uma tabela de propriedades com os
valores dexMin,xMax, yMine yMax. Geralmente usado paramapear um objeto em um grupo para as coordenadas de tela.
object.contentHeight: retorna a altura do objeto emcoordenadas de tela.
object.contentWidth: retorna a largura do objeto emcoordenadas de tela.
object.width: retorna a largura em coordenadas locais.
object.x: especifica a posio no eixo xdo objeto em relao
ao pai a origem do pai, especificamente. Ao alterar essevalor, o objeto ir se mover no eixox.
object.xOrigin: especifica a posio no eixo x de origem doobjeto em relao origem do pai Ao alterar esse valor, oobjeto ir se mover no eixox.
object.xReference : define a posio no eixo x do ponto dereferncia em relao ao local de origem do objeto. Para amaioria dos objetos de exibio, o valor padro 0, ou seja, aposio no eixo x da origem e o ponto de referncia so osmesmos.
object.xScale: obtm ou define o fator de dimensionamentoX.Um valor de 0,5 ir dimensionar o objeto a 50 por cento nadireo do eixo x. O dimensionamento ocorre em torno doponto de referncia do objeto. O ponto de referncia padropara a maioria dos objetos de exibio o centro.
object.y: especifica a posio no eixo ydo objeto em relaoao pai a origem do pai, especificamente. Ao alterar essevalor, o objeto ir se mover no eixo y.
object.yOrigin : especifica a posio no eixo y de origem doobjeto em relao origem do pai Ao alterar esse valor, oobjeto ir se mover no eixo y.
object.yReference : define a posio no eixo y do ponto dereferncia em relao ao local de origem do objeto. Para amaioria dos objetos de exibio, o valor padro 0 (zero), ouseja, a posio no eixo y da origem e o ponto de refernciaso os mesmos.
object.yScale: obtm ou define o fator de dimensionamento Y.Um valor de 0,5 ir dimensionar o objeto a 50 por cento na
direo do eixo y. O dimensionamento ocorre em torno doponto de referncia do objeto. O ponto de referncia padropara a maioria dos objetos de exibio o centro.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
26/52
26
4.2 Principais mtodos
Em Lua os mtodos de objetos podem ser chamados de duas formas: ou
usando o operador ponto, ou o operador dois pontos. A Figura 7 abaixo ilustra as
duas formas.
Figura 7 - Exemplo de chamada de mtodos
A seguir uma lista de mtodos que so nativos do DisplayObjects
(FERNANDEZ, 2012, traduo nossa):
object:rotate(deltaAngle): adiciona uma quantidade delta emgraus ao objeto para rotacionar.
object:scale(sx, sy): multiplica XScale e yScalepropriedadespor sxe syrespectivamente.
object:setReferencePoint(referencePoint) : define o ponto dereferncia tanto para o centro do objeto (padro) ou para umdos vrios pontos convenientes ao longo da caixadelimitadora do objeto. O referencePointargumento deve seruma dos parmetros abaixo:
o display.CenterReferencePoint
o display.TopLeftReferencePoint
o display.TopCenterReferencePoint
o display.TopRightReferencePoint
o display.CenterRightReferencePoint
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
27/52
27
o display.BottomRightReferencePoint
o display.BottomCenterReferencePoint
o display.BottomLeftReferencePoint
o display.CenterLeftReferencePoint
object:translate(deltaX, deltaY): acrescenta deltaX e deltaYpara as propriedadesxe y, respectivamente. Isto ir mover oobjeto de sua posio atual.
object:removeSelf() : remove o objeto da exibio na tela elibera o espao usado na memria, assumindo que no houtras referncias a ele.
Abaixo na Figura 8uma aplicao do mtodo object.rotate():
Figura 8 - Aplicao de object.rotate()
4.3 Manipulao de imagens e texto
4.3.1 Adicionar imagem
Adicionar imagens ao Corona uma tarefa bem simples, atravs do mtodo
construtor display.newImage(filename, [,base directory] [, left, top]), onde filename
o nome da imagem (ex.: fundo.png), base directoryrepresenta o caminho relativo doarquivo, deve-se ter em mente que esse caminho relativo raiz do projeto. E por
fim, top e left so dois parmetros de coordenadas que devem ser informados
juntos, caso informado, a imagem ir ser posicionada no local informado, caso no
seja informado, a imagem ser centrada sob sua origem.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
28/52
28
Figura 9 - Imagem carregada via display.newImage()
Tipos suportados de imagem so o JPG e PNG os demais tipos como BMP,TIFF e GIF no so suportados. No caso do GIF o Corona carrega a imagem, porm
caso haja transparncia na imagem, ela no suportada no dispositivo, uma outra
observao em relao ao JPG, Fernandez (2012, traduo nossa) no
recomenda o uso de imagens JPG:
[...] Evite alta compresso no JPG, pois pode demorar mais paracarregar em um dispositivo. Arquivos PNG tm melhor qualidade
sobre JPG e so usados para exibir imagens transparentes. JPG nosalvam imagens transparentes.
4.3.2 Redimensionar imagens
Ao adicionar uma imagem maior que a rea de exibio, o comportamento
padro do Corona redimensionar a imagem para que ela caiba na tela. Isso ocorre
como uma maneira de preservar memria, porm, nem sempre necessrio que a
imagem seja redimensionada, por isso, existe um indicador booleano na lista de
parmetros para alterar essa propriedade: display.newImage([parentGroup,]filename [, baseDirectory] [, x, y] [,isFullResolution]).
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
29/52
29
O parmetro parentGroup indica o grupo pai do cenrio ao qual pertence o
objeto e isFullResolution o parmetro responsvel por permitir o
redimensionamento ou no. O valor padro false. Caso seja indicado true a
imagem carregada na sua resoluo total.
Fernandez (2012, traduo nossa) indica algumas limitaes no
redimensionamento de imagens:
Arquivos de imagens PNG indexadas no so suportados.
Escala de cinza no atualmente suportada, as imagensdevem ser RGB.
Imagens ainda sero redimensionadas se forem maiores doque as dimenses mximas possveis do dispositivo. Issogeralmente 1024x1024 (iPhone 3G) ou 2048x2048 (iPhone3GS e iPad).
Se voc recarregar a mesma imagem vrias vezes, aschamadas subsequentes para display.newImage ignora oparmetro isFullResolution e assume o valor passado pelaprimeira vez. Em outras palavras, a forma como voc carregaum arquivo de imagem a primeira vez afeta a configurao
redimensionamento da prxima vez que voc carregar omesmo arquivo. Isso porque Corona conserva memria detextura por automaticamente reutilizar uma textura que jtenha sido carregada. Como resultado, voc pode usar asmesmas imagens quantas vezes quiser, sem consumoadicional de memria.
4.4 Lidando com tamanhos diferentes de tela
Algumas configuraes podem ser adicionada no config.lua para a hora do
runtime. Sabe-se que o Android um sistema operacional bastante fragmentado,
sendo vtima das prprias qualidades. Steve Jobs (2010 ,apud CNN 2010, traduo
nossa) afirmou: [...] o Android muito fragmentado [...] a Apple se esfora para o
modelo integrado para que o usurio no seja forado a ser o integrador de
sistemas. No caso do iOS a preocupao em portar seu aplicativo para os
dispositivos pequena, pois, o modelo integrado da Apple pouco exige do
desenvolvedor.
O fato que o Android tem um ecossistema enorme, com uma quantidade de
aparelhos, tamanhos de telas imensurvel (Figura 10). O Corona SDK ajuda no
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
30/52
30
sentido de uniformidade no desenvolvimento, existem parmetros que passados
para o runtimedetermina automaticamente o tamanho do cenrio e reorganiza os
elementos na tela de uma maneira satisfatria.
Figura 10 - Diversos dispositivos Android (ANIMOCA, 2012)
4.4.1 Redimensionamento automtico de contedo
O Corona cuida do redimensionamento das imagens, caso isso seja
configurado. Para que isso ocorra, necessrio configurar as seguintes
propriedades no arquivo config.lua, Fernandez (2012, traduo nossa) descreve
abaixo:
width: largura da resoluo da tela do dispositivo de destinooriginal em formato retrato
height: altura da resoluo da tela do dispositivo de destinooriginal em formato retrato
scale: determina qual tipo de auto-redimensionamento serusado, pode ser um dos seguintes valores:
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
31/52
31
none redimensionamento automtico de contedo desativado
letterbox redimensiona para cima o contedo o mximo
possvel zoomEven redimensiona para cima o contedo o mximo
possvel a caber na tela, mantendo a proporo
zoomStrech redimensiona para cima o contedo de formano uniforme para preencher a tela e estic-lo na horizontalou na vertical
Dados esses parmetros, Fernandez (2012) informa que zoomStrech a
melhor alternativa para o Android, j que existe essa infinidade de modelos de
aparelhos e tamanhos de tela.
4.4.2 Alinhamento automtico de contedo
Quando o contedo automaticamente redimensionado, ele centralizado
por padro, devido diferentes tamanhos de telas e resolues, um contedo
exibido em um aparelho precisa ser ajustado para que preencha toda a tela sem
deixar nenhum espao vazio.
Para isso necessrio usar as propriedades xAlign e yAlign.Eles recebem
uma string que determina o alinhamento nas direesx e y, respectivamente. Abaixo
os valores permitidos para cada eixo:
Tabela 2 - Valores permitidos paraxAligne yAlign
xAlign yAlign
left
center*
right
top
center*
bottom
* valores padro
4.4.3 Redimensionamento automtico de imagem
O Corona permite alternar entre imagens de baixa resoluo e alta resoluosem precisar alterar o cdigo, deve-se considerar esse recurso ao construir uma
aplicao que ser portada para diferentes dispositivos com diferentes resolues.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
32/52
32
Para fazer uso dessa peculiaridade, deve-se alterar o arquivo config.lua e
incluir a propriedade de tabela chamada de imageSuffix. Cada ndice de imageSuffix
representa a string adicionada ao final do nome do arquivo e qual o fator
multiplicador daquele sufixo, exemplo pode ser visto na Figura 11 abaixo:
Figura 11 - Exemplo de redimensionamento de imagem dinmico
Porm, para que a imagem se comporte dessa maneira, no se pode usar o
comando display.newImage(), deve-se usar o comando
display.newImageRect([parentGroup,] filename [, basedirectory], w, h),exemplo:
Figura 12 - Exemplo de chamada de imagem dinmica
Em display.newRectImage(), tem-se que os parmetros w e h representam,
respectivamente, a largura e altura da imagem.
4.4.4 Texto
Para criar um texto a ser exibido, usa-se a o mtodo
display.newText([parentGroup, ] string, x, y, font, size). A cor do texto no passada
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
33/52
33
como parmetro para ser alterada, font deve indicar qualquer nome de fonte que
esteja na biblioteca, e por fim, o parmetro sizeo tamanha do texto. Para fontpode
ser usado, algumas constantes do sistema como native.systemFont ou
native.systemFontBold.
Abaixo uma lista de mtodos que alteram as propriedades de texto:
object.size determina o tamanho do texto
obect:setTextColor(r, g, b [, a]) Altera a cor do texto de acordo com o
cdigo RGB (red, greene blue) e arepresenta a opacidade da cor, variade 0 a 255 o padro 255
object.text Determina a string a ser usada.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
34/52
34
5 A API DE Physics
O Corona SDK usa um motor para fsica chamado Box2D (v. 2.1.2), e a
implementao feita pelo Corona permite que toda manipulao seja feita compoucas linhas. Qualquer DisplayObjectpode ser manipulado pela PhysicsAPI pois o
Corona trata cada PhysicObjectcomo uma extenso de DisplayObject.
O Box2D trabalha por padro com o sistema mtrico, porm a API facilita seu
uso pois faz todas as converses necessrias para manipular os objetos, (ANSCA,
2012, traduo nossa). A escala padro de 30 pixels por metro e para manter a
consistncia com o resto do SDK todas as medidas so feitas em graus ao invs deradianos.
5.1 Configurando o Physics
Para iniciar o uso das chamadas de fsica, deve-se criar o namespace
physics (Figura 13):
Figura 13 - Criando o Physics namespace
5.1.1 Iniciando, pausando e parandophysics
Os objetos podem ter seu status alterado ao se usar uma das trs funes a
seguir:
physics.start() reinicia ou resume o ambiente fsico.
physics.pause() para o motor de fsica temporariamente.
physics.stop() destri o ambiente fsico completamente.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
35/52
35
Uma importante observao deve ser feita:
Por padro, Box2D corpos que no esto envolvidos em uma
coliso iro "dormir" depois de alguns segundos. Isso reduz asobrecarga, mas em alguns casos voc pode no querer essecomportamento [...] possvel substituir esse comportamento em umdeterminado organismo com o comando body.isSleepingAllowed =false, mas voc tambm pode substituir isso globalmente para todosos corpos no ambiente usando um parmetro opcional booleano noincio: physics.start(true) ou physics.start(false). (ANSCA, 2012,traduo nossa)
Outra nota a ser tomada que se o parmetro passado for true, isso ir
prevenir que os corpos adormeam, caso false, o responsvel por determinar se
um corpo adormece ou no o SDK. false o valor padro.
5.1.2 Gravidade
possvel tratar a gravidade bidirecionalmente ou em apenas uma direo,
por exemplo, caso seja definido que a gravidade do objeto igual a da Terra, temos
que g = 9,8 m/s2.
Para definir a gravidade, deve-se usar: physics.setGravity(x, y), ondexe yso
o par ordenado do eixo cartesiano. O valor padro para essa funo x = 0e y =
9.8, abaixo um exemplo na Figura 14:
Figura 14 - Redefinio de gravidade
possvel recuperar os valores usados na gravidade a partir da funo
physics.getGravity(), o resultado passado em unidade de acelerao do SI (Figura
15).
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
36/52
36
Figura 15 - Recuperando valor da gravidade
Uma outra maneira de se manipular a gravidade de um elemento base-la
de acordo com a inclinao do aparelho. Para que isso seja possvel necessrio
que a API do acelermetro esteja aplicada e om isso a implementao desse tipo de
gravidade fica simples, veja a Figura 16:
Figura 16 - Influncia do acelermetro na gravidade (ANSCA, 2012)
Nota-se que a funo criada onTilt() passada como parmetro quando um
listenerpara o acelermetro criado. Ou seja, a cada vez que o dispositivo usado se
mover, o acelermetro ser chamado e o evento disparado, dessa maneira muda-se
a gravidade dos objetos em cena.
5.1.3 Outros mtodos
5.1.3.1 physics.setScale
Determina a proporo de pixels por metro usados na converso entre as
coordenadas de tela, esse mtodo deve ser chamado antes que qualquer objeto
fsico seja instanciado. Como dito anteriormente, o valor padro 30, porm para
dispositivos com maior resoluo como iPad, Android ou iPhone 4, recomendado
que o valor seja de 60 ou mais.
Sintaxe:physics.setScale(value)
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
37/52
37
5.1.3.2 physics.setDrawMode
Representa como ser o modo de renderizao para o physics engine. Essa
configurao pode ser alterada a qualquer momento.
Sintaxe:physics.setDrawMode(mode). Onde modepode ser:
physics.setDrawMode(debug): Esse modo exibe apenas as bordas do
motor de coliso.
Figura 17 - Modo debug(FERNANDEZ, 2012)
physics.setDrawMode(hybrid): Esse modo sobrepe as bordas de
coliso em objetos normais do Corona.
Figura 18 - Modo hybrid(FERNANDEZ, 2012)
physics.setDrawMode(normal): Esse modo o padro do
renderizador, sem bordas de coliso.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
38/52
38
Figura 19 - Modo normal (FERNANDEZ, 2012)
5.1.3.3 physics.setPositionIterations
Essa funo determina a preciso do clculo de positionamento do motor. Ovalor padro 8, isso significa que o motor ir iterar por oito aproximaes de
posio por frame para cada objeto. Deve ser manuseado com cuidado, pois pode
trazer queda de performance para a aplicao.
Sintaxe:physics.setPositionIterations(value)
5.1.3.4 physic.setVelocityIterations
Determina a preciso do clculo de vocidade do motor. O valor padro 3,
assim o motor ir iterar por trs aproximaes de frame para cada objeto. Tambm
deve ser manuseado com cuidado, pois pode trazer queda de performance.
Sintaxe:physics.setVelocityIterations(value)
5.2 Colises
Para detectar uma coliso, o objeto deve ter um listener atrelado chamado
collision. O evento collision possui fases como began e ended, que so
respectivamente os momentos de contato inicial e final durante a coliso. Essas
fases existem tanto para a coliso de dois corpos e sensores. Alm do evento
collision, dois outros eventos opcionais existem e podem ser usados sempre que
dois corpos, no sensores, colidem:
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
39/52
39
preCollision: disparado momentos antes dos objetos comearem a interagir,
dependendo da lgica aplicada ao jogo, talvez seja necessrio detectar este evento
e sobrescrever a coliso.
Por exemplo, em um jogo do tipo plataforma, voc pode desejarconstruir plataformas unilateral, de modo que o personagem podepular verticalmente, mas apenas nessa direo. Voc pode fazer issocomparando a posio da plataforma e do personagem para ver se oele est abaixo da plataforma, e ento usar um timer para fazer apropriedade isSensor temporariamente true para que ele passeatravs da plataforma. (ANSCA, 2012, traduo nossa)
postCollision: disparado logo aps a coliso. Este o nico evento em que a
fora da coliso reportada.
Eventos de coliso no Corona tem um modelo similar aos eventos do touch,
pode-se usar isso para otimizar a performance do jogo limitando o nmero de
eventos que so criados. Por padro, quando dois objetos colidem, o evento
disparado para o primeiro objeto e depois para o segundo objeto.
5.3 Corpos Fsicos
Corpos fsicos nada mais so que uma extenso de um DisplayObject, ou
seja, quando o construtorphysics.addBodyno retorna um novo objeto, mas apenas
estende o DisplayObjectcom propriedades fsicas. Por isso, os atributos padro do
objeto passam para o corpo fsico tambm. Porm, uma vez adicionadas as
propriedades fsicas do objeto, no possvel remov-las, apenas possvel
remover o objeto como um todo.
5.3.1 O construtorphysics.addBody
Como dito anteriormente, o comando physics.addBodyadiciona propriedades
fsicas a um objeto existente. Sintaxe:
physics.addBody(object, [bodyType,] {density=d, friction=f, bounce=b
[,radius=r] [,filter=f]})
physics.addBody(object, [bodyType,] {density=d, friction=f, bounce=b
[,shape=s] [,filter=f]})
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
40/52
40
Algumas observaes com relao aos parmetros passados:
density tem como o valor padro 1.0, que a densidade da gua.
friction o valor padro 0.3, e pode ser um valor negativo. Se o valor
for 0 (zero) significa que o corpo no tem frico e 1.0 representa uma
frico forte.
bounce uma propriedade interna do Box2d conhecida como
restituio, e determina o quanto da velocidade de um objeto
repassado aps uma coliso. O valor padro 0.2, que seria um objeto
pouco saltitante. O valor de 1.0 indica que o objeto no tem perda
alguma e valores maior que 1.0 indicam que o objeto ganha velocidade
a cada coliso.
Por padro, todos os objetos criados tem forma retangular, corpos circulares
exigem um parmetro a mais, o radius, no caso esse parmetro recebe o raio. No
indicado para corpos ovais, pois o Box2D apenas trata de colises circulares,
retangulares e poligonais.
Corpos poligonais precisam do parmetro shape.Esse campo uma tabela
de pontos coordenados que formam as arestas do polgono. O mximo de pontos
indicados permitidos por coliso de oito. Uma importante observao que todo
polgono criado deve ser convexo, caso seja necessrio criar um corpo cncavo
necessrio criar mltiplos objetos e anexar uns aos outros.
Os corpos fsicos tambm podem ser classificados de trs maneiras: static,
dynamic e kinematic. O bodyTypepadro o dynamic.Geralmente objetos que se
movem so do tipo dynamic, e objetos que no se movem ou no so afetados por
gravidade, de static. Objetos kinematicso afetados por foras, porm a gravidade
em nada interfere, no caso, se o evento de drag(arrastar) for agir nesse objeto, seu
bodyTypedeve ser esse, ao menos enquanto o evento de dragestiver em ao.
A Figura 20 exibe alguns exemplos do construtor:
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
41/52
41
Figura 20 - Exemplos de tipos de corpos fsicos (ANSCA, 2012, traduo nossa)
5.3.2 Sensores
Qualquer elemento pode ser tornado em sensor. Sensores no interagem
fisicamente com outros corpos, mas produzem eventos de coliso quando outros
corpos passam por eles. Um exemplo seria a caapa de uma mesa de sinuca. Para
tornar um objeto como sensor, necessrio ao criar o objeto, passar o parmetro
isSensor comotrue:
physics.addBody(rect, {isSensor: true})
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
42/52
42
6 INSERO DE UDIO
O processo de criao de um jogo envolve vrios elementos, e um dos
elementos que contribuem para o maior nvel de imerso so os efeitos sonoros.Segundo Fernandez (2012, traduo nossa):
Ns ouvimos efeitos sonoros e msica em quase todo tipo de mdiaque encontramos diariamente. Muitos jogos notveis, como Pac-Man, Angry Birds, Fruit Ninja e pode ser reconhecido apenas por suamsica tema ou efeitos sonoros sozinho. Alm da imagem visual quevemos nos jogos, sons ajudar impacto o clima transmitido no enredoe/ou durante o jogo. Efeitos sonoros e msica de qualidade quedizem respeito ao tema do seu jogo ajuda a dar ao seu pblico uma
sensao realista experincia.
O Corona Audio Systemusa os avanados recursos da OpenAL. O OpenAL
projetado para renderizao eficiente de tridimensionais multicanais.
Os formatos permitidos so:
Todas as plataformas suportam arquivos 16-bit, little endian, linear, e
.wav
O iOS e o simulador para Mac suportam .mp3, .cafe .aac
O simulador para Windows suporta .mp3e .wav
Android suporta os formatos .mp3e .ogg
Essa diferena de adoo de formatos ocorre devido ao licenciamento desses
formatos. Uma limitao apresentada no Android referente ao nome do arquivo de
udio, j que ele ignora a extenso do arquivo, ento uma boa maneira de sediferenciar os arquivos adicionar tambm o nome da extenso ao nome do
arquivo, por exemplo:
ring_aac.aac
ring_mp3.mp3
ring_ogg.ogg
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
43/52
43
6.1 Carregando o udio
Existem duas maneiras de se incluir um udio, uma por streame a outra
por carregamento completo para a memria
Ao usar o stream, deve-se chamar o mtodo audio.loadStream, dessa
maneira a aplicao ir economizar memria e ir carregar o udio em pedaos,
uma aplicao quando se deve carregar uma msica ou algo mais logo. Esse
mtodo no permite que se use mltiplos canais, devendo ser criado uma instncia
para cada vez que for usado.
Ao contrrio do stream, no carregamento por completo do udio para a
memria, ele instanciado apenas uma vez e pode ser usado vrias vezes. Um bom
exemplo de uso desse mtodo na implementao de efeitos sonoros.
Sintaxe:
audio.loadStream(audiofilename [, baseDir])
audio.loadSound(audiofilename [, baseDir])
Parmetros:
audioFilename especifica o nome do arquivo de udio
baseDir opcional e deve ser usado caso a pasta ao qual se
encontra o udio for diferente da raiz do projeto
Exemplo:
Figura 21 - Exemplos de carregamentos de udio (FERNANDEZ, 2012)
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
44/52
44
Fernandez (2012, traduo nossa) passa uma recomendao quanto a
performance da biblioteca de udio:
[...] o melhor pr-carregar todos os seus arquivos na inicializaodo aplicativo. Enquanto loadStream() geralmente rpido,loadSound()pode levar algum tempo uma vez que ele deve carregare decodificar o arquivo inteiro no instante em que precisa ser usado.Geralmente, voc no deseja estar chamando loadSound() naspartes do seu aplicativo onde os usurios esperam que ele sejaexecutado suavemente quando os eventos ocorrem, como porexemplo durante o jogo.
6.2 Controle de udio
O Corona permite controles de udio bsicos como o play,o stop, o pause, oresume e o rewind. Os controles de udio so simples de serem implementados,
porm cada udio utilizado atrelado a um canal numa relao 1 para 1, ou seja, o
udio em si no pausado, e o controle sobre o canal.
6.2.1 audio.play
Executa o udio especificado emaudioHandle, caso no seja informado um
canal, o SDK escolhe um.
Sintaxe:
audio.play(audioHandle [, {[channel=c] [, loops=l] [, duration=d] [, fadein=f] [,
onComplete=o]}])
Parmetros:
audioHandle recebe o objeto criado com um dos mtodos deload.
channel varia de 1 a 32, caso seja informado 0 (zero) este parmetro
seja omitido, um canal ser automaticamente escolhido.
loops inteiro que representa a quantidade de vezes que o udio ser
repetido, se 0 (zero) no ser repetido nenhuma vez, se -1 ser
repetido indefinidamente.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
45/52
45
duration intervalo de tempo que o udio ser executado em
milissegundos.
fadein intervalo em milissegundos ao qual o udio ir comear a tocar
do volume mnimo do canal at o volume normal.
onComplete recebe o nome de uma funo que pode ser chamada
aps a execuo do udio
6.2.2 Demais mtodos de controle
Os mtodos de resume,pause e stop recebem como parmetro opcional o
channeldo canal a ser resumido, pausado e parado. Em todos os casos, se nada forinformado ou se for passado o valor 0 (zero), a respectiva ao afetar todos os
canais. Abaixo a Tabela 3 indica as opes de sintaxes para essas aes:
Tabela 3 - Sintaxes de controle de udio
Ao Sintaxe 1 Sintaxe 2
Pausar audio.pause([channel]) audio.pause([{channel = c }])
Resumir audio.resume([channel]) audio.resume([{channel = c }])
Parar audio.stop([channel]) audio.stop([{channel = c }])
Voltar audio.rewind(audioHandle) audio.rewind({channel = c })
Orewindtem um funcionamento um pouco diferente dos demais, no caso, ele
aceita tanto como parmetro o objeto do udio, tanto como o canal. A sintaxe a ser
escolhida vai depender da maneira a qual ela foi carregada, se foi carregada usando
o audio.loadStream, a melhor opo a Sintaxe 1, a Sintaxe 2 indicada apenaspara objetos carregados com o audio.loadSound.
6.2.3 Controle de Volume
As alteraes de volume so feitas indicando valores de 0 (zero) a 1, esse
volume ser baseado de acordo com o volume do toque do dispositivo e so
aplicadas aos canais do aparelho. Se o canal informado for 0 (zero), a configurao
de volume ser aplicada a todos os canais. Se no for informado nenhum canal,essa alterao de volume ser feita no volume principal.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
46/52
46
Tabela 4 - Controles de volume
Descrio Sintaxe para definir (setters)Sintaxe para recuperar
(getters)
Volume audio.setVolume(volume [, {[channel=c]}]) audio.getVolume([{channel=c}])
Volume mnimo audio.setMinVolume( volume [, {[channel=c]}]) audio.getVolume([{channel=c}])
Volume mximo audio.setMaxVolume(volume [, {[channel=c]}] ) audio.getVolume([{channel=c}])
A Tabela 4 representa as aes possveis para os getterse settersdo volume,
os gettersfuncionam de forma semelhante, se nenhum canal for informado, o valor a
ser retornado o volume principal e se o canal informado for 0 (zero), o retorno ser
uma mdia dos volumes de todos os canais.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
47/52
47
7 GERAO DA BUILD
O Corona capaz de gerar buildpara o iOS e o Android (o NOOK e o Kindle
Fire, so android-based). Porm, para gerar o arquivo executvel para o iOS necessrio ter uma conta de Developercom a Apple.
7.1 Executvel para o iOS
Os passos abaixo descrevem as etapas necessrias para gerar o executvel
para o iOS:
Abra o simulador do Corona SDK
Clique em File> Opene selecione o arquivo main.luana pasta raiz do
seu projeto.
Uma vez exibida a aplicao no simulador, acesse o menu File > Build
For > iOS, a seguinte janela aparecer:
Figura 22 - Caixa de dilogo (FERNANDEZ, 2012)
Preencha os camposApplication Namee Version, e selecione qual tipo
de build deve ser gerada, existem duas opes: Device e Xcode
Simulator, aps, selecione os dispositivos suportados e qual a
assinatura do aplicativo.
Clique no boto build.
Aps essa etapa, basta usar o iTunes para transferir o aplicativo para seu
dispositivo com o iOS.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
48/52
48
7.2 Executvel para Android
Criar uma build para o Android mais simples, visto que no necessrio
nenhum tipo de chave para gerar os executveis para teste, caso o objetivo seja adistribuio pelo Google Play, necessrio ter uma Keystoreou uma Key Alias.
Abra o simulador do Corona SDK
Clique em File> Opene selecione o arquivo main.luana pasta raiz do
seu projeto.
Uma vez exibida a aplicao no simulador, acesse o menu File > Build
For > Android, a seguinte janela aparecer:
Figura 23 - Caixa de dilogo (FERNANDEZ, 2012)
Preencha os campos Application Name, Version Code (deve ser um
inteiro), Version Name e Package (nome de pacote no padro do java,
geralmente o reverso do seu nome de domnio). Selecione a verso
do Android desejada (lembre que o Android retrocompatvel, e no
necessrio gerar uma buildpara cada verso), para efeito de testes em
dispositivos e no publicao na loja, selecione na Debug para a
Keystoree androiddebugkeypara a Key Alias.
Aps gerado o buildum arquivo no formato apkser criado e com a ajuda de
algum outro software, como o ASTRO File Manager, copie o arquivo gerado para o
seu dispositivo.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
49/52
49
8 LIMITAES
No que tange ao poder do seu SDK o Corona deixa a desejar, pois ele no
possui um SDKper se, e sim um conjunto de APIs que o desenvolvedor deve usar.No seu bundlede instalao o desenvolvedor vem munido de 3 executveis: Corona
Simulator, Corona Terminal e debugger. Nenhuma outra ferramenta oferecida ao
programador, o que faz com que o trabalho de programar seja um pouco mais
manual.
Porm, o maior problema do Corona se deve ao fato de ser isolado. Ele no
permite chamadas direta s APIs do Android ou do iOS, ento certos recursos nopodem ser implementados. O mesmo acontece para APIs de terceiros.
Uma outra observao em relao ao Android, o fato que o Corona foi
criado usando a verso 2.2 desse sistema operacional, ou seja, novos recursos
implementados aps esta verso, ainda no esto disponveis para os
desenvolvedores do Corona SDK. A atual verso do Android a 4.0.4. Apesar de
ser feito com um nvel de API muito baixo, os aplicativos criados funcionam
normalmente na verso mais recente do Android, devido a retro compatibilidade.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
50/52
50
9 CONSIDERAES FINAIS
O objetivo de um framework facilitar o trabalho, e nesse quesito o Corona
SDK satisfaz as expectativas. O tempo de desenvolvimento de um jogo caisignificantemente quando combinado os tempos de projeto do Android e do iOS.
Com arquiteturas e filosofias diferentes, o desenvolvimento do mesmo jogo para
diferentes plataformas geralmente exige duas equipes distintas.
Grande parte da facilidade do Corona se deve ao fato de ele usar o Luacomo
linguagem, que devido sua pequena pegada, ele no causa grandes perdas de
performance e no atrapalha o gerenciamento de memria.
Devido ao fato de ser um framework com pouco tempo de mercado, sua
adeso ainda baixa, mas a cada dia sua comunidade tm crescido, pois o
desenvolvimento multi-plataforma visto como economia de tempo e de recursos.
Nota-se que suas APIs so simples de usar e intuitivas, apesar de suas
limitaes. Conhecer a ferramenta e saber qual ser a melhor abordagem para o
problema proposto a melhor sada, pois apesar de ser fcil e rpido, talvez uma
abordagem direta para cada plataforma seja a melhor opo caso recursos que
sejam essenciais para o jogo construdo no estejam presentes na API do Corona.
Porm, como opo para desenvolvimento o Corona deve sim estar entre os
frameworksescolhidos, pois apesar de novo, o SDK apresenta um grande potencial
para que seja mais robusto no futuro.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
51/52
51
10 REFERNCIAS BIBLIOGRFICAS
JUNG, K. e BROWN, A., Beginning Lua Programming. Edio 1, Canad: Wiley
Publishing, Inc., 2007. 644 pginas.
FERNANDEZ, M. M., Corona SDK Mobile Game Development Beginners Guide.
Edio 1, Reino Unido: Packt Publishing Ltd., 2012. 383 pginas.
ALLEN, S., GRAUPERA, V. e LUNDRIGAN, L. Pro Smartphone Cross-Platform
Development: iPhone, BlackBerry, Windows Mobile, and Android Development
and Distribution. Edio 1, Estados Unidos da Amrica, 2011. 288 pginas.
BURTON, B. G., Mobile App Development with Corona: Getting Started. Edio
1, Burton Media Group, Estados Unidos da Amrica, 2011. Vol. 1 e Vol. 2.
NATIONS, D., Review: Corona SDK for iPhone and iPad Development.
Disponvel em: . Acesso em 2 de Abril de 2012.
MEENEN, J., Learn How to Develop Apps for iOS and Android with Corona
SDK. Disponvel em: . Aceso em Maio de 2012.
ANSCA MOBILE, Mobile Development Framework: API Reference. Disponvel
em: . Acesso em Abril de 2012.
ANSCA MOBILE, Mobile Development Framework: Docs. Disponvel em:
. Acesso em Abril de 2012.
NPD GROUP, The NPG Group: For Once-Strong Smartphone Makers, 2011 was
the year of new beginnings. Disponvel em:
. Acesso
em Abril de 2012.
-
5/28/2018 Monografia - Gabriela Davila - Corona SDK-Libre
52/52
52
NPD GROUP, Smartphone Track: Now increase your range of knowledge about
smartphones. Disponvel em: .
Acesso em Abril de 2012.
PUC-RIO, Lua. Disponvel em: . Acesso em Abril de 2012.
ANIMOCA, All the Myriad Androids. Disponvel em:
. Acesso em Maio de
2012.
CNN, Top Android champions fire back at Steve Jobs. Disponvel em. Acesso em Fevereiro 2012.