Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Evitare codice ridondante

    Ciao a tutti,
    vorrei sottoporvi questo problema che nella mia immaginazione potrebbe essere risolto, spero anche nella realtà :master:

    Ho un filmato con 4 movieclips, che si chiamano container001_mc, container002_mc, container003_mc, container004_mc.

    Ciascuno di questi contiene altri movieclips e tutti fanno esattamente le stesse cose, cioè caricare un'immagine, aprire una popup con un ingrandimento, aprire un link ad un pdf.

    Il problema è che ogni volta mi sembra di scrivere codice ripetitivo, deve esserci un'altro metodo!
    Mi aiutate?

    Il codice che ho utilizzato io (funzionante) è questo:

    codice:
    //CONTAINER001
    this.container001_mc.loadmovie("001-p.jpg");
    this.container001_mc.light_btn.onRelease = function() {
          getURL("001.jpg", "_blank");
    }
    this.container001_mc.download_btn.onRelease = function() {
          getURL("001.pdf", "_blank");
    }
    //CONTAINER002
    this.container002_mc.loadmovie("002-p.jpg");
    this.container002_mc.light_btn.onRelease = function() {
          getURL("002.jpg", "_blank");
    }
    this.container002_mc.download_btn.onRelease = function() {
          getURL("002.pdf", "_blank");
    }
    //CONTAINER003
    this.container003_mc.loadmovie("003-p.jpg");
    this.container003_mc.light_btn.onRelease = function() {
          getURL("003.jpg", "_blank");
    }
    this.container003_mc.download_btn.onRelease = function() {
          getURL("003.pdf", "_blank");
    }
    //CONTAINER004
    this.container004_mc.loadmovie("004-p.jpg");
    this.container004_mc.light_btn.onRelease = function() {
          getURL("004.jpg", "_blank");
    }
    this.container004_mc.download_btn.onRelease = function() {
          getURL("004.pdf", "_blank");
    }
    Grazie,
    Cecco
    www.inconsueta.com - Grafica, Web e Timbri

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    se ne hai meno di 10 pulsanti puoi fare così:
    Codice PHP:
    for (i=1i<5i++){
    this["container00"+i+"_mc"].loadmovie("00"+i+"-p.jpg");
    this["container00"+i+"_mc"].light_btn.onRelease = function() {
          
    getURL("00"+i+".jpg""_blank");
    }
    this["container00"+i+"_mc"].download_btn.onRelease = function() {
          
    getURL("00"+i+".pdf""_blank");
    }

    se ne hai di più è meglio che togli dai nomi 001, 002 e lasci 1, 2 etc..
    provala perchè non ho potuto testarla in quanto dove sono NON ho flash..

  3. #3
    Ne ho di più infatti.. Finora sono 67, ma il numero è in crescita. Il fatto è che i file si chiamano così, anche per questione di ordine.. Ora cmq provo.

    Grazie
    www.inconsueta.com - Grafica, Web e Timbri

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    allora aspetta perchè ti conviene chiamare i pulsanti 1, 2 eccetera e anche le immagini, sennò tocca fare degli if che se i < 10 aggiunge 2 zeri, se i < 100 ne aggiunge 1 solo..
    intanto ti conviene provare questo..
    Codice PHP:
    for (i=1i<150i++){
    this["container"+i+"_mc"].loadmovie(i+"-p.jpg");
    this["container"+i+"_mc"].light_btn.onRelease = function() {
          
    getURL(i+".jpg""_blank");
    }
    this["container"+i+"_mc"].download_btn.onRelease = function() {
          
    getURL(i+".pdf""_blank");
    }

    ma il mio script ti funziona?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    18
    ...puoi anche generalizzare formattando con zeri in base alla lunghezza della var i ( evitando cosi' gli if e mantenendo i nomi esistenti )

    Codice PHP:

    // ... conversione di un contatore in string  
    //     a lunghezza fissa con riempimento di zeri 

    // ... es. conv. in String a 4 cifre con ZERI  
    var zeri :String "0000";       

    var 
    ctr  :String

    for (var 
    i:uint=115i++)
    {
        
    ctr zeri String(i);
        
    ctr ctr.substr((String(i).length), zeri.length);

        
    // ... test 
        
    trace("container" ctr "_mc");
        
    tracectr "-p.jpg");
        
    tracectr ".pdf");

        
    // ...     
        
    this["container" ctr "_mc"].loadmoviectr "-p.jpg"); 

        
    this["container" ctr "_mc"].light_btn.onRelease = function()
        { 
            
    getURL(ctr ".jpg""_blank"); 
        }

        
    this["container" ctr "_mc"].download_btn.onRelease = function()
        { 
            
    getURL(ctr ".pdf""_blank"); 
        } 


  6. #6
    @telegio: i tuoi script li ho provati.. sia uno che l'altro, ma non vanno. Mi ero dimenticato nel postare il codice iniziale che dentro container00x c'è loadervuoto_mc, cmq anche facendo la modifica non cambia nulla.. Non carica le anteprime, non vanno i collegamenti.

    @silver55: il tuo script non l'ho potuto provare nel sito, perchè questo è composto da 650 pagine in Actionscript 2.0, mentre il tuo codice è in AS 3.0.. Il problema è che il 2 non ha la funzione uint, non so con cosa sostituirla..

    ------

    Io ho cmq provato a scrivere un codice ex novo, con un array, avevo già pensato alla cosa del'if che citava telegio, e ho scritto così:

    Codice PHP:
    var btnList:Array = [btn0btn1btn2btn3btn4btn5btn6btn7btn8btn9btn10btn11btn12btn13btn14btn15btn16btn17btn18btn19btn20btn21btn22btn23btn24btn25btn26btn27btn28btn29];

    for (var 
    b:Number 0b<btnList.lengthb++) {
        if (
    this.id<=9) {
            eval(
    "container00"+b+"_mc").loadervuoto_mc.loadMovie("rassegna_st/00"+b+"-p.jpg");
            eval(
    "container00"+b+"_mc").download_btn.id b;
            eval(
    "container00"+b+"_mc").light_btn.id b;
            eval(
    "container00"+b+"_mc").download_btn.onPress = function() {
                
    getURL("rassegna_st/00"+b+".pdf""_blank");
            };
            eval(
    "container00"+b+"_mc").light_btn.onPress = function() {
                
    getURL("rassegna_st/00"+b+".jpg""_blank");
            };
        } else if (
    this.id>9) {
            eval(
    "container0"+b+"_mc").loadervuoto_mc.loadMovie("rassegna_st/0"+b+"-p.jpg");
            eval(
    "container0"+b+"_mc").download_btn.id b;
            eval(
    "container0"+b+"_mc").light_btn.id b;
            eval(
    "container0"+b+"_mc").download_btn.onPress = function() {
                
    getURL("rassegna_st/0"+b+".pdf""_blank");
            };
            eval(
    "container0"+b+"_mc").light_btn.onPress = function() {
                
    getURL("rassegna_st/0"+b+".jpg""_blank");
            };
        }

    Anche se mi sembra una cavolata farlo così, però funziona per le prime 9, cioè se i<=9. L'else if non va per niente.
    www.inconsueta.com - Grafica, Web e Timbri

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    18
    ... si scusa, puoi eliminare la dichiarazione
    questo e' in AS2

    Codice PHP:
    var zeri :String "0000";      
    var 
    ctr  :String

    for (
    i=115i++)
    {
        
    ctr zeri String(i);
        
    ctr ctr.substr((String(i).length), zeri.length);

        
    trace("container" ctr "_mc");
        
    tracectr "-p.jpg");
        
    tracectr ".pdf");

        
    // ... etc ...     


  8. #8
    Infatti avevo tentato proprio così e.... FUNZIONA!!!

    Posto il codice corretto:

    Codice PHP:
    // ... conversione di un contatore in string   
    //     a lunghezza fissa con riempimento di zeri 

    // ... es. conv. in String a 3 cifre con ZERI   
    var zeri:String "000";
    var 
    ctr:String;
    for (var 
    1i<68i++) {
        
    ctr zeri+String(i);
        
    ctr ctr.substr((String(i).length), zeri.length);
        
    // ... test 
        
    trace("container"+ctr+"_mc");
        
    trace(ctr+"-p.jpg");
        
    trace(ctr+".pdf");
        
    // ...      
        
    this["container"+ctr+"_mc"].loadervuoto_mc.loadMovie("rassegna_st/"+ctr+"-p.jpg");
        
    this["container"+ctr+"_mc"].light_btn.onRelease = function() {
            
    getURL("rassegna_st/"+ctr+".jpg""_blank");
        };
        
    this["container"+ctr+"_mc"].downloadpdf_btn.onRelease = function() {
            
    getURL("rassegna_st/"+ctr+".pdf""_blank");
        };



    Grazie a entrambi per la collaborazione!
    Cecco
    www.inconsueta.com - Grafica, Web e Timbri

  9. #9
    Aspè.. vedi cosa succede a parlare troppo presto?

    Succede una cosa stranissima.
    Le anteprime vengono caricate tutte correttamente tramite loadMovie.
    Però i link funzionano male, non so perchè. Su qualunque anteprima io faccia click, si apre sempre o 067.jpg, o 067.pdf. Se cambio la dicitura

    Codice PHP:
    for (var 1i<68i++) 
    e scrivo qualunque altro numero, tipo:

    Codice PHP:
    for (var 1i<15i++) 
    Si apre sempre la 14.. Ovvero sempre un numero inferiore a quello che c'è scritto nella dichiarazione in mezzo..

    Che faccio?
    www.inconsueta.com - Grafica, Web e Timbri

  10. #10
    Sto provando in mille modi, ma non riesco assolutamente.. Qualche idea?
    Devo postare il link al filmato, così lo vedete?

    Cecco
    www.inconsueta.com - Grafica, Web e Timbri

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.