• User Newbie

    Pulsante che comanda funzione su frame successivo

    E' un po contorto...anche il titolo del post! :():

    Ho un swf composto di un solo frame nella _root..
    Per fare in modo che non si esegua lo script che si trova appunto su questo frame all'avvio, ho risolto spostando tutto sul frame 2 mentre sul primo ho messo uno stop e creato un pulsante che al suo on release mi va al frame 2!
    perfetto..
    il problema è che una volta spostato sul frame 2 devo cliccare nuovamente su un pulsante per eseguire una funzione..
    mentre vorrei che il primo pulsante oltre a spostarmi sul frame 2 comandi anche la funzione..

    Sul secondo frame ho (in rosso è quello che dovrebbe comandare):

    playlist = new XML();
    playlist.ignoreWhite = true;
    playlist.onLoad = function(success) {
        if (success) {
            songfile = [];
            for (var i = 0; i<playlist.firstChild.childNodes.length; i++) {
                songfile* = playlist.firstChild.childNodes*.attributes.file;
            }
        }
        createEmptyMovieClip("sound_mc", 1);
        song_nr = random(songfile);
        sound_mc.songStarter(songfile[song_nr]);
        sound_mc.sound_obj.stop();
    };
    MovieClip.prototype.songStarter = function(file) {
        if (this.sound_obj) {
            this.sound_obj.stop();
            delete this.sound_obj;
        }
        this.sound_obj = new Sound(this);
        this.sound_obj.loadSound(file, true);
        this.onEnterFrame = function() {
            if (this.sound_obj.position>0) {
                delete this.onEnterFrame;
            }
        };
        this.sound_obj.onSoundComplete = function() {
            (song_nr == songfile.length-1) ? song_nr=0 : song_nr++;
            sound_mc.songStarter(songfile[song_nr]);
        };
    };
    
    goSound = "yes";
    btn.onRelease = function() {
        if (goSound == "no") {
            sound_mc.songStarter(songfile[song_nr]);
            btn.gotoAndStop(2);
            goSound = "yes";
        } else {
            sound_mc.sound_obj.stop();
            btn.gotoAndStop(1);
            goSound = "no";
        }
    };
    playlist.load("xml/releases/001/001_a1.xml");
    stop();
    ```Allego il fla per far capire meglio il problema..
    Spero possiate aiutarmi!
    Ciao Bonjo  :ciauz:

  • Super User

    Ciao bonjo e benvenuto nella sezione Flash 🙂

    Non ho capito: il primo pulsante lo mantieni anche nel secondo frame ?


  • User Newbie

    Ciao Flep!
    Si..sul secondo frame deve esserci il pulsante che c'è sul primo...almeno questa è la mia idea!
    Per ora ho risolto con due pulsanti mettendo un rollOver sul primo pulsante (primo frame) il quale al passaggio del mouse mi fa passare al secondo frame dove alla pressione mi parte la riproduzione!
    E' un espediente però che non vorrei usare!
    Vorrei che alla pressione del pulsante sul primo frame passasse al secondo frame dove mi carica l'xml e parte la riproduzione grazie appunto alla pressione del primo pulsante...


  • Super User

    Se riesco a capire bene quale è il fine dovrei riuscire a darti un consiglio migliore.
    Dal tuo ultimo post ho capito che utilizzi lo stesso bottone in entrambi i frames e sul rollover di questo fai passare al secondo frame.

    Non sarebbe meglio che tieni un solo frame e al rollover del bottone col codice fai eseguire una data azione, al click carichi l' xml ?


  • User Newbie

    Potrebbe essere..
    Il mio unico problema era non avere il codice che carica l'xml sul primo frame...in quanto nel mio progetto avrei 50 playerini da associare a dei titoli..
    se tutti leggono l'xml sul primo frame mi rallentano di molto la navigazione, almeno fino al momento in cui finisce la lettura dei file.

    Cosa mi consigli?


  • Super User

    Il rallentamento credo sia dovuto a come carichi i 50 xml , forse bisognerebbe ottimizzare il codice


  • User Newbie

    il codice che utilizzo nei playerini è come sopra nel primo post..
    Se messo sul primo frame dei playerini, una volta attacchati anche loro da xml..vanno a leggere l'xml tramite:

    playlist.load("xml/releases/001/001_a1.xml");
    

    il quale 001_a1.xml indica l'url dell'mp3.
    Leggendolo e praticamente scaricandolo..


  • Super User

    Si daccordo, quello è per uno player,
    gli altri come li carichi, tutti insieme ? Sono degli swf che carichi che contengono tutti quel codice ? Carichi tutti gli swf con un ciclo ?
    Oppure sono 50 swf inseriti in una pagina html ?


  • User Newbie

    Carico tutti i player con un ciclo for..

    in base al numero dei nodi presenti in un xml mi si duplica un mc che al suo interno richiama appunto gli attributi dell'xml...titolo, artista, numero di catalogo, immagini con loadMovie in un target mc e stessa cosa per il playerino..
    Se vuoi allego il progetto alleggerito!


  • Super User

    A quel punto puoi fare solo una cosa:
    invece di caricarli con ciclo, dovresti utilizzare una classe che carica il primo xml, avvenuto il caricamento passa al secondo e così via.

    Puoi farlo anche senza una classe tua, dovresti implementare delle logiche diverse da un ciclo.


  • User Newbie

    il primo xml? O il primo nodo xml?
    Ora mi perdo..


  • Super User

    Non hai un xml per ogni player ?