Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Carregando comentários...