ActionScript 3.0 para iniciantes: lição # 2
Quarta-feira, 3 de setembro de 2008Conforme prometido aqui é a segunda lição sobre ActionScript 3.0! Hoje vamos começar a análise de um projeto simples que joga o jogo de Tic Tac Toe ou Tic Tac Toe. Eu tentei incorporar nesse exemplo alguns recursos do ActionScript 3.0, tentando dar espaço para a compreensão, e não estilo. Daqui decorre que, se eu tivesse de escrever o "jogo" realmente, provavelmente teria estruturado de modo muito diferente, mas neste caso tenho tentado mediar entre um clássico programação compacta e com um apertado mais compreensível para os novatos. Fiz uma única classe documento, um procedimento que não sejam necessários, mas úteis para se manter em linha com as anteriores lição.
Jogo do Galo
Fontes
Além do ActionScript (arquivo. Quanto) a classe documento, que vai começar a analisar em detalhe aqui, o projeto está equipado com um clássico filme Flash (. Fla), que fornece a interface do jogo. Todos os arquivos necessários para acompanhar o comentário ao código estão disponíveis aqui.
Esquema do jogo
Nesta versão do jogo que não entrou no computador como um adversário, as atividades que você pode jogar os seus leitores, se você desejar. O jogo alternou, em seguida, dois jogadores, tal como se devêssemos jogar em um quadro branco ou numa folha de papel. O esquema faz sentido que se segue é:

Visão Global
Antes do início efectivo da análise do código é bem ver o contorno de uma classe genérica, composta pelo class eo seu interior:

Fabricante classe documento
Como nós antecipou na última vez, quando leghiamo um documento Flash - um filme - uma classe papel, sendo este último um verdadeiro objeto para criar uma instância, o sistema lançará o fabricante.
- / **
- * Fabricante de Classe
- * /
- TicTacToe ( ) : void { função pública TicTacToe (): void (
- / / Etapa Estabelece modo escala e alinhar fase
- = StageScaleMode. NO_SCALE fase. scaleMode = StageScaleMode. NO_SCALE
- = StageAlign. TOP_LEFT ; fase. align = StageAlign. TOP_LEFT;
- , init ) ; addEventListener (Event. ADDED_TO_STAGE, init);
- )
O fabricante, no nosso caso, define o objeto stage o recipiente dentro de um browser e adiciona a chamada para a função / método init() quando a nossa classe documento é adicionado stage pois será exibido! Este é um procedimento padrão que muitas vezes adoptar. Em alguns casos, é totalmente desnecessário, mas se o uso de componentes, nomeadamente aquelas que se apresentam visual objetos no Flash (como textarea, TreeView, etc ...), estes não estarão disponíveis (como ponteiros) até l "evento ADDED_TO_STAGE não foi liberada! Portanto, para obter seguro, continua a ser uma boa idéia para seguir este caminho, em antecipação de uma eventual nova versão.
Para quem está all'asciutto programação objeto, como um tabuleiro leitura classes, objetos e Instâncias!
A função, ou init() init init() foi definido privado (ver Actionscript 3.0: público, protegido, privado e interno), por meio da palavra-chave private
- / **
- * Método invocado apenas MovieClip é adicionado à fase
- *
- * @ Param) e (= evento passou de addEventListener (). Pode ser nulo
- * @ Return void
- * @ Privada
- * /
- init ( e :Event = null ) : void { init função pública (e: Event = null): void (
- initCell ();
- )
Por enquanto, como vocês podem ver, este recurso faz é chamar outra initCell() Muitas vezes, no método init() estão incluídas todas as funções de inicialização, não entra directamente o código aberto. Isso pode voltar a servir em qualquer caso, re-inicializar parâmetros. Desde este um exemplo de um jogo relativamente simples, pode ser estranho para ter esta dupla saltar quase inútil, mas em outros casos, o método init() ser muito mais amplo, convocando uma série de funções como init:
- init ( e :Event = null ) : void { init função pública (e: Event = null): void (
- initBackground ();
- initIntro ();
- initPlayers ();
- initScore ();
- initEnemy ();
- initSound ();
- ; start ();
- )
O método init() é invocado (que é chamado) quando o sistema libera o evento ADDED_TO_STAGE Precisamente por este motivo, foi incluída parâmetro e:Event
Truques nota: maio têm, frequentemente, métodos (como o
init()são obtidas a partir de ambos os eventos, tanto dentro do código. É precisamente por esta razão que o parâmetro deste método foi definido parae:Event = nullDesta forma, se fosse alguma vez usado, nós podemos chamarinit()sem passar qualquer parâmetro, porque não somos um evento e, em seguida, não poderia mover o interruptore:Eventa «simulados», com um considerável desperdício de energia ). Para obter detalhes sobre a gestão dos parâmetros em ActionScript 3.0 Veja também: Argumentos variáveis eo padrão em Javascript, e PHP e Actionscript temas variam Actionscript 3,0;
A inicialização do jogo
- / **
- * Apagar uma matriz linear que irá representar o nosso jogo grid.
- * Este "grid" é predefinida para zero (0), valor que indica que não
- * Sinais (o / x) foi feito.
- * Em 1 jogador (s) será atribuído um valor (1). Enquanto o jogador 2 (x) será
- * Associado valor dez (10). Com este artifício por exemplo, quando
- * Soma dos valores na linha 1 é igual a 3, que venceu o jogador 1.
- * Se em vez da soma da coluna 1 é 30, então o jogador ganhou 2 ... e tão bem.
- *
- * 0 | 0 | 0
- * --+---+---
- * 0 | 0 | 0
- * --+---+---
- * 0 | 0 | 0
- *
- * @ Param void
- * @ Return void
- * @ Privada
- * /
- initCell ( ) : void { initCell privado função (): void (
- / / Preimposto o leque de jogos a zero
- , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ; __cell = [0, 0, 0, 0, 0, 0, 0, 0, 0];
- / / Always inicia o player (jogador) 1
- __player = 1;
- / / Desenho à quadrícula na tela
- createGrid ();
- / / Monster na virada do player de vídeo (neste caso 1)
- +__player; turno_txt. texto = 'PLAYER' + __player;
- / / Esta variável é usada para colocar o jogo pausado se true
- / / Start-game
- __stop = false;
- )
Este método initCell() cuida de inicializar todas as variáveis e criar todos os objetos do jogo.
Truques nota: quase todos os programadores de vídeo conheço bem a técnica para mapear a área de jogo em um array de uma ou mais dimensões. Esta técnica, utilizada na chamada "Tile Game, pode executar uma grande variedade de controles em uma lógica liberada a partir de gráficos de vídeo. Neste caso específico, eu usei um simples array, um composto de 9 elementos representando 9 caixas do jogo. O facto de os elementos do array são sequenciais, em comparação com 3 x 3 grelha, não é um problema, como veremos, mas apenas uma questão de pontos de vista!
Para aqueles que desejam aprofundar o tema interessante, o município ler Tile Based Games
Todas as variáveis para uso interno, classe mundial, têm incentivado a utilização com duplo sublinhado na frente. Estas, de facto, durante o primeiro esboço de uma classe poderia então se tornar patrimônio público, explorando o seu encapsulamento de OO programação (ver escrever bom código OO no Adobe Flash). __player E __stop mostram respectivamente o jogador ativo e do estado do jogo.
Por agora vou parar aqui! Da próxima vez, analisar o método createGrid() jogo, se você tiver dúvidas ou perguntas sobre esta parte comentou.


















ActionScript 3.0 para iniciantes: Lição # 3 | Undolog.com disse:
[...] Analisando o exemplo do jogo Tic Tac Toe, em ActionScript 3.0 para iniciantes: lição # 2. Tínhamos chegado à função que cria a grade de jogo: Texto sem [...]