Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Michael_c

[Resolvido] Jogo de montar a boneca

Recommended Posts

Boa Noite Galera!!

 

Há muito tempo não trabalhava com Flash... Estava bitolado nos .NET da vida....

 

Porém, pintou um JOB para montar um joguinho de vestir uma boneca em Flash, o esquema é bem parecido com um quebra-cabeças, nada muito complicado.

 

Montei o Flash, está funcionando. Mas tem um bug que não consegui entender.

 

Vou tentar explicar:

 

Objetivo do arquivo: Montar uma boneca e salvar a configuração da roupa em um DB.

Como funciona: É só clicar na boneca ou na roupa e arrastar para o box amarelo.

Problema: Depois da boneca montada, quando é acionada a opção de "Finalizar", mesmo depois de ser direcionado para outro frame os MCs continuam no palco.

Link para teste

 

 

 

Obs.: Todo o arquivo ainda é um estudo, as ilustrações e o layout são apenas para simulação.

 

 

Além da minha dúvida, se puderem criticar e dar dicas para melhorar o código, ficarei muito grato.

 

 

Abaixo segue o código AS2:

 

 

//FRAME 1

stop();
#include "mc_tween2.as"

var boneca:String   = "";
var roupa:String	= "";

var conjunto:String = "";

mcBalvo._alpha	  = 0;

pos_mcBalvo_x = mcBalvo._x
pos_mcBalvo_y = mcBalvo._y


function geral() {
	
	//BONECAS ----------------------------------------

	var pos_mcB1_x = mcB1._x;
	var pos_mcB1_y = mcB1._y;
	
	var pos_mcB2_x = mcB2._x;
	var pos_mcB2_y = mcB2._y;
	
	var pos_mcB3_x = mcB3._x;
	var pos_mcB3_y = mcB3._y;
	
	
	function iniciaDrag(objeto) {
		objeto.swapDepths(objeto.getNextHighestDepth());
		startDrag(objeto);
	}
	
	function acao(objeto, pos_x, pos_y, alvo_x, alvo_y) {
		objeto.swapDepths(objeto.getNextHighestDepth());
		stopDrag();
			
		if (!objeto.hitTest(mcPalco)) {
			objeto.slideTo(pos_x, pos_y);
		} else {
	
			var num_atual = objeto._name.substring(3, 4)
			
			var i:Number = 0
	
			for (i=0; i<5; i++) {
				if (i != num_atual) {
					var mcAtual = eval("mcB"+i);
					
					var pos_x_ant = eval("pos_mcB"+i+"_x")
					var pos_y_ant = eval("pos_mcB"+i+"_y")
					
					mcAtual.slideTo(pos_x_ant, pos_y_ant);
				}
			}
			
			boneca = "B"+num_atual;
			conjunto_total(boneca);
			
			objeto.slideTo(alvo_x, alvo_y);
		}
	}
	
	
	this.mcB1.onPress = function() {
		iniciaDrag(mcB1)
	};
	
	this.mcB2.onPress = function() {
		iniciaDrag(mcB2)
	};
	
	this.mcB3.onPress = function() {
		iniciaDrag(mcB3)
	};
	
	this.mcB1.onRelease = function() {
		acao(mcB1, pos_mcB1_x, pos_mcB1_y, pos_mcBalvo_x, pos_mcBalvo_y);
	};
	
	this.mcB2.onRelease = function() {
		acao(mcB2, pos_mcB2_x, pos_mcB2_y, pos_mcBalvo_x, pos_mcBalvo_y);
	};
	
	this.mcB3.onRelease = function() {
		acao(mcB3, pos_mcB3_x, pos_mcB3_y, pos_mcBalvo_x, pos_mcBalvo_y);
	};
	
	
	
	//ROUPAS ----------------------------------
	
	var pos_mcR1_x = mcR1._x;
	var pos_mcR1_y = mcR1._y;
	
	var pos_mcR2_x = mcR2._x;
	var pos_mcR2_y = mcR2._y;
	
	var pos_mcR3_x = mcR3._x;
	var pos_mcR3_y = mcR3._y;
	
	var pos_mcR4_x = mcR4._x;
	var pos_mcR4_y = mcR4._y;
	
	var pos_mcRalvo_x = 352;
	var pos_mcRalvo_y = 442;
	
	
	var contagem:Number = 1000;
	
	function iniciaDrag2(objeto) {
		contagem = contagem + 1
		objeto.swapDepths(contagem);
		startDrag(objeto);
	}
	
	function acao2(objeto, pos_x, pos_y, alvo_x, alvo_y) {
		contagem = contagem + 1
		objeto.swapDepths(contagem);
		stopDrag();
			
		if (!objeto.hitTest(mcPalco)) {
			objeto.slideTo(pos_x, pos_y);
		} else {
			
			var num_atual = objeto._name.substring(3, 4)
			
			var i = 0
	
			for (i=0; i<5; i++) {
				if (i != num_atual) {
					var mcAtual = eval("mcR"+i);
					
					var pos_x_ant = eval("pos_mcR"+i+"_x")
					var pos_y_ant = eval("pos_mcR"+i+"_y")
					
					mcAtual.slideTo(pos_x_ant, pos_y_ant);
				}
			}
			
			roupa = "R"+num_atual
			conjunto_total(roupa)
			
			objeto.slideTo(alvo_x, alvo_y);
		}
	}
	
	
	
	this.mcR1.onPress = function() {
		iniciaDrag2(mcR1)
	};
	
	this.mcR2.onPress = function() {
		iniciaDrag2(mcR2)
	};
	
	this.mcR3.onPress = function() {
		iniciaDrag2(mcR3)
	};
	
	this.mcR4.onPress = function() {
		iniciaDrag2(mcR4)
	};
	
	
	
	this.mcR1.onRelease = function() {
		acao2(mcR1, pos_mcR1_x, pos_mcR1_y, (pos_mcRalvo_x-2.5), pos_mcRalvo_y);
	};
	
	this.mcR2.onRelease = function() {
		acao2(mcR2, pos_mcR2_x, pos_mcR2_y, pos_mcRalvo_x, (pos_mcRalvo_y+1));
	};
	
	this.mcR3.onRelease = function() {
		acao2(mcR3, pos_mcR3_x, pos_mcR3_y, (pos_mcRalvo_x-1), (pos_mcRalvo_y+2));
	};
	
	this.mcR4.onRelease = function() {
		acao2(mcR4, pos_mcR4_x, pos_mcR4_y, pos_mcRalvo_x,(pos_mcRalvo_y+3));
	};

}


function conjunto_total() {
	conjunto = boneca + "/" + roupa
}


geral();
conjunto_total();

 

//FRAME 2

stop();

var todos:String = conjunto;

Se for útil para alguém, segue o link para fazer o download dos arquivos fontes:

Download dos arquivos

 

 

Desde já obrigado e um ótimo final de semana.

 

 

Michael C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera,

 

Utilizei o "removeMovieClip();" que o SlyX recomendou e funcionou, consegui retirar os movieclips do palco, porém, será que essa é a melhor maneira de resolver o problema?

 

Não sei se é a maneira mais dinâmica para fazer isso...

 

Alguém sabe por que os movieclips poderiam continuar no palco mesmo não estando inseridos no frame?

 

Os links de teste continuam os mesmos.

 

Obrigado.

 

Michael C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso acontece comigo tb, o problema esta no swapDepths, testa tirar ele pra você ver

 

sempre que você usa ele o movieClip vai ficar por lá, pra remover só com removeMovieClip

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, você pode dar um unloadMovie(); no caso o movieclip continua no palco, mas sem conteudo..

ou como o tio Eder falou, arrumar com o proprio removeMovieClip() só que corrigindo os swaps assim:

 

//descarregando o conteudo do movieclip

meuMC.unloadMovie();

 

//removendo o movieclip do palco

meuMC.swapDepths(999);

meuMC.removeMovieClip();

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

 

Ok. Entendido.

 

SwapDepths sem vergonha! hehehehe...

 

Já está funcionando com o removeMovieClip();

 

Super obrigado!

 

Abraços,

 

Michael C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Michel, estou precisando de algo parecido com isso. Poderia entrar em contato comigo para passar o orç desse job e pra eu ver como o seu ficou?

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.