- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Stessa funzione per più pulsanti
-
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");}
-
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") }
-
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?
-
Ricontrolla le istanze perchè il codice prima di postarlo lo ho testato, a volte basta un niente specialmente con as3.
-
ma sono giusti i nomi istanza che ho messo?
-
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?