Rariel 0 Denunciar post Postado Fevereiro 22, 2010 Pessoal seguinte eu tenho uma função que quando eu preciono o botao ele seleciona e arrasta todos os objetos que criei no palco, o problema é que eu quero saber como remover esse evento de arrastar depois de pressionar um outro botao, ja tentei de tudo e nao consigo remover o evento de arrastar o objeto, outro prolemas estao vendo os dois laços a baixo nao consigo passar para a função o evento MOUSE_DOWN, apenas o evento MOUSE_OUT , MOUSE_OVER se puderem ajudar, so quero saber o porque nao consigo passar esse evento para a função e pq nao consigo remover o evento de arrastar os objetos do palco quando passo o cursor do mouse em cima deles, lembrem-se eu quero que o evento seja removido se apenas eu clicar em um outro botao. ex: cliquei no botao btnSelecao arrasta tudo que ta no palco, aperto o botao btnPonteiro, para de arrastar tudo que ta no palco. segue o codigo: //Objetos e variaveis Globais var obj:Object = this; var ListaId:Array = new Array(); var bor:mcBorracha = new mcBorracha(); // Função remove o objeto do Palco quando a borracha e acionada no botao function removeObjeto(e:MouseEvent):void { for (var ob in ListaId) { if (e.currentTarget == ListaId[ob]) { ListaId.splice(ob, 1); } } removeChild(DisplayObject(e.currentTarget)); } //Função para pegar Objetos e arrastar no palco function Selecao(e1:MouseEvent):void { addEventListener(MouseEvent.MOUSE_MOVE, Ponteiro); for (var ob in ListaId) { if (e1.currentTarget == ListaId[ob]) { ListaId.splice(ob, 1); } } e1.currentTarget.buttonMode = true; e1.currentTarget.startDrag(); } //Função para soltar o objeto no palco function Solta(evt:Event):void { stopDrag(); } stage.addEventListener(MouseEvent.MOUSE_UP,Solta); //Desfaz a selecao dos objetos arrastaveis function Ponteiro(ev:Event):void { removeEventListener(MouseEvent.MOUSE_MOVE, Selecao); } btnPonteiro.addEventListener(MouseEvent.CLICK, Ponteiro); //Função para percorrer a matriz e apagar elemento function CorreMatrizApaga(e:MouseEvent):void { for (var x:int = 0; x < ListaId.length; x++) { ListaId[x].addEventListener(MouseEvent.MOUSE_OUT, removeObjeto); } //addChild(bor); //bor.startDrag(true); //bor.x += (mouseX - bor.x)*0.10; //bor.y += (mouseY - bor.y)*0.10; } btnBorracha.addEventListener(MouseEvent.CLICK, CorreMatrizApaga); //Função para selecionar objeto e passar eles para a função selecao function CorreMatrizSelecao(e:MouseEvent):void { for (var x:int = 0; x < ListaId.length; x++) { ListaId[x].addEventListener(MouseEvent.MOUSE_MOVE,Selecao); } } btnSelecao.addEventListener(MouseEvent.CLICK,CorreMatrizSelecao); //Função para criar novos objetos assim quer for clicado no botao btninicio-fim. function CriaObjetos(evt:Event):void { var objeto = new mcIniciofim(); ListaId.push(objeto); addChild(DisplayObject(objeto)); objeto.startDrag(true); } btniniciofim.addEventListener(MouseEvent.CLICK, CriaObjetos); Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Fevereiro 22, 2010 Para remover um evento pesquise por removeEventListener Abs Compartilhar este post Link para o post Compartilhar em outros sites
Rariel 0 Denunciar post Postado Fevereiro 24, 2010 entao ja usei esse evento ele nao remove olha o codigo acima E ai gente beleza. Seguinte tenho um função que remove objetos no palco quand eu passoo cursor em cima de um objeto especifico até beleza. o problema e que eu criei um outro botao que deveria interromper esse evento de remover os objetos do palco quando clicado nele, porém isso nao acontece alguem ai pode me ajuda ? // Função remove o objeto do Palco quando a borracha e acionada no botao btnBorracha function removeObjeto(e:MouseEvent):void { for (var ob in ListaId) { if (e.currentTarget == ListaId[ob]) { ListaId[ob]; } } removeChild(DisplayObject(e.currentTarget)); cont-=1; ob = 0; //Desfaz a seleção dos objetos apagaveis quando clicado no brnPonteiro.// function Ponteiro(ev:Event):void { removeChild(bor); stage.addEventListener(MouseEvent.MOUSE_UP,Solta); } btnPonteiro.addEventListener(MouseEvent.CLICK, Ponteiro); /*Função para percorrer a matriz e passar os elementos para a função que deve remove-los.*/ function CorreMatrizApaga(e:MouseEvent):void { for (var x:int = 0; x < ListaId.length; x++) { ListaId[x].addEventListener(MouseEvent.MOUSE_OVER, removeObjeto); } addChild(bor); bor.startDrag(true); stage.removeEventListener(MouseEvent.MOUSE_UP,Solta); } btnBorracha.addEventListener(MouseEvent.CLICK, CorreMatrizApaga); } Compartilhar este post Link para o post Compartilhar em outros sites
Michel Araújo 0 Denunciar post Postado Fevereiro 24, 2010 usa o removeEventListener nele... no caso você está adicionando esse efeito de apagar o objeto com MOUSE_OVER, em todos os objetos dentro do Array ListaID. quando quiser que pare, só fazer o mesmo, em um for, só que ao invés de colocar um addEventListener, põe um removeEventListener. Provavelmente é uma boa ideia antes você verificar se o objeto já possui o EventListener, o que pode ser feito usando o hasEventListener. detalhes de todos esses métodos você pode encontrar aqui: http://help.adobe.com/pt_BR/AS3LCR/Flash_10.0/flash/display/MovieClip.html []'s Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Fevereiro 25, 2010 Não adianta criar dois tópicos com a mesma dúvida. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Fevereiro 25, 2010 Sugestões: http://www.amazon.com/Essential-ActionScript-3-0-Colin-Moock/dp/0596526946/ref=sr_1_2?ie=UTF8&s=books&qid=1267067893&sr=1-2 http://www.amazon.com/Object-Oriented-ActionScript-3-0-Todd-Yard/dp/1590598458/ref=sr_1_6?ie=UTF8&s=books&qid=1267067893&sr=1-6 And, download do PDF de Ajuda / ADOBE - 10 MB (em português): http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/ Abs :blink: Compartilhar este post Link para o post Compartilhar em outros sites