Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Caricare link dinamicamente da db

    Salve, questo è il mio promo post, perciò saluto tutti...

    Premetto di essere una newbie con actionscript e, purtroppo, per esigenze lavorative, ho dovuto cominciare da qualcosa di piuttosto complicato.

    Ho bisogno di un aiuto con questo script che ho inserito in un template che l'azienda per cui lavoro ha acquistato per un sito di un cliente.

    Lo script carica dinamicamente da db mysql (un file php esegue la query e manda i valori al filmato flash) delle immagini, del testo e dei link che devo inserire al release di un button.

    Ecco il codice associato al movie clip costituito a sua volta da altri tre mc (l'immagine, il testo ed il mc che contiene il button).

    Codice PHP:
    onClipEvent(load) {
    loadData = new LoadVars();
    loadData.onLoad = function(){
       for(
    i=0i<this.toti++) { //finchè esistono records
          
    if (i>0)  // se non è il primo record duplico i filmati
          
    {
             
    // duplico il mc che contiene l'immagine
             
    var contenitore:MovieClip image.duplicateMovieClip("image"+ii);
             
    //Setto le proprietà per l'immagine
             
    setProperty ("image"+i_y120*(i));
             
    // duplico il mc che contiene il testo
             
    testo.duplicateMovieClip("testo"+i20+i);
             
    // duplico il mc che contiene il button
             
    var bottone:MovieClip butt.duplicateMovieClip("butt"+i40+i);
             
    //Setto le proprietà per il testo
             
    if (i==1){ // proprietà del secondo elemento
                
    setProperty ("testo"+i_y220);
                
    setProperty ("butt"+i_y230);
             } else { 
    // proprietà degli elementi successivi al secondo
                
    j=i-1;
                
    setProperty ("testo"+i_ygetProperty("testo"+j_y)+110+(i*4));
                
    setProperty ("butt"+i_ygetProperty("butt"+j_y)+111+(i*4));
             }
             
    // setto valori per testo, immagine e button
             
    eval("testo"+i).cliente0 this["cliente"+i]; // this["cliente"+i] caricato da db

             
    prova this["immagcli"+i]; // this["immagcli"+i] caricato da db
             
    var mcLoader:MovieClipLoader = new MovieClipLoader()
             
    mcLoader.loadClip(provacontenitore);
                
             
    provacli this["cliente"+i];            
             
    bottone.area.onRelease = function() {
                
    getURL("http://" provacli"_blank");
             }
                
          } else {  
    // setto i valori per il primo mc
             
    eval("testo").cliente0 this["cliente"+i];
             
    provacli this["cliente"+i];
             
    butt.area.onRelease = function() {
                
    getURL("http://" provacli"_blank");
             }
          }
       }
    // end function

    loadData.load("pages/clienti.php");
    // end onClipEvent 
    Il risultato che ottengo è che il button linkerà per ogni sua occorrenza sempre al link corrispondente al valore dell'ultimo record caricato dal db.

    Ho provato anche caricando i record singolarmente, ad esempio:

    Codice PHP:
    provacli this["cliente"+i];
             
    butt1.area.onRelease = function() {
                
    getURL("http://" provacli"_blank");
             } 
    e così funziona, ma non riesco a far ciclare il valore come dovrebbe.

    In pratica il valore del link del button dovrebbe per ogni button corrispondere al testo sottostante, ma così non accade.

    Non so se mi sono spiegata, purtroppo il problema è piuttosto complesso ed io abbastanza inesperta...

    Spero riusciate ad aiutarmi un pochino... sono disperata!!!

    Grazie a tutti,
    Banshee
    Grazie.

    --
    Banshee

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182

    Re: Caricare link dinamicamente da db

    è un comportamento normale in realtà perchè quando "apri" la funzione per l'onRelease, è come se uscissi dal ciclo (la cosa è un po' più complessa da spiegare e ora non ho il tempo di farlo, ma l'ho già fatto in altre discussioni...)

    per risolvere la cosa basta assegnare la variabile che ci interessa direttamente al clip che fa l'onRelease e richiamarla da dentro la funzione con this.variabile

    nel tuo caso dovrebbe essere una cosa del genere

    codice:
    onClipEvent(load) {
    loadData = new LoadVars();
    loadData.onLoad = function(){
       for(i=0; i<this.tot; i++) { //finchè esistono records
          if (i>0)  // se non è il primo record duplico i filmati
          {
             // duplico il mc che contiene l'immagine
             var contenitore:MovieClip = image.duplicateMovieClip("image"+i, i);
             //Setto le proprietà per l'immagine
             setProperty ("image"+i, _y, 120*(i));
             // duplico il mc che contiene il testo
             testo.duplicateMovieClip("testo"+i, 20+i);
             // duplico il mc che contiene il button
             var bottone:MovieClip = butt.duplicateMovieClip("butt"+i, 40+i);
             //Setto le proprietà per il testo
             if (i==1){ // proprietà del secondo elemento
                setProperty ("testo"+i, _y, 220);
                setProperty ("butt"+i, _y, 230);
             } else { // proprietà degli elementi successivi al secondo
                j=i-1;
                setProperty ("testo"+i, _y, getProperty("testo"+j, _y)+110+(i*4));
                setProperty ("butt"+i, _y, getProperty("butt"+j, _y)+111+(i*4));
             }
             // setto valori per testo, immagine e button
             eval("testo"+i).cliente0 = this["cliente"+i]; // this["cliente"+i] caricato da db
    
             prova = this["immagcli"+i]; // this["immagcli"+i] caricato da db
             var mcLoader:MovieClipLoader = new MovieClipLoader()
             mcLoader.loadClip(prova, contenitore);
    			
             bottone.area.provacli = this["cliente"+i];			
             bottone.area.onRelease = function() {
                getURL("http://" + this.provacli, "_blank");
             }
    			
          } else {  // setto i valori per il primo mc
             eval("testo").cliente0 = this["cliente"+i];
             butt.area.provacli = this["cliente"+i];
             butt.area.onRelease = function() {
                getURL("http://" + this.provacli, "_blank");
             }
          }
       }
    } // end function
    
    loadData.load("pages/clienti.php");
    } // end onClipEvent
    non ho letto tutto lo script, ma mi pare che le modifiche da fare siano solo quelle due

  3. #3
    Ti ringrazio, sei stato di grande aiuto...

    Purtroppo ho dovuto risolvere in tempi brevi il problema e non ho potuto leggere un manuale con calma, quindi non ho dimistichezza con le variabili e i puntatori vari.

    Grazie ancora... ora sono più tranquilla e magari mi studio con più calma questo benedetto Actionscript!!! A proposito, sai consigliarmi un buon manuale online?


    Grazie, grazie, grazie
    Grazie.

    --
    Banshee

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mi hanno detto alcune volte che io non faccio testo sulla scelta dei manuali... quello che ho imparato di base l'ho fatto dal manuale ufficiale di Flash (quello che trovi premendo F1 quando ti trovi dentro al programma),

    comunque ti posso dire che se hai già delle basi su linguaggio che derivano dal C, dovresti riuscire senza tantissime difficoltà ad assimilare la sintassi del linguaggio... poi vabbè è molto vasto e molte cose conviene impararle quando servono,

    io per imparare ho seguito parecchi tutorial che puoi trovare in questo stesso network (html.it) in particolare nel sito di flash (flash.html.it), poi sul web ci sono una marea di tutorial e guide per tutti i gusti, dalle basi di AS a cose decisamente più complesse e particolari (un esempio è gotoandlearn.com)

  5. #5
    Ottimo!
    Grazie.

    --
    Banshee

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