1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Action Script] Jogo estilo Space Invaders - Adobe Flash

Discussão em 'Programação' iniciada por digor7, 10 de Maio de 2009. (Respostas: 4; Visualizações: 2415)

  1. digor7

    digor7 Power Member

    Tou a seguir este tutorial

    http://video-animation.com/flash_12.shtml

    e não estou a conseguir pôr a nave a disparar. Sempre que vou a testar a suposta bala dispara logo e não dá para disparar mais... a parte que estou a fazer é esta traduzida pa pt:

    Código:
    As Balas 
    
    Agora vamos fazer uma bala. Desenhe uma forma oval ou de qualquer forma. Selecione-oe 
    pressione a tecla F8 (converter para símbolo). Chame-lhe "Bullet" e torná-lo um movieClip. 
    Na janela de propriedades Bullet, dar-lhe o nome de instância 
    "bala" O que precisamos fazer é criar um ponto é sempre o rato 
    Cliquei e quando ele vai offstage para destruí-lo ou voltar a utilizá-lo. 
    
    Temos de escrever um algoritmo para descrever a seqüência de eventos para 
    movendo uma bala. 
    
    / / Mover o ponto em 30 pixels por quadro para a parte superior da moldura 
    / / Quando a bala atinge o início da etapa, destruí-lo ou voltar a utilizá-lo. 
    Vamos fazê-lo. Selecione seu bala no palco e abrir a janela Acção 
    e colocar neste código: 
    
    onClipEvent(enterFrame){
    	// move it 30 pixels towards the top of screen
    	this._y -= 30;
    	// if bullet goes offstage , destroy it
    	if(this._x<0 || this._x>Stage.width || this._y < 0)
    	{
    		this.removeMovieClip();
    	}
    }
    Selecione seu defensor MC e adicionar este código após o enterFrame código: 
    
    
    // when the mouse cliks
    onClipEvent(mouseDown)
    {
    	// duplicate the bullet mc
    _root.bullet.duplicateMovieClip("bullet"+bulletNum,bulletNum);
    	// set the coords to the mouse clik
    	eval("_root.bullet" + bulletNum)._x = this._x;
    	eval("_root.bullet" + bulletNum)._y = this._y;
    	// increment the bullet number
    	bulletNum++;
    	// if more than 50 bullets , start again at 0
    	if(bulletNum>50)
    	bulletNum = 0;
    }
    O código acima 
    duplicatas a bala mc e confere-lhe um número de "bulletNum" 
    Em seguida, define o início x e y coords da bala ao x e y 
    coordenadas de onde o mouse foi clicado. 
    O bulletNum é incrementado para que a próxima bala criado por um 
    mouseclick tem um número de bulletNum 1. 
    Então, se o bulletNum for igual ou superior a 50, a bulletNum é reposto a 0 
    e começa a contar novamente. 
    Até agora o nosso defensor deve mover da esquerda para a direita seguindo o mouse 
    e deve disparar balas quando a esquerda cliques do mouse
    alguém me sabe dizer porque não consigo?
     
  2. digor7

    digor7 Power Member

    Alguém ajuda?
     
  3. Sérgio Santos

    Sérgio Santos Power Member

    Tens disponível no site o FLA com o jogo completo. Podes procurar lá a solução ao teu problema.

    A programação existente dá um pontapé a todas as best practices. Começando pela utilização do _root para referenciar instâncias de algo.

    Por exemplo, com a utilização do _root, um dia que queiras colocar esse jogo dentro de um outro swf, deixa de funcionar.
     
  4. shotnahead

    shotnahead Power Member

    Se estás a dar os primeiros passos, sugiro que comeces logo com AS3, especialmente se gostas de jogos. Para além de ser o futuro, é bem mais rápido a executar.
     
  5. digor7

    digor7 Power Member

    aonde é que posso encontrar guias para as3?
     

Partilhar esta Página