4.4. Background
Casa do Código
vantagens de utilizar Sprites como objetos do Cocos2D é que ganhamos algumas
possibilidades de animação, que veremos mais à frente.
Criaremos então um sprite que representa nosso background e iremos adicioná-
lo à tela de abertura. Para isto, instanciamos um objeto do tipo CCSprite infor-
mando qual a imagem desejada e configuramos sua posição. Aqui, utilizaremos
o tamanho da tela, tanto largura quanto altura, para posicionar o background de
forma centralizada. Faremos isso com um elemento muito importante do Cocos2D,
o CCDirector, que será aprofundado mais à frente. Vamos adicionar o background
na tela de abertura, instanciando-o no init da TitleScreen.m:
- (id)init
{
self = [super init];
if (self) {
// Imagem de Background
CCSprite *background =
[CCSprite spriteWithFile:@"background.png"];
background.position =
ccp([CCDirector sharedDirector].winSize.width / 2.0f,
[CCDirector sharedDirector].winSize.height / 2.0f);
[self addChild:background];
}
return self;
}
Da mesma forma que acontece nos demais aplicativos de iOS, podemos ter uma
imagem para aparelhos de tela não-retina e outra com o dobro de resolução para
aparelhos com tela retina. Entretanto, ao invés de utilizar arquivos com final @2x, o Cocos2D utiliza arquivos com final -hd para identificar uma imagem para tela
retina.
O Cocos2D já vem habilitado para utilizar imagens retina e reconhecê-las como
arquivos com final -hd.
Estas configurações vêm definidas como padrão no
Appdelegate.m. Basta apenas incluir as imagens em ambas resoluções no projeto
e o Cocos2D vai utilizar uma ou outra automaticamente.
Precisamos então do background.png e background-hd.png do nosso
jogo. Criamos algumas imagens e utilizamos outras de fontes gratuitas para nosso
jogo. Você pode baixar um zip que as contém nesse endereço:
https://github.com/bivissoft/jogos_ios_14bis
66
Casa do Código
Capítulo 4. Tela inicial: Lidando com Background, logo e botões de menu
Coloque os arquivos background.png e background-hd.png
dentro do di-
retório Resources do seu projeto. Você precisará repetir esse procedimento para
outras imagens, sons e arquivos dos quais precisaremos no decorrer do desenvolvi-
mento de nosso jogo.
4.5
Assets da Tela de abertura
A tela de abertura do game terá 6 assets (arquivos como imagens e figuras) que serão utilizados para compor logo e menus.
Para começar, vamos organizar na classe Assets os arquivos de imagens que
utilizaremos no game. Crie a classe Assets, subclasse de um NSObject, e em seu
header declare as imagens que utilizaremos:
@interface Assets : NSObject
# define kBACKGROUND
@"background.png"
# define kLOGO
@"logo.png"
# define kPLAY
@"play.png"
# define kHIGHSCORE
@"highscore.png"
# define kHELP
@"help.png"
# define kSOUND
@"sound.png"
@end
Para facilitar, importaremos a classe Assets em nosso arquivo Prefix.pch.
Desta forma, todas as classes de nosso projeto automaticamente importarão a
Assets. Também incluiremos na Prefix.pch o import da cocos2d.h, outra
classe que será bastante utilizada em nosso projeto.
//...
# ifdef __OBJC__
# import <UIKit / UIKit.h>
# import <Foundation / Foundation.h>
# import "cocos2d.h"
# import "Assets.h"
# endif
Sempre após alterar o arquivo Prefix.pch, precisamos recompilar nosso pro-
jeto para que as classes identifiquem as alterações. Você pode fazer isto acessando o menu Product segurando a tecla option e selecionando Clean Build Folder.
Após isto, acesse novamente o menu Product e selecione Build.
67
4.6. Capturando configurações iniciais do dispositivo
Casa do Código
Agora, altere a linha da TitleScreen.m que chamava o background.png
para utilizar a constante da classe Assets:
//...
CCSprite *background = [CCSprite spriteWithFile:kBACKGROUND];
//...
Utilizaremos essa classe para adicionar outros assets posteriormente, quando os
objetos inimigos e o player forem desenhados. É importante ter uma classe como
essa para não espalhar suas imagens pelo código. Por exemplo, imagine que você
queira alterar a imagem da nave principal. É melhor alterá-la em apenas um lugar, e fazer referência a essa variável nas classes necessárias.
4.6
Capturando configurações iniciais do disposi-
tivo
Existem diversos dispositivos iOS atualmente, com diferentes tamanhos de tela.
Existem algumas técnicas para tentar limitar esse problema durante o desenvolvi-
mento do jogo. Utilizaremos aqui uma técnica simples para adaptar nosso conteúdo
aos diversos dispositivos, capturando as medidas e utilizando-os sempre que for necessário lidar com essa questão.
Para iniciar as configurações de tela e criar a tela inicial, criaremos algumas macros:
SCREEN_WIDTH(): Retorna a largura da tela
SCREEN_HEIGHT(): Retorna a altura da tela
WIN_SIZE(): Retorna o tamanho (largura e altura) da tela
O Cocos2D nos ajuda nesse momento, pois já possui objetos preparados para
executar essa função. Podemos utilizar a classe CCDirector para conseguir os