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

    Problema con MovieclipLoader in un ciclo for...next

    Salve a tutti. Superato lo scoglio attachMovie ho un altro problema. Un ciclo for next mi carica 4 immagini Jpg. Siccome ciascuna va centrata in una particolare posizione ho cercato di usare MovieclipLoader per evitare tutti i preload artigianali a base di OnEnterFrame ecc...

    Il codice è il seguente:

    codice:
    order = 0;
    //Creo l'oggetto listener per il successivo MovieclipLoader
    preload = new Object();
    
    //Creo l'oggetto MovieclipLoader e aggancio il listener
    mio_loader = new MovieClipLoader();
    mio_loader.addListener(preload);
    //
    //Attivo l'evento onLoadInit per quando caricherò la foto
    preload.onLoadInit = function(target_mc:MovieClip) {
    	//posiziono il Mc
    	target_mc._x = 25+(175*(order-1)+(150-target_mc._width)/2);
    	target_mc._y = 30+(150-target_mc._height)/2;
    };
    //
    //INIZIA IL CICLO DI POPOLAMENTO
    for (n=1; n<=5; n++) {
    	
    //variabile ausiliaria "order"
    order = n;
    //associo il MC in libreria. L'identificatore del simbolo in libreria è "cornice"
    //var clip definisce una variabile temporanea che identifica l'istanza di "cornice" appena caricata. 
    //Mediante la variabile clip si impartiscono tutti i comandi al mc caricato.
    var clip = this.attachMovie("cornice", ("cornice"+n), getNextHighestDepth());
    ////Posiziono il MC
    clip._y = 30;
    clip._x = 25+(175*(n-1));
    //
    //scrivo nel campo di testo interno al Mc. Il campo si chiama "txt_indice"
    clip.txt_indice.text = "Immagine "+String(n);
    //
    //Creo il Mc che ospiterà la miniatura
    this.createEmptyMovieClip("pic_"+n, getNextHighestDepth());
    //
    //Carico la miniatura "pic_(n)"
    mio_loader.loadClip("pic_"+n+".jpg", "pic_"+n);
    }
    il risultato finale dovrebbero essere quattro cornici con quattro didascalie e l'immagine al centro.
    Se eseguo il codice singolarmente (cioè togliendolo da dentro il ciclo for..next) funziona benissimo e tutti i mc vanno al loro posto.

    All'interno del ciclo for next invece le immgini non me le carica.

    Penso che sia un problema di area di validità di qualcosa ma non riesco a capire cosa è che non va.

    Qualcuno mi può illuminare?

    Grazie
    «Dottore!!! Me sogno sempre de esse' un cane…» «E da quando?» «Da quando ero cucciolo!» (Pippo Franco - anni '70)

  2. #2
    up
    «Dottore!!! Me sogno sempre de esse' un cane…» «E da quando?» «Da quando ero cucciolo!» (Pippo Franco - anni '70)

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    fai l'addListener dell'oggetto "preload" solo dopo avere inizializzato la funzione onLoadInit
    già così la situazione dovrebbe migliorare notevolmente

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    modificato così dovrebbe essere ok, ho levato order che mi pareva che in quel modo assumesse solo l'ultimo valore di "n", quindi ho creato un ulteriore clip dentro i vari pic_n e ho caricato l'immagine dentro quest'ultimo, lasciando liberi i "pic_n" di portare la propria variabile "order" al loro interno ed usarla dentro onLoadInit attraverso il parametro, usando _parent

    Codice PHP:
    var mio_loader = new MovieClipLoader();
    var 
    preload = new Object();
    preload.onLoadInit = function(target_mc:MovieClip) {
        
    target_mc._parent._x 25+(175*(target_mc._parent.order-1)+(150-target_mc._width)/2);
        
    target_mc._parent._y 30+(150-target_mc._height)/2;
    };
    mio_loader.addListener(preload);
    for (var 
    n=1n<=5n++) {
        var 
    clip this.attachMovie("cornice", ("cornice"+n), this.getNextHighestDepth());
        
    clip._y 30;
        
    clip._x 25+(175*(n-1));
        
    clip.txt_indice.text "Immagine "+String(n);
        var 
    pic this.createEmptyMovieClip("pic_"+nthis.getNextHighestDepth());
        
    pic.order n;
        
    pic.createEmptyMovieClip("loader"1);
        
    mio_loader.loadClip("pic_"+n+".jpg"pic["loader"]);

    se qualcosa non ti torna, fammi sapere

  5. #5
    Grazie. Me lo studio un attimo

    Faccio qualche prova e ti faccio sapere

    «Dottore!!! Me sogno sempre de esse' un cane…» «E da quando?» «Da quando ero cucciolo!» (Pippo Franco - anni '70)

  6. #6
    Funziona perfettamente

    Grazie ancora. Ora, prima di proseguire nel progetto, mi studio un pochino il codice per capire bene come funzia e soprattutto per capire dove sbagliavo.

    A presto
    «Dottore!!! Me sogno sempre de esse' un cane…» «E da quando?» «Da quando ero cucciolo!» (Pippo Franco - anni '70)

  7. #7
    Una cosa mi piaceva capirla adesso. E' una mia carenza di base.

    Qual'è esattamente il significato delle parentesi quadre in questa riga di codice?

    Codice PHP:
     mio_loader.loadClip("pic_"+n+".jpg"pic["loader"]); 
    Ho scartabellato un sacco di libri ma non ce n'è uno che lo spiega esplicitamente (o forse ho solo cercato male io...).

    Eventualmente mi sai indicare qualche articolo o qualche thread che ne parla in maniera esauriente?

    Grazie per la pazienza
    «Dottore!!! Me sogno sempre de esse' un cane…» «E da quando?» «Da quando ero cucciolo!» (Pippo Franco - anni '70)

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    viene spiegato abbastanza bene nella stessa guida del programma e in pratica consiste nell'accedere alle proprietà di un elemento come se si trattasse di un array associativo in cui l'indice è una stringa che rappresenta il nome deilla proprietà

    i clip interni ad altri clip sono raggiungibili come proprietà degli stessi, quindi scrivere pic.loader e scrivere pic["loader"] è la stessa cosa

    considera l'averlo scritto dentro al codice che stiamo guardando, come un mio vezzo e null'altro
    è invece utile quando si deve accedere a determinate proprietà con nomi progressivi, come ad esempio in un ciclo del genere

    Codice PHP:
    for(var i=0i<10i++) {
        
    this.createEmptyMovieClip("movie_"+ii);
        
    this["movie_"+i]._x i*100;


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.