Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195

    [AS3] removeEventListener

    Salve,

    aggiungo degli eventi ad un mcl_profilo: DisplayObject (il vecchio clipfilmato)
    perchè lo rendo un pulsante (o almeno qualcosa che gli somiglia)

    Codice PHP:

    function myAddEventListener(objDisplayObject){
        
    obj.addEventListener(MouseEvent.MOUSE_OVERmouseHandler);
        
    obj.addEventListener(MouseEvent.MOUSE_UPmouseHandler);
            
    obj.buttonMode=true;
    }

    myAddEventListener(mcl_profilo);

    function 
    mouseHandler(eMouseEvent){
        
    movimento e.type;
        
    oggetto e.target;
        switch (
    movimento){
            case 
    "mouseOver":
                
    moveOver(oggetto);
                break;
            case 
    "mouseUp":
                
    moveClick(oggetto);
                break;
        }
    }


    function 
    moveOver(mclDisplayObject){
        if(
    mcl.var_move==false){
        
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,-225,-135,-152,0);
            
    mcl.var_move=true;
            var 
    tw:Tween = new Tween(mcl"x"Bounce.easeOutmcl.x283.41true);
        }
    }

    function 
    moveClick(mclDisplayObject){
        
    myAddEventListnerKill(mcl);
        
    var_cliccato=mcl;
        var 
    tw:Tween = new Tween(mcl"y"Strong.easeOutmcl.y359.32true);
        if(
    mcl.var_move==true){
           
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,225,135,152,0);
        }
    }
    function 
    myAddEventListnerKill(mclDisplayObject){
        
    mcl.removeEventListener(MouseEvent.MOUSE_OVERmoveOver);

    il problema è che al MOUSE_UP richiamo la funzione myAddEventListnerKill
    ma questa non rimuove l'evento.

    Credo che la sintassi sia giusta (forse) e non capisco dunque come mai non fa il remove
    Sapreste indicarmi una alternativa o la correzione del mio script?

    Grazie e a presto
    mamma mia che bestia

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    provando il tuo codice ottengo una serie di errori in pubblicazione, a te va liscio?

    [edit] ok, se imposto nelle funzioni il parametro a MovieClip invece che a DisplayObject, e correggo qualche variabile non dichiarata (almeno nel codice che hai proposto) non ottengo più errori e tutto funziona correttamente, questo è il codice modificato:

    Codice PHP:
    import fl.transitions.Tween;
    import fl.transitions.TweenEvent;
    import fl.transitions.easing.*;
    function 
    myAddEventListener (obj:MovieClip) {
        
    trace(obj)
        
    obj.addEventListener (MouseEvent.MOUSE_OVERmouseHandler);
        
    obj.addEventListener (MouseEvent.MOUSE_UPmouseHandler);
        
    obj.buttonMode=true;
    }

    myAddEventListener(test);

    function 
    mouseHandler (eMouseEvent) {
        var 
    movimento e.type;
        var 
    oggetto e.target;
        switch (
    movimento) {
            case 
    "mouseOver" :
                
    moveOver (oggetto);
                break;
            case 
    "mouseUp" :
                
    moveClick (oggetto);
                break;
        }
    }


    function 
    moveOver (mcl:MovieClip) {
        if (!
    mcl.var_move) {
            
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,-225,-135,-152,0);
            
    mcl.var_move=true;
            var 
    tw:Tween = new Tween(mcl"x"Bounce.easeOutmcl.x283.41true);
        }
    }

    function 
    moveClick (mclMovieClip) {
        
    myAddEventListnerKill (mcl);
        var 
    var_cliccato=mcl;
        var 
    tw:Tween = new Tween(mcl"y"Strong.easeOutmcl.y359.32true);
        if (
    mcl.var_move==true) {
            
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,225,135,152,0);
        }
    }
    function 
    myAddEventListnerKill (mclMovieClip) {
        
    mcl.removeEventListener (MouseEvent.MOUSE_OVERmoveOver);


  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195
    Scusa ma ho postato parte del codice probabilmente ho commesso errori, te lo riporto per intero, ma non fare caso alla forma perchè sto programmando

    Codice PHP:

    function myAddEventListener(objDisplayObject){
        
    obj.addEventListener(MouseEvent.MOUSE_OVERmouseHandler);
        
    obj.addEventListener(MouseEvent.MOUSE_OUTmouseHandler);
        
    obj.addEventListener(MouseEvent.MOUSE_UPmouseHandler);
        
    obj.buttonMode=true;
        
    obj.var_move=false;
        
    obj.var_myY=obj.y
    }

    myAddEventListener(mcl_profilo);
    myAddEventListener(mcl_progetti);
    myAddEventListener(mcl_dovesiamo);
    myAddEventListener(mcl_contattaci);

    function 
    mouseHandler(eMouseEvent){
        
    movimento e.type;
        
    oggetto e.target;
        
            switch (
    movimento){
                case 
    "mouseOver":
                    
    moveOver(oggetto);
                    break;
                case 
    "mouseOut":
                    
    moveOut(oggetto);
                    break;
                case 
    "mouseUp":
                    
    moveClick(oggetto);
                    break;
            }
        
    }


    function 
    moveOver(mclDisplayObject){
        if(
    mcl.var_move==false){
        
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,-225,-135,-152,0);
            
    mcl.var_move=true;
            var 
    tw:Tween = new Tween(mcl"x"Bounce.easeOutmcl.x283.41true);
        }
    }
    function 
    moveOut(mclDisplayObject){
        if(
    mcl.var_move==true){
        
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,225,135,152,0);
            
    mcl.var_move=false;
            var 
    tw:Tween = new Tween(mcl"x"Strong.easeOutmcl.x268.42true);
        }
    }
    function 
    moveClick(mclDisplayObject){
        
    myAddEventListnerKill(mcl);
        
    var_cliccato=mcl;
        var 
    tw:Tween = new Tween(mcl"y"Strong.easeOutmcl.y359.32true);
        if(
    mcl.var_move==true){
           
    mcl.transform.colorTransform = new ColorTransform(1,1,1,1,225,135,152,0);
        }
    }
    function 
    myAddEventListnerKill(mclDisplayObject){
        
    mcl.removeEventListener(MouseEvent.MOUSE_OVERmoveOver);

    Questo è il codice che utilizzo per intero e dopo il click dovrei riuscire a rimuovere gli Eventi dal pulsante cliccato

    Come fare?

    P.S. ho visto che mi hai mandato uno script sull'altro post (GRAZIE mille)
    mamma mia che bestia

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    hai visto il mio "edit"?
    comunque anche questo mi da errori... non capisco come faccia a passarti liscio... gli oggetti li crei sullo stage o sono elementi dinamici?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195
    ...ops hai ragione gli oggetti li creo sullo stage belli pronti.

    non mi sono messo a farli dinamicamente

    e ho omesso nello script gli import ma mi sembrava ovvio
    mamma mia che bestia

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195
    A me lo script funziona, ripeto magari è molto spartano, ma quello che mi interessa è sapere come utilizzare il removeEventListener

    in quanto mi sembra che la sintassi sia giusta:

    Codice PHP:
    mcl.removeEventListener(nomeeventofunzione richiamata);
      
    nel mio caso: (mcl.removeEventListener(MouseEvent.MOUSE_OVERmoveOver); 
    ma non capisco come mai non rimuove l'evento associato all'oggeto di tipo DisplayObject

    ora provo a partire da zero con una scena vuota con all'interno un clip

    e cercare di capire come funziona.

    Se magari hai una solution differente fammi sapere. tnx
    mamma mia che bestia

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    gli import sì, li ho aggiunti... ma per esempio anche il "buttonMode" mi da errore se non gli passo come parametro lo strict "MovieClip"
    comunque ho aggiustato le cose e anche a me faceva lo stesso giochetto, finchè non mi sono accorto che nel removeEventListener hai messo la funzione sbagliata da eliminare

    mcl.removeEventListener(MouseEvent.MOUSE_OVER, moveOver);

    ma tu avevi attaccato mouseHandler, non moveOver

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195
    maaaaaa sìììììì

    non ti rendi conto quanto tempo ci ho perso,

    cmq non capisco come mai a te da errori del compilatore mentre a me no

    per esempio buttonMode=true; non mi da errore

    vabbuò cmq grazie and80 come al solito
    mamma mia che bestia

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    l'errore è corretto che ci sia, perchè la classe DisplayObject non ha un metodo "buttonMode", mentre ce l'ha la sottoclasse Sprite che è la classe da cui deriva MovieClip, magari hai impostato qualcosa che non ti elenca gli errori, boh

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.