Ir para conteúdo

Arquivado

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

Rariel

Como remover evento em um função

Recommended Posts

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

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

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

×

Informação importante

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