Ir para conteúdo

POWERED BY:

Arquivado

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

FreisSobrado

Target de Movieclip importado de XML

Recommended Posts

Boas Amigos,

tou com um problema na criação do target de um movieclip importado de XML.

Trata-se de um sistema drag and drop, em que ele nao está a fazer o drop, nao reconhece o target.

Vou colocar aqui abaixo o codigo pa ver se me ajudam a detectar o erro. Brigado.

 

/* Contador do numero de peças */
var counter:Number = 0;

/* Alinha o arquivo para o canto superior esquerdo */
stage.align = StageAlign.TOP_LEFT;
/* Desabilitamos o dimencionamento do arquivo */
stage.scaleMode = StageScaleMode.NO_SCALE;
/* Variavel que armazena o MovieClip selecionado */
var alvo:MovieClip;
/* Variável que armazena a quantidade de itens do XML */
var total:Number = new Number();
/* Criamos uma instancia da Classe XML */
var xml:XML = new XML();
/* Criamos uma instancia da Classe URLLoader */
var arquivo:URLLoader = new URLLoader();
var arquivo2:URLLoader = new URLLoader();
var arquivotarget:URLLoader = new URLLoader();

/* Posição inicial dos movieclips */
var startX:Number;
var startY:Number;

/* Carregamos o XML */
arquivo.load(new URLRequest("reis.xml"));
arquivotarget.load(new URLRequest("reis.xml"));
arquivo2.load(new URLRequest("roupas.xml"));
/* Adicionamos um event listener chamando a função arquivoOk */
arquivo.addEventListener(Event.COMPLETE, arquivoOk);
arquivo2.addEventListener(Event.COMPLETE, arquivo2Ok);
arquivotarget.addEventListener(Event.COMPLETE, arquivoTargetOk);

/* Função relativa ao rei, chamada assim que o XML é carregado */
function arquivoOk(event:Event):void {
	/* Armazenamos os dados do XML na instancia da Classe XML */
	xml = new XML(event.target.data);
	/* Armazenamos o total de itens */
	total = xml.rei1.length();
	/* Chama a função carrega das imagens verdadeiras */
	carrega();
}

/* Função relativa as roupas falsas, chamada assim que o XML é carregado */
function arquivo2Ok(event:Event):void {
	/* Armazenamos os dados do XML na instancia da Classe XML */
	xml = new XML(event.target.data);
	/* Armazenamos o total de itens */
	total = xml.roupas.length();
	/* Chama a função carrega das imagens falsas */
	carrega2();
}

/* Função relativa ao target, chamada assim que o XML é carregado */
function arquivoTargetOk(event:Event):void {
	/* Armazenamos os dados do XML na instancia da Classe XML */
	xml = new XML(event.target.data);
	/* Armazenamos o total de itens */
	total = xml.rei1.length();
	/* Chama a função carrega do target */
	carregatarget();
}

/* Função que carrega as imagens verdadeiras */
function carrega() {
	/* Criamos um laço para percorrer todos os itens do XML */
	for (var i=0; i<total; i++) {
		/* Criamos um MovieClip */
		var mov:MovieClip = new MovieClip();
		
		/* Adicionamos um event listener para quando o rato for clicado no MovieClip */
		mov.addEventListener(MouseEvent.MOUSE_DOWN, mcPress);
		mov.addEventListener(MouseEvent.MOUSE_UP, mcRelease);
		
		/* Armazena o número do nó do XML */
		mov.id = i;
		
		/* Criamos uma instancia da Classe Loader */
		var loader:Loader = new Loader();

		/* Desabilitamos o rato */
		loader.mouseEnabled = false;
		
		/* Carregamos a imagem */
		loader.load(new URLRequest(xml.rei1[i].camisola));

		/* Modificamos a posição da imagem */
		loader.x = 10;
		loader.y = 200;
		
		/* Adicionamos um event listener para saber quando terminou de carregar a imagem */
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderOk);
		
		/* Adiciona a imagem ao MovieClip criado */
		mov.addChild(loader);
		
		/* Adiciona o MovieClip ao palco */
		addChild(mov);
	}
}

/* Função que carrega as imagens falsas */
function carrega2() {
	/* Criamos um laço para percorrer todos os itens do XML */
	for (var i=0; i<total; i++) {
		/* Criamos um MovieClip */
		var mov5:MovieClip = new MovieClip();
		
		/* Adicionamos um event listener para quando o mouse for clicado no MovieClip */
		mov5.addEventListener(MouseEvent.MOUSE_DOWN, mcPress);
		mov5.addEventListener(MouseEvent.MOUSE_UP, mcRelease);
		
		/* Armazena o número do nó do XML */
		mov5.id = i;
		
		/* Criamos uma instancia da Classe Loader */
		var loader5:Loader = new Loader();
		
		/* Desabilitamos o rato */
		loader5.mouseEnabled = false;
		
		/* Carregamos a imagem */
		loader5.load(new URLRequest(xml.roupas[i].camisola));

		/* Modificamos a posição da imagem */
		loader5.x = 5;
		loader5.y = 5;
		
		/* Adicionamos um event listener para saber quando terminou de carregar a imagem */
		loader5.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderOk2);
		
		/* Adiciona a imagem ao MovieClip criado */
		mov5.addChild(loader5);
		
		/* Adiciona o MovieClip ao palco */
		addChild(mov5);
	}
}

/* Função que carrega as imagens com transparencia, o target */
function carregatarget() {
	/* Criamos um laço para percorrer todos os itens do XML */
	for (var i=0; i<total; i++) {
		/* Criamos um MovieClip */
		var targetmov:MovieClip = new MovieClip();
		
		/* Adicionamos um event listener para quando o rato for clicado no MovieClip */
		targetmov.addEventListener(MouseEvent.MOUSE_DOWN, mcPress);
		targetmov.addEventListener(MouseEvent.MOUSE_UP, mcRelease);
		
		/* Armazena o número do nó do XML */
		targetmov.id = i;
		/* Movieclip com transparencia */
		targetmov.alpha = 0.1;
		
		/* Criamos uma instancia da Classe Loader */
		var targetloader:Loader = new Loader();
		
		/* Desabilitamos o rato */
		targetloader.mouseEnabled = false;
		
		/* Carregamos a imagem */
		targetloader.load(new URLRequest(xml.rei1[i].camisola));

		/* Modificamos a posição da imagem */
		targetloader.x = 502;
		targetloader.y = 202;
		
		/* Adicionamos um event listener para saber quando terminou de carregar a imagem */
		targetloader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderOk3);
		
		/* Adiciona a imagem ao MovieClip criado */
		targetmov.addChild(targetloader);
		
		/* Adiciona o MovieClip ao palco */
		addChild(targetmov);
	}
}

/* Função chamada quando a imagem verdadeira termina de ser carregada */
function loaderOk(event:Event):void {
	/* Criamos uma referencia para a imagem */
	var loader:Loader = event.target.loader;
	/* Criamos uma referencia ao MovieClip */
	var mc:MovieClip = MovieClip(loader.parent);
	
}

/* Função chamada quando a imagem falsa termina de ser carregada */
function loaderOk2(event:Event):void {
	/* Criamos uma referencia para a imagem */
	var loader:Loader = event.target.loader;
	/* Criamos uma referencia ao MovieClip */
	var mc:MovieClip = MovieClip(loader.parent);
}

/* Função chamada quando a imagem do target, termina de ser carregada */
function loaderOk3(event:Event):void {
	/* Criamos uma referencia para a imagem */
	var loader:Loader = event.target.loader;
	/* Criamos uma referencia ao MovieClip */
	var mc:MovieClip = MovieClip(loader.parent);
}

/* Função chamada quando clica com o rato sobre o MovieClip */
function mcPress(event:MouseEvent):void {
	/* Identificamos o alvo */
	alvo = MovieClip(event.target);
	reply_txt.text = "";
	event.target.startDrag(true);
	event.target.parent.addChild(event.target);
	startX = event.target.x;
	startY = event.target.y;
	/* Coloca o alvo a frente dos outros MovieClips */
	addChild(alvo);
	/* Movimenta o MovieClip */
	alvo.startDrag();
}

/* Função chamada quando soltamos o botão esquerdo do rato */
function mcRelease(event:MouseEvent):void {
	/* Paramos de movimentar o MovieClip */
	event.target.stopDrag();
	var myTargetName:String = "target" + event.target.name;
	var myTarget:DisplayObject = getChildByName(myTargetName);
	if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget){
		reply_txt.text = "Bom trabalho!";
		event.target.removeEventListener(MouseEvent.MOUSE_DOWN, mcPress);
		event.target.removeEventListener(MouseEvent.MOUSE_UP, mcRelease);
		event.target.buttonMode = false;
		event.target.x = myTarget.x;
		event.target.y = myTarget.y;
		counter++;
	} else {
		reply_txt.text = "Tente de novo!";
		event.target.x = startX;
		event.target.y = startY;
	}
	if(counter == 1){
        reply_txt.text = "Parabéns, completou o puzzle!!!";
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o objeto com o nome que está na variável myTargetName é um objeto que você pôs no palco?

 

qual o objetivo do game? deu pra entender que a pessoa tem que arrastar algo pro alvo correto, mas ficou confuso com os nomes, arquivo1, arquivo2... está bem confuso.

 

Como você não está definindo o name dos seus objetos, eles devem estar todos com nomes que você não tem controle (instance1, instance2, ...), creio que esse pode ser o problema. Quando você concatena o event.target.name com a string 'target' na função mcRelease você não tem controle sobre o resultado, pois no event.target.name pode sair qualquer coisa.

 

tenta debugar os resultados desses valores que você usa para comparar na função mcRelease. Com trace vê o que está saindo no event.target.dropTarget, event.target.dropTarget.parent, event.target.name e myTarget. E nos nomes deles se preciso.

 

Se não conseguir põe mais detalhes, ou até mesmo o arquivo se tiver algo a mais no palco (o myTargetName), pra ter uma ideia melhor do que está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o objeto com o nome que está na variável myTargetName é um objeto que você pôs no palco?

 

qual o objetivo do game? deu pra entender que a pessoa tem que arrastar algo pro alvo correto, mas ficou confuso com os nomes, arquivo1, arquivo2... está bem confuso.

 

Como você não está definindo o name dos seus objetos, eles devem estar todos com nomes que você não tem controle (instance1, instance2, ...), creio que esse pode ser o problema. Quando você concatena o event.target.name com a string 'target' na função mcRelease você não tem controle sobre o resultado, pois no event.target.name pode sair qualquer coisa.

 

tenta debugar os resultados desses valores que você usa para comparar na função mcRelease. Com trace vê o que está saindo no event.target.dropTarget, event.target.dropTarget.parent, event.target.name e myTarget. E nos nomes deles se preciso.

 

Se não conseguir põe mais detalhes, ou até mesmo o arquivo se tiver algo a mais no palco (o myTargetName), pra ter uma ideia melhor do que está errado.

 

Boas Michel...Entretanto já consegui resolver o problema,

O problema era aquilo que voce disse, de os nomes serem (instance1...,2,3...).

Então o que fiz foi defenir os nomes e já ficou a funcionar, mesmo assim, obrigado pela ajuda.

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.