• User

    Stessa funzione per più pulsanti

    Buongiorno, mi sto addentrando nel mondo ActionScript e vorrei chiedere un piccolo aiutino...

    Il seguente codice mi serve per rendere un clip in un bottone, a cui assegno poi una piccola animazione.
    Siccome questa operazione la dovrei ripetere 6 volte, tante quante i numeri di bottoni che devo animare, stavo cercando un modo per assegnare le stesse funzioni a più pulsanti, per non ripetere tutto ogni volta.

    Ho provato a fare un po' di ricerche, ma non ho trovato granché a proposito e quel poco che ho trovato non sono riuscito a farlo funzionare. :bho:

    
    // Button 1
    // mouse event list
    myMc.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
    myMc.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);
    myMc.addEventListener(MouseEvent.CLICK, onClickHandler);
    myMc.addEventListener(MouseEvent.MOUSE_DOWN, onPressHandler);
    myMc.addEventListener(MouseEvent.MOUSE_UP, onReleaseHandler);
    
    // getting a hand cursor
    myMc.buttonMode = true;
    myMc.useHandCursor = true;
    
    // function list
    function onRollOverHandler(myEvent:MouseEvent){trace("Over");myMc.gotoAndPlay(2);}
    function onRollOutHandler(myEvent:MouseEvent){trace("Out");myMc.gotoAndPlay(16);}
    function onClickHandler(myEvent:MouseEvent){trace("I waited for Press AND Release!!!");}
    function onPressHandler(myEvent:MouseEvent){trace("Press");}
    function onReleaseHandler(myEvent:MouseEvent){trace("Release");}
    
    

  • Super User

    Ciao, se non vuoi copiare e incollare il codice più volte devi creare un Array e leggerlo con un ciclo for. Questo per 4 pulsanti

    
    var myMc:Array =new Array(myMc_1,myMc_2,myMc_3,myMc_4)
    for(var i:Number=0;i<myMc.length;i++)
    {
        myMc*.buttonMode=true
    myMc*.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
    myMc*.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);
    myMc*.addEventListener(MouseEvent.CLICK, onClickHandler);
    myMc*.addEventListener(MouseEvent.MOUSE_DOWN, onPressHandler);
    myMc*.addEventListener(MouseEvent.MOUSE_UP, onReleaseHandler);
    }
    function onRollOverHandler(evento:MouseEvent):void
    {evento.target.gotoAndStop(1)//o altra azione
    trace ("Mouse sopra")
    }
    function onRollOutHandler(evento:MouseEvent):void
    {evento.target.gotoAndStop(1)//o altra azione
    trace("Mouse fuori")
    }
    function onClickHandler(evento:MouseEvent):void
    {evento.target.gotoAndStop(1)//o altra azione
    trace("Click")
    }
    function onPressHandler(evento:MouseEvent):void
    {evento.target.gotoAndStop(1)//o altra azione
    trace("Mouse giù")
    }
    function onReleaseHandler(evento:MouseEvent):void
    {evento.target.gotoAndStop(1)//o altra azione
    trace("Mouse su")
    }
    
    

  • User

    ok, innanzi tutto grazie per la risposta!

    Mi restituisce un errore nella prima parte del codice:

    1120: Accesso alla proprietà non definita myMc_1.
    1120: Accesso alla proprietà non definita myMc_2.
    ecc.

    Non so se forse ho sbagliato a dare il nome istanza a questo punto, perché il codice mi sembra tale e quale a quello che mi hai postato tu (l'ho controllato più volte).
    I nomi istanza dei pulsanti sono: myMc_1 per il primo bottone, myMc_2 per il secondo e così via.....
    Dove sbaglio? :arrabbiato:


  • Super User

    Ricontrolla le istanze perchè il codice prima di postarlo lo ho testato, a volte basta un niente specialmente con as3.


  • User

    ma sono giusti i nomi istanza che ho messo?


  • User

    mmh ok ho risolto quell'errore, non avevo specificato correttamente il percorso:
    var myMc:Array =new Array(mc_menu.myMc_1,mc_menu.myMc_2,mc_menu.myMc_3,mc_menu.myMc_4)

    Il problema è che ora ho quest'altro errore:

    TypeError: Error #1010: Un termine risulta undefined e non ha proprietà.
    at home_fla::MainTimeline/frame1()

    Cosa significa?