Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13

    MouseEvent.CLICK e currentTarget (AS3)

    Ciao a tutti!
    Un po' di tempo fa me la cavavo abbastanza con flash e ActionScript, ma ora mi trovo ad usare il Flash CS3 e non riesco a venire a capo di un problema.

    Devo realizzare una mappa interattiva della mia zona, con la possibilità di caricare una determinata pagina cliccando sul pulsante relativo.

    Ho cercato un po' nell'help e su internet e ci sono col sistema per associare le funzioni al click del mouse:


    Codice PHP:
    paese1_btn.addEventListener(MouseEvent.CLICKbuttonClickHandler);

    function 
    buttonClickHandler(event:MouseEvent) {
        
    navigateToURL(new URLRequest(basepath+"paese"));

    Avendo al momento una 20ina di paesi, dovrei ripetere questo codice per tutti e 20 i pulsanti, creando 20 funzioni diverse?

    Alla fine, sarebbe tutto più facile, anche in casi di manutenzioni future, se riuscissi a passare alla funzione buttonClickHandler un secondo valore, ovvero il nome del paese relativo al pulsante premuto, che viene poi unito al basepath nel navigateToURL, giusto?

    Nell'help ho trovato che il CLICK dovrebbe avere la proprietà currentTarget, però non ho proprio capito come sfruttarla. O se è quello che serve a me.

    Ringrazio tutti in anticipo per la disponibilità
    g10r3

  2. #2
    Puoi usare proprio currentTarget, ad esempio

    codice:
    paese1_btn.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    paese2_btn.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    paese3_btn.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    paese4_btn.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    paese5_btn.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    
    function buttonClickHandler(event:MouseEvent) {
       trace(event.currentTarget)
    }
    A seconda del pulsante premuto otterrai "paese1_btn","paese2_btn" e così via. Potresti eventualmente dare come nome istanza ad ogni pulsante il paese di riferimento, in modo da avere ad esempio

    codice:
    italia.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    spagna.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    francia.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    
    function buttonClickHandler(event:MouseEvent) {
       trace("Stato cliccato:" + event.currentTarget)
    }
    La funzione principale sarà unica (buttonClickHandler), dovrai solamente associare l'evento MouseEvent.CLICK a tutti i pulsanti che vuoi richiamino questa funzione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13
    ciao!
    grazie per la risposta!

    quindi, se ad ogni pulsante assegno un nome di istanza corretto, potrei addirittura già fare:


    Codice PHP:
    italia.addEventListener(MouseEvent.CLICKbuttonClickHandler);
    spagna.addEventListener(MouseEvent.CLICKbuttonClickHandler);
    francia.addEventListener(MouseEvent.CLICKbuttonClickHandler);

    function 
    buttonClickHandler(event:MouseEvent) {
       
    navigateToURL(new URLRequest(basepath+event.currentTarget));


  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13
    mi rispondo da solo: mi restituisce [object%20SimpleButton] e non il nome dell'istanza

  5. #5
    Hai ragione, currentTarget restituisce il riferimento all'oggetto, avevo scordato una parte , per ricavare il nome ti basta usare la proprietà name dell'oggetto restituito dal currentTarget, così

    codice:
    italia.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    spagna.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    francia.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    
    function buttonClickHandler(event:MouseEvent) {
    	trace(event.currentTarget.name)
    }
    Supponendo tu abbia le pagine italia.html, spagna.html e francia.html potresti fare, come giustamente avevi ipotizzato, nel seguente modo:

    codice:
    italia.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    spagna.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    francia.addEventListener(MouseEvent.CLICK, buttonClickHandler);
    
    function buttonClickHandler(event:MouseEvent) {
    	navigateToURL(new URLRequest(basepath + event.currentTarget.name + ".html"))
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    13
    Funziona!!
    Grazie mille!!

    Ed era pure una cavolata.. ma questo AS3 mi ha lasciato un (bel) po' spaesato..

  7. #7
    Felice di averti aiutato , alla prossima

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 © 2024 vBulletin Solutions, Inc. All rights reserved.