• User

    [Risolto] Doppio click con action script

    Sto cercando di fare uno script x gestire un doppio click.
    la logica è questa:
    alla prima cliccata si avvia un timer, se dopo 200ms non viene effettuato l altro click, tutto si resetta e parte dall inizio, altrimenti, "doppio click avvenuto"...
    ma non va ... più precisamente lo script non effettua l intervallo "torna"....
    here u are the script..

    onClipEvent(load)
    {clic=0;}
    on(release)
    { if(clic == 1)
    {trace("doppio click avvenuto");
    }
    if (clic==0)
    { clic=1;

        torna =  setInterval(torno,200);
        function torno()
        {clic=0;
                clearInterval(torna);
                trace("entro");}}}
    

    help meeeeeeeeeeeee


  • Super User

    Ciao 🙂

    Non scrivere codice sui bottoni:)

    Questo è lo script che ti ho scritto:

    
    var click:Boolean=false;
    var timer:Number=0;
    var timer2:Number=0;
    mio_mc.onPress=function() 
    {
     if(!click) 
     {
      timer=getTimer()/1000;
      click=true;
     }
     else
     {
      timer2=getTimer()/1000;
      this.test2=timer2-timer;
      if((timer2-timer)<.25)
       trace('doppio click'); 
      else
      {
       timer=getTimer()/1000;
       click=true;
      }
     }
    };
    
    

  • User

    getTimer????
    ma c è nell 8??

    e cmq vorrei capire xke non entrava in quell intervallo...x capire...


  • Super User

    getTimer c'è nella versione 8 .

    Il perchè il tuo codice non funziona ?

    Perchè la variabile clic è una variabile locale, per cui vale solo all' interno dell' evento, poi viene rimossa dalla memoria.

    Dovresti crearla sulla root e richiamarla _root.clic

    Ecco perchè ti sconsiglio di scrivere codice sulle MovieClip, scrivi sulla timeline...risulta anche molto più semplice per gli apprendisti 🙂


  • User

    allora questo dovrebbe andare bene se lo metto nel root?

    _root.mc.onLoad = function()
    {clic=0;}
    _root.mc.onRelease= function()
    { if(clic == 1)
    {trace("doppio click avvenuto");
    }
    if (clic==0)
    { clic=1;
    torna = setInterval(torno,200);
    function torno()
    {clic=0;
    clearInterval(torna);
    trace("entro");}}}


  • Super User

    no non mi hai capito.

    La variabile clic la devi dichiarare nella root.
    Nel primo keyframe della root scrivi:
    var clic:Number=0;

    poi per richiamarla:
    onClipEvent(load)
    {_root.clic=0;}

    e comunque se hai più di un keyframe, anche se la scrivi nel primo keyframe la variabile rimarrebbe locale in quanto al successivo keyframe Flash la cancella e ne libera memoria.


  • User

    volendo il tuo codice si può un pò semplificare così:

    var timer:Number=0;
    var timer2:Number=0;
    mio_mc.onPress=function()
    {timer2=getTimer()/1000;
    this.test2=timer2-timer;
    if((timer2-timer)<.25)
    trace('doppio click');
    else
    { timer=getTimer()/1000;
    click=true;
    }
    }

    Cmq ok grazie 1000 risolto...