ciao a tutti ho un'ascoltatore all'interno di una funzione...come faccio a rimuoverlo da fuori?
grazie
per l'aiuto
Tony
ciao a tutti ho un'ascoltatore all'interno di una funzione...come faccio a rimuoverlo da fuori?
grazie
per l'aiuto
Tony
ragazzi mi spiego meglio:
ho un quadrato sullo stage con istanza puls.
Ho scritto questo codice velocemente per farvi capire di cosa ho bisogno...
come vdete dove c'è scritto funzione clicca numero 2 come faccio a rimuoverla per lasciare in ciclo il movimentoCodice PHP:import fl.transitions.Tween;
import fl.transitions.easing.*;
puls.addEventListener(MouseEvent.CLICK, clicca);
function clicca(e:MouseEvent):void
{
var myTween:Tween = new Tween(puls, "x", Elastic.easeOut, puls.x, puls.x+10, 3, true);
puls.removeEventListener(MouseEvent.CLICK, clicca);
puls.addEventListener(MouseEvent.CLICK, clicca1);
function clicca1(e:MouseEvent):void
{
var myTween:Tween = new Tween(puls, "x", Elastic.easeOut, puls.x, puls.x-10, 3, true);
puls.removeEventListener(MouseEvent.CLICK, clicca1);
puls.addEventListener(MouseEvent.CLICK, clicca);//funzione clicca numero 2
function clicca(e:MouseEvent):void
{
var myTween:Tween = new Tween(puls, "x", Elastic.easeOut, puls.x, puls.x+10, 3, true);
}
}
}
cioè ogni clic cambia direzione...da destra a sinistra
ma così com'è il codice al secondo cambio il terzo continua sempre verso destra
grazie
Tony
Io eviterei e farei meglio così:
Codice PHP:import caurina.transitions.Tweener;
var n:int = 10;
var c:Circle = addChild(new Circle()) as Circle;
c.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler (evt:MouseEvent):void {
if (n/Math.abs(n) == 1) {
Tweener.addTween(c, {x:c.x+n, time:3, transition:"easeoutelastic"});
n*=-1
} else {
Tweener.addTween(c, {x:c.x+n, time:3, transition:"easeoutelastic"});
n = Math.abs(n);
}
}
// due note:
// Circle è una mia classe che crea un cerchio
// ho usato la tween caurina al posto della Tween nativa
Grazie Andrea per la risposta...
ho capito quello che mi hai detto con la sequenza di codice che mi hai dato, ma non riesco proprio a capire, nel mio caso, come utilizzarla...
in realtà è un menu che deve rimpicciolirsi e si sposta di lato quando viene cliccato su di esso e carica un swf esterno...e nello stesso tempo rimuove un ascoltatore di movimento al passaggio del mouse.
quando poi carica l'swf esterno apprare una x in alto a destra...
quando clicco sulla x sparisce l'swf e ritorna tutto come prima (menu al centro e movimento al passaggio del mouse)...
di seguito c'è un piccolo codice che ho trascritto tenendomi sulle stesse esigenze di quello che ho scritto per il mio lavoretto...
NON BADARE AI PRIMI 20 RIGHI SONO SOLO PER CREARE IL PULSANTE E L'IPOTETICO MENU AL CENTRO.
QUINDI ALLA FINE HO RICREATO L'EVENTO DELL ASCOLTATORE, MA POI NON ME LO RIMUOVE PIU' QUANDO CLICCO SUL QUADRATO AL CENTRO...Codice PHP://creo il pulsante che rimuoverà l'ascoltatore di cui ho bisogno in seguito
var pulsante:MovieClip = new MovieClip();
pulsante.graphics.beginFill(0x000000);
//child.graphics.lineStyle(borderSize, borderColor);
pulsante.graphics.drawRect(400, 10, 20, 25);
pulsante.graphics.endFill();
addChild(pulsante);
//ho bisogno que questo pulsante (che sarebbe la famosa x che chiude una finestra) sia invisibile
pulsante.visible=false;
//creo il quadrato sul quale c'è l'effetto applicato tramite l'ascoltatore
var quadrato:MovieClip = new MovieClip();
quadrato.graphics.beginFill(0x000000);
//child.graphics.lineStyle(borderSize, borderColor);
quadrato.graphics.drawRect(100, 100, 250, 250);
quadrato.graphics.endFill();
addChild(quadrato);
//ed ecco il movimento di cui ho bisogno
stage.addEventListener(MouseEvent.MOUSE_MOVE, mousemove);
function mousemove(e:MouseEvent): void
{
var xpercent:Number = mouseY/ (stage.stageHeight/2);
var ypercent:Number = mouseX/ (stage.stageWidth/2);
quadrato.rotationY =(ypercent*20)-20;//variare i 2 valori di 20 per diminuire la graduazione
quadrato.rotationX =(xpercent*20)-20;
}
quadrato.addEventListener(MouseEvent.CLICK, ridimensiona)
function ridimensiona(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mousemove);//qui rimuovo l'ascoltatore
//ora ridimensiono il quadrato in alto (perchè questi in realtà è un menu)
quadrato.x=10;
quadrato.y=10;
quadrato.width=50;
quadrato.height=50;
pulsante.visible=true;
}
//a questo punto compare il pulsante sulla destra in alto...e quando ci cliccherò sopra deve ritornare tutto come prima
pulsante.addEventListener(MouseEvent.CLICK, ritorna)
function ritorna(e:MouseEvent):void
{
quadrato.x=100;
quadrato.y=100;
quadrato.width=250;
quadrato.height=250;
pulsante.visible=false;
stage.addEventListener(MouseEvent.MOUSE_MOVE, mousemove);
function mousemove(e:MouseEvent): void
{
var xpercent:Number = mouseY/ (stage.stageHeight/2);
var ypercent:Number = mouseX/ (stage.stageWidth/2);
quadrato.rotationY =(ypercent*20)-20;//variare i 2 valori di 20 per diminuire la graduazione
quadrato.rotationX =(xpercent*20)-20;
}
}
COME POSSO FARE?
SCUSAMI PER L'ECCESSIVO CODICE CHE TI HO SCRITTO, MA IN REALTA' GUARDA SOLO L'ULTIMA PARTE CHE E' QUELLA CHE MI INTERESSA CIOE' LA FUNZIONE ritorna.
ciao
Tony
ah dimenticavo il codice della funzione stage è un applicativo 3D quindi occorre provarlo con Flash CS4
Ciao ho studiato il tuo codice e sono riuscito ad applicare l'effetto
...
grazie per l'ennesimo aiuto...
Ciao
Tony