• User Newbie

    AS2 - loadSound

    Un saluto a tutti, sono nuovo.
    Ho un problema che riguarda uno script

    fscommand("fullscreen", "true");
    var timer:Number=0;
    var timer2:Number=0;
    mio_btn.onPress=function()
    {timer2=getTimer()/1000;
    this.test2=timer2-timer;
    if((timer2-timer)<.25)
    {stopAllSounds();
    one2_mc.play();}
    else
    { timer=getTimer()/1000;
    {click=true;
    var my_sound:Sound = new Sound();
    my_sound.loadSound("giocaconme.mp3", false);
    }
    }
    }

    Il mio intento è che ad un clic del mouse si avvii la riproduzione del suono "giocaconme", mentre ad un doppio clic ogni suono vada via e invece si riproduca il mc one2.
    La seconda parte funziona, la prima no :il file musicale non si avvia. Se lo importo in libreria e uso l'attachSound tutto va bene, ma non gradisco questa soluzione che mi appesantisce inutilmente il file.
    Non ho capito dove sbaglio :arrabbiato:


  • Super User

    Ciao benvenuto sul forum GT, così sembra funzionare.

    
    fscommand("fullscreen", "true");
    var my_sound:Sound = new Sound();
    my_sound.loadSound("giocaconme.mp3", false);
    var timer:Number=0;
    var timer2:Number=0;
    mio_btn.onPress=function()
    {timer2=getTimer()/1000;
    this.test2=timer2-timer;
    if((timer2-timer)<.25)
    {stopAllSounds();
    one2_mc.play();}
    else
    { timer=getTimer()/1000;
    {click=true;
    /*var my_sound:Sound = new Sound();
    my_sound.loadSound("giocaconme.mp3", false);*/
    my_sound.start()
    }
    }
    }
    
    

  • User Newbie

    Grazie Nathan, nella notte ero riuscito a farlo partire, dichiarando la variabile sound appena dopo l'fs command e lasciando il loadSound dov'era. Ma il tuo script mi sembra proprio più professionale, più da programmatore ecco.
    Ti ringrazio, perchè mi consente una maggiore padronanza sul file.
    Una sola domanda.
    Quando faccio il doppio clic sul pulsante e si avvia la riproduzione dell'mc associato, per una frazione di secondo si sente anche il file sonoro mp3 associato al solo clic del mouse.
    Insomma il pc non interpreta subito il doppio clic, ma il primo clic, salvo poi sospenderlo.
    Con le mie registrazioni vocali ho risolto, perchè registro la voce dopo un secondo e dunque non si avverte nulla. Con suoni e canzoni il discorso è diverso : come potrei ovviare ? Magari ritardando il play del file mp3 sul primo clic ? Il tempo che basta a ricevere eventtualmente il secondo clic ?


  • Super User

    Guarda come sai il doppio click in flash as2 nativo non esiste, ci sono degli script che servono a simularlo, uno è quello che hai postato tu, che mi sembra uno script piutosto vecchiotto dal momento che usa getTimer, sicuramente ne esistono di più moderni e performanti, quà ad esempio c'è uno script che fa proprio al caso tuo perchè come in quello da te postato al click fa una cosa al doppio click ne fa un altra, lo ho testato e ti assicuro che è perfetto, molto più rapido nel distinguere i due eventi.
    http://www.actionscript.it/it/index.cfm/tutorials/?tag=Actionscript%202.0&newSearch=1&display=search


  • User Newbie

    Grazie per il link, molto utile la risorsa. Un'ultima domanda, poi nmon voglio scocciare. Secondo te mi converrebbe passare all'AS3 ? E' che lo trovo ancora più ostico di AS2 e poi, con l'avvento di HTML5 mi pare che anche Adobe si sia resa conto che Flash ha i giorni contati :gtsad:


  • Super User

    Sinceramente per quanto mi riguarda spero che flash possa avere ancora lunga vita, per il momento html5 fa molto poco, o visto quello che può fare html5 non c'è paragone almeno per ora, certo tutte le tecnologie invecchiano prima o poi, ma spero poi, anche perché flash non è fermo ma in continuo sviluppo, penso che se non ci fosse stato ostracismo da parte della aple non si sentirebbe parlare di tramonto per flash, per quanto riguarda as2 o as3 dipende da te, tu cosa vuoi fare? Il tuo approccio a flash è stato occasionale? O sei deciso a continuare a sviluppare in flash? Se vuoi continuare ed approfondire devi passare ad as3, se non ti interessa approfondire a parte alcune cose, che so il tuo caso ad esempio, in as3 il doppio click è implementato, oppure se dovessi avere l'esigenza delle google maps si possono fare solo in as3, per il resto con as2 si possono fare ancora la maggior parte delle animazioni.


  • User Newbie

    Sono andato al link che mi hai consigliato ed ho prelevato il codice aggiornato sul doppio clic.
    L'ho dunque inserito nel mio fla e funziona tutto benissimo.
    Il problema sorge quando il doppio clic deve essere rilevato non su un solo pulsante ma sue due ed oltre.
    Io ho provato a fare così, ma la cosa non funziona

    var my_sound:Sound = new Sound();
    my_sound.loadSound("ascsuoni.mp3", false);
    import it.actionscript.classes.DoubleClicker;
    var clickTester:it.actionscript.classes.DoubleClicker = new it.actionscript.classes.DoubleClicker(ascsuoni_btn, 450, singleFunc, doubleFunc);
    function singleFunc():Void{
    my_sound.start();
    }
    function doubleFunc():Void{
    gotoAndStop(5);
    }

    var my_sound2:Sound = new Sound();
    my_sound2.loadSound("ascanim.mp3", false);
    var clickTester2:it.actionscript.classes.DoubleClicker = new it.actionscript.classes.DoubleClicker(ascanim_btn, 450, singleFunc, doubleFunc);
    function singleFunc():Void{
    my_sound2.start();
    }
    function doubleFunc():Void{
    gotoAndStop(10);
    }

    NOn riesco proprio a capire perchè.
    Con il vecchio codice invece tutto fila liscio.
    Visto che sono appena all'inizio dello sviluppo della mia nuova applicazione, domani proverò a rifare tutto daccapo con AS3.
    E' ancora più ostico, ma un amico ha Flash CS5 e mi ha parlato di snippets che agevolano moltissimo la compilazione del codice.
    Mah, io sono appena passato al CS3 che si è già alla 5 !!! Pure Adobe con queste continue nuove versioni ci manda al manicomio. Chi programma in java invece non ha questi problemi o sbaglio ? Ed non è forse anche avvantaggiato nel programmare anche per dispositivi come i cellulari ?
    Flash mi ha dato più volte soddisfazioni infinite in passato, gli sono affezionato anche se mi complica la vita :bigsmile:


  • Super User

    L'errore fondamentale è che non hai rinominato le funzioni singleFunc, doubleFunc del secondo pulsante, poi devi mettere anche degli stop sound per non far accavallare i suoni.

    
    import it.actionscript.classes.DoubleClicker;
    var my_sound1:Sound = new Sound();
    my_sound1.loadSound("sound1.mp3", false);
    var clickTester:it.actionscript.classes.DoubleClicker = new it.actionscript.classes.DoubleClicker(test_mc, 450, singleFunc, doubleFunc);
    
    function singleFunc():Void{
        my_sound1.start()
        my_sound2.stop()
        trace("Single click");
        
    }
    
    function doubleFunc():Void{
        my_sound1.stop()
        my_sound2.stop()
        trace("double click");
        mc.play()
    }
    
    
    
    //////////////////////////////////////////////////////////////////////////////////////////////////
    var my_sound2:Sound = new Sound();
    my_sound2.loadSound("sound2.mp3", false);
    var clickTester:it.actionscript.classes.DoubleClicker = new it.actionscript.classes.DoubleClicker(test2_mc, 450, singleFunc2, doubleFunc2);
    
    function singleFunc2():Void{
        my_sound2.start()
        my_sound1.stop()
        trace("Single click");
        
    }
    
    function doubleFunc2():Void{
        my_sound1.stop()
        my_sound2.stop()
        trace("double click");
        mc.play()
    }
    
    

    PS. quando posti codice mettilo tra i tag [-code] e [-/code] (senza il trattino)


  • User Newbie

    già ... non ho nemmno rinominato le funzioni ... è che quando hai altro per la testa è impossibile programmare ...
    Ti ringrazio infinitamente, per gli aiuti fondamentali che mi hai dato e per alcune risorse sul web che ho scoperto grazie al tuo link.

    Salutami ... Legs ! (se sei un appassionato di fumetti come lo ero io) :gthi:


  • Super User

    Già in effetti il mio nik deriva proprio da li, ciao.