PANDOGO (82 pts)

GUILHERME G.G. (137 pts)

PEDRO CLAUDIO (50 pts)

GÉRIO (93 pts)

FLASHGURU (155 pts)

RICARDO TAKAHASHI (180 pts)

LUIZ HERRERA (117 pts)

NILTON BICALHO (61 pts)

AMAURY BENTES (123 pts)

MANGOOST (80 pts)

HELEN TRIOLO (444 pts)

KEN AWAMURA (130 pts)
Treinamento PontoFlash de Flash e ActionScript

Como carregar clipes aleatórios?

Algumas dicas sobre fontes e tipografia

Como fazer um efeito embaçado (efeito blur) no Flash?

Como gravar dados de um Flash em um arquivo .mdb (Access)?

É possível salvar um TXT a partir do Flash?

Flash 5 ou Flash 4?

Quero fazer um box de notícias, em que os textos seriam puxados de um arquivo .txt, e que essas notícias ficariam passando no box.

Plugin do Flash Player

Não consigo usar fontes PIXEL no Flash. Transformo ela em imagem?

Queria que minha página em HTML tivesse aquele script de data e hora.

Que variáveis eu poderia usar para uma pergunta com 4 alternativas e uma só é correta.

Função criada para código de contagem regressiva de data, para MX.

Porque no meu flash, 1 + 15 retorna 15 e não 6?

Como organizar um projeto para que o arquivo não fique grande?
Alterando Artistic Media no Corel Draw

Dicas para otimizar seu SWF (revisado e atualizado).

Menu arrastável, estilo Windows.

Flash Studio Pro: Dando poderes ao Flash

Detectando funções de browser usando ASP

Efeito de texto esticado (stretched text).

Gira logo.

Shapes arredondados no PhotoShop.

TV Scan Lines - Fireworks

Tweening shape (interpolação de forma)

Tell Target e Linhas do tempo independentes

Unindo e separando traçados - Fireworks
Drag box

Worms 3d

Drag tele

Preloader run

Menu com abas

Zoom rotate e pan

Photo album

Shape tween imagem

Ping Pong

Puzzle

Espelho

Engrenagens 1
HOME | TUTORIAIS
Jogo da Forca (segunda parte)
por Alexandre Porto

1 / 2 / 3

 

Nessa segunda parte do tutorial Jogo da Forca, vamos criar os botões/letras para que o jogador possa ter também essa opção, além de digitar a letra. É claro que poderíamos criar 26 botões normalmente e atribuir uma letra a cada um, mas eu tenho uma idéia melhor que, além de tudo, fará com que o filme fique bem menor.

   Na verdade, usaremos um código muito parecido com o que usamos para duplicar os campos de texto no tutorial anterior. Na pior das hipóteses, você vai aprender a criar uma função simples.

   Pretendo criar um filme novo exclusivo para os botões. Por isso introduza uma ação "load movie into level", para abrire esse novo filme. Coloquei isso como FrameAction junto ao Load Variables.

loadVariablesNum ("forca.txt", 0);
loadMovieNum ("botao.swf", 1);

Para que os botões fiquem alinhados na parte de baixo do jogo, abra o arquivo "Forca.fla", pressione Ctrl+M e aumente a altura de 300 para 400. Assim criamos um espaço extra.

   Agora crie um novo filme idêntico ao filme principal (750X400). Vamos utilizar apenas os 100 pixels da parte de baixo desse novo filme, para não sobrepor a animação do principal.

   Criaremos um movieclip com dois frames. No primeiro frame colocaremos um botão ativo. No segundo, apenas um gráfico simulando o botão inativo. Numa camada superior colocaremos um campo de texto "letra" com os dois frames do movieclip. Assim a letra será mostrada nos dois estágios do botão (ativo/inativo). No primeiro frame desse movieclip, coloque uma ação de stop. Arraste esse movieclip para o canto inferior esquerdo do filme.

Crie agora um movieclip "action", nos mesmos moldes do anterior. A action introduzida nesse movieclip é muito semelhante.

onClipEvent (load) {
 nome = _parent._name;
 linha = nome.substr(1);
}
onClipEvent (enterFrame) {
 _parent.letra = _root.actionb.palavraB.charAt(linha);
}

   Nele, eu checo o nome do movieclip/botão e capturo suas strings, que serão usadas para importar a letra correspondente ao botão. Praticamente a mesma ação usada anteriormente.

Pronto o botão está feito. Agora vamos duplicá-lo 25 vezes.

   Na timeline principal crie um novo movieclip "actionb". Agora, como já introduzi, vamos criar uma função como sub-rotina. Algo bem simples.

O que é uma função e porque eu a usaria nesse caso?

O código que vou criar agora vai duplicar o movieclip/botão e gerar as diversas variáveis que serão capturadas por esses mesmos botões. Para cada botão uma letra. OK. Já fizemos isso antes na primeira parte desse tutorial. Tentei imaginar quantas vezes vou querer repetir essa ação.

1 - no início do jogo;
2 - quando o jogo for reiniciado
    2a - quando o jogador acerta a palavra;
    2b - quando o jogador ultrapassa o número de erros permitido;
3 - quando der na telha do jogador começar tudo de novo.

   Será que vou ter que copiar esse código 4 vezes? Será que não podemos colocar esse código num local pré-determinado e apenas "chamá-lo" no momento desejado? Como uma macro do MSWord, por exemplo? Podemos sim. Exatamente criando uma função.

Mas como se cria essa coisa?

Primeiro, temos que verificar as instruções que se repetiriam "n" vezes. Feito isso, vamos começar a trabalhar na função. Sempre comece nomeando a função:

function Botoes(){
}

Escreva sempre a palavra "function" seguida do nome escolhido (Botoes). Os parênteses sempre seguem o nome de uma função. Você pode acessar também pela janela de actions: Action / function. Nesse exemplo trataremos apenas de funções sem parâmetros, portanto os parênteses estarão sempre vazios.

onClipEvent (load) {
  function Botoes () {
    _root.b0._x = 20;
    posB = b0._x+45;
    palavraB = "abcdefghijklmnopqrstuvwxyz";
    nQB = 25;
    for (ib=1; ib<=nQB; ib++) {
      duplicateMovieClip (_root.b0, "b"+ib, ib);
      _root["b"+ib]._x = posB;
      posB += 25;
      }
    _root.b0.gotoAndStop(1);
    }
  Botoes();
}

   Novamente, o código é bastante similar. As diferenças se resumem ao fato de que a variável "palavrab" não é o resultado de uma função randômica. Seu valor, que será capturado pelos botões, é o abcdário. As 26 letras que compõem o nosso alfabeto. O número de quadros (nqb) também é fixo (25).

nota: para entender melhor esse código, volte ao movieclip "action" da primeira parte do tutorial.

O que é aquele "Botões()" no final do código?

Ainda bem que você perguntou. Pensei que ninguém iria notar. Será que não dá para adivinhar? Estou chamando a função. Esse movieclip será a primeira coisa a ser carregada nesse filme dos botões. Então eu o escolhi para ser o local onde vou criar a função (poderia ser no primeiro frame da timeline principal). Gosto de trabalhar com clips/actions, pois facilitam a visualização posterior. Tudo bem, cada um tem a sua mania.

   Você pode verificar que, além de criar a função, eu a chamei no mesmo evento. Preste bem atenção: a linha que chama a função não faz parte da mesma. Está diretamente subordinada ao evento "Load". É isso, primeiro crio a função e logo em seguida eu a chamo.

E naquelas outras situações em que vamos precisar reordenar os botões?

Simplérrimo.
Coloque um botão no stage e insira o seguinte código (delete-o logo depois):

on (release) {
  _root.actionb.Botoes();
}

   Sua função será chamada e, nesse caso, os botões serão reordenados, além de reativados os que tiverem sido pressionados.

Você não esqueceu as ações dos botões?

É mesmo ....
A instância do botão está apenas no primeiro frame do movieclip, certo?

on (release) {
   gotoAndStop (2);
   _level0.digitado = letra;
}

Na primeira linha, envio o filme para o segundo frame, onde estará apenas um gráfico inativo. Na segunda linha, declaro a variável "digitado". O level0 foi usado porque, não se esqueçam, estamos no level1.

   Você deve estar se perguntando se não poderia transformar as ações usadas no movieclip "action" do filme principal em uma função. A resposta é sim. Você pode ir agora mesmo fazer isso. Eu preferi esperar uma introdução mais detalhada, que foi feita aqui, para usá-la.

Neste mesmo filme, delete também aquele botão que criei para testar a letra "A".

Teste os filmes agora.

Clique aqui para ver o exemplo desse tutorial funcionando.



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
0 comentário