Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282

    remuovere un ascoltatore all'interno di una funzione

    ciao a tutti ho un'ascoltatore all'interno di una funzione...come faccio a rimuoverlo da fuori?
    grazie
    per l'aiuto
    Tony

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    ragazzi mi spiego meglio:

    ho un quadrato sullo stage con istanza puls.
    Ho scritto questo codice velocemente per farvi capire di cosa ho bisogno...

    Codice PHP:
    import fl.transitions.Tween;
    import fl.transitions.easing.*;



    puls.addEventListener(MouseEvent.CLICKclicca);
    function 
    clicca(e:MouseEvent):void
    {
         var 
    myTween:Tween = new Tween(puls"x"Elastic.easeOutpuls.xpuls.x+103true);
         
    puls.removeEventListener(MouseEvent.CLICKclicca);
         
    puls.addEventListener(MouseEvent.CLICKclicca1);
         function 
    clicca1(e:MouseEvent):void
         
    {
             var 
    myTween:Tween = new Tween(puls"x"Elastic.easeOutpuls.xpuls.x-103true);
             
    puls.removeEventListener(MouseEvent.CLICKclicca1);
             
    puls.addEventListener(MouseEvent.CLICKclicca);//funzione clicca numero 2
            
    function clicca(e:MouseEvent):void
            
    {
                 var 
    myTween:Tween = new Tween(puls"x"Elastic.easeOutpuls.xpuls.x+103true);
            }
         }

    come vdete dove c'è scritto funzione clicca numero 2 come faccio a rimuoverla per lasciare in ciclo il movimento

    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

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    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.CLICKclickHandler);
    function 
    clickHandler (evt:MouseEvent):void {
        if (
    n/Math.abs(n) == 1) {
            
    Tweener.addTween(c, {x:c.x+ntime:3transition:"easeoutelastic"});
            
    n*=-1
        
    } else {
            
    Tweener.addTween(c, {x:c.x+ntime:3transition:"easeoutelastic"});
            
    Math.abs(n);
        }
    }
    // due note:
    // Circle è una mia classe che crea un cerchio
    // ho usato la tween caurina al posto della Tween nativa 

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    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.


    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(400102025);
    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(100100250250);
    quadrato.graphics.endFill();
    addChild(quadrato);

    //ed ecco il movimento di cui ho bisogno
    stage.addEventListener(MouseEvent.MOUSE_MOVEmousemove);
    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.CLICKridimensiona)

    function 
    ridimensiona(e:MouseEvent):void
    {
        
    stage.removeEventListener(MouseEvent.MOUSE_MOVEmousemove);//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.CLICKritorna)
    function 
    ritorna(e:MouseEvent):void
    {
        
    quadrato.x=100;
        
    quadrato.y=100;
        
    quadrato.width=250;
        
    quadrato.height=250;
        
    pulsante.visible=false;
        
    stage.addEventListener(MouseEvent.MOUSE_MOVEmousemove);
        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;
        }
        

    QUINDI ALLA FINE HO RICREATO L'EVENTO DELL ASCOLTATORE, MA POI NON ME LO RIMUOVE PIU' QUANDO CLICCO SUL QUADRATO AL CENTRO...
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    ah dimenticavo il codice della funzione stage è un applicativo 3D quindi occorre provarlo con Flash CS4

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    Ciao ho studiato il tuo codice e sono riuscito ad applicare l'effetto
    ...
    grazie per l'ennesimo aiuto...

    Ciao
    Tony

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.