Ir para conteúdo

POWERED BY:

Arquivado

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

Lord_RDR

Problemas startDrag e stopDrag

Recommended Posts

Bom dia pessoal,

 

Mias uma vez estou recorrendo ao forum afim de pedir encarecidamente a ajuda de vocês.

 

 

Estou desenvolvendo uma aplicação onde:

 

- Ao clicar(evento mouse_down), no item flor, encontrado no menu, é criado através do operador new uma nova instancia desse item dentro do mc vaso (vaso.addChild(flor)), esta instancia ativa automaticamente o startDrag/stopDrag.

 

- Após soltar esta flor, posso clicar e arrasta-la quantas vezes forem necessárias. Porém, quando clico mais uma vez no item flor do menu, para criar uma segunda instancia, a mesma recebe as mesmas propriedades da anterior. Só que, os eventos de drag só funcioname para a ultima flor.

 

Realizei alguns testes de trace tentando achar o problema, mas ele me retorna q eu clico na instancia certa, porem ele da o drag na errada.

 

 

Segue código:

 


function mouseDownHandler (ev:MouseEvent):void
{

	var str:String = ev.currentTarget.name;
	var str2:String = str.substr(1,1);
	var ref:Number = Number(str2);
	var nome_classe:String;
	//trace("Nome do Objeto :" + str);

	// Vasos
	if (menu.currentFrame==2)
	{
		if (item1_mc!=null)
		{
			container.removeChild (item1_mc);
			// caso o vaso seja trocado, resetar a lista;
			lista_array = new Array();
			//trace ("Limpando lista...");
		}
		switch (ref)
		{
			case 1 :
				item1_mc = new Vaso1();
				break;

			case 2 :
				item1_mc = new Vaso2();
				break;

			case 3 :
				item1_mc = new Vaso3();
				break;

			case 4 :
				item1_mc = new Vaso4();
				break;

			case 5 :
				item1_mc = new Vaso5();
				break;

			case 6 :
				item1_mc = new Vaso6();
				break;

			case 7 :
				item1_mc = new Vaso7();
				break;

			default :
				//trace ("Nenhum vaso selecionado!");
		}
		//trace ("Vaso adicionado!");
		container.addChild (item1_mc);
		item1_mc.x = mouseX-50;
		item1_mc.y = mouseY+50;
		ultimo_obj = item1_mc;
		ultimo_obj.startDrag ();

		stage.addEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);

		// adicionando o elemento na lista de checagem
		lista_array.push (item1_mc);
		// trace ("Qtde. de itens na lista: " + lista_array.length);

	}
	// Flores
	if (menu.currentFrame==3)
	{
		//trace("Referencia: " + ref);
		switch (ref)
		{
			case 1 :
				item2_mc = new Flor1();
				break;

			case 2 :
				item2_mc = new Flor2();
				break;

			case 3 :
				item2_mc = new Flor3();
				break;

			case 4 :
				item2_mc = new Flor4();
				break;

			case 5 :
				item2_mc = new Flor5();
				break;

			case 6 :
				item2_mc = new Flor6();
				break;

			case 7 :
				item2_mc = new Flor7();
				break;

			case 8 :
				item2_mc = new Flor8();
				break;

			default :
				//trace ("Nenhuma flor selecionada!");
		}
		//trace ("Flor adicionada!");
		// NÃO FAZ NADA
		if (item1_mc !=null)
		{
			setMouseEvent (item1_mc, false);
		}
		
		item1_mc.addChild (item2_mc);
		item2_mc.x = item1_mc.mouseX-10;
		item2_mc.y = item1_mc.mouseY-20;
		ultimo_obj = item2_mc;
		//trace("Ultimo Objeto :" + ultimo_obj);
		ultimo_obj.startDrag ();
		
		
		stage.addEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);

		// adicionando o elemento na lista de checagem
		lista_array.push (item2_mc);
		// trace ("Qtde. de itens na lista: " + lista_array.length);

	}
}

function mouseUpHandler (ev:MouseEvent):void
{
	ev.currentTarget.removeEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);

	if (ultimo_obj == null)
	{
		return;
	}
	else
	{
		ultimo_obj.stopDrag ();

		// definindo limites para o obj
		checkLimits (ultimo_obj);
		// ativando colorPicker
		manager (true);
		// setando as funções de drag and drop novamente;
		setMouseEvent (ultimo_obj, true);
		//trace("ULTIMO OBJ :" + ultimo_obj);
	}
}


 

 

Agradeço desde já quem puder me ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que criar um NOVO object para cada vez que fizer o click...

 

Ou seja você tem que ao clicar para criar dar um NEW Object e usar esse object como referencia

Se você não fizer isso ele pega os parametros do anterior...

 

Assim como Loaders... MovieClips etc..

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que criar um NOVO object para cada vez que fizer o click...

 

Ou seja você tem que ao clicar para criar dar um NEW Object e usar esse object como referencia

Se você não fizer isso ele pega os parametros do anterior...

 

Assim como Loaders... MovieClips etc..

 

Abraços

 

 

Desculpe Berseck, mas não entendi.

 

Talvez eu não expliquei direito acima, quando eu adiciono duas flores por exemplo, ele tem que permitir que o drag;drop funcione para as duas e não só para o último.

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.