Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    13

    leggere altezza e larghezza immagini importate

    per creare uno scroll verticale di immagini utilizzo questo semplice as al primo fotogramma

    this.createEmptyMovieClip("primo", this.getNextHighestDepth());
    this.createEmptyMovieClip("secondo", this.getNextHighestDepth());
    this.createEmptyMovieClip("terzo", this.getNextHighestDepth());
    this.createEmptyMovieClip("quarto", this.getNextHighestDepth());
    primo.loadMovie("primo.gif");
    secondo.loadMovie("secondo.gif");
    terzo.loadMovie("terzo.gif");
    quarto.loadMovie("quarto.gif");
    primo._x = -primo._width/2;
    secondo._x = -secondo._width/2;
    terzo._x = -terzo._width/2;
    quarto._x = -quarto._width/2;

    creo 4 mc vuoti e dopo per centrarli cambio la x in base alla larghezza dell'immagine

    il mio problema è che le varie mc._width sono tutte = 0

    è possibile sapere larghezza e altezza delle immagini caricate tramite loadMovie?

    cosa sbaglio? forse dovrei aspettare la fine del caricamento per leggere la larghezza dei mc? come posso fare?

    scusate la mia nobbaggine con actionscript ma la mia conoscenza è poca poca

    Grazie mille
    Paso

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    sì, in effetti devi attendere il caricamento delle immagini per conoscerne le dimensioni effettive
    se utilizzi almeno Flash MX 2004 ti consiglio di utilizzare la classe MovieClipLoader per caricare le immagini nei tuoi clip

    puoi fare così:

    Codice PHP:
    // creo un array per velocizzare la scrittura del codice dei caricamenti, con i nomi delle immagini e dei clip
    var clips = ["primo""secondo""terzo""quarto"];
    // creo una variabile che mi serve dentro loader per non confondere il this
    var path this;
    // creo un MovieClipLoader da usare per caricare le immagini nei vari clip
    var loader = new MovieClipLoader();
    // inizializzo la funzione che verrà eseguita automaticamente a fine caricamento di ogni clip
    loader.onLoadInit = function (target) {
        
    // per ogni clip imposto la _x usando il parametro della funzione come vettore
        
    target._x = -target._width/2;
    }
    // creo un ciclo per il caricamento di ogni immagine sfruttando il contenuto dell'array
    for(var i=0i<clips.lengthi++) {
        
    // richiamo la funzione che avvia il caricamento, passandogli il nome dell'immagine da caricare
        // e allo stesso momento creo il clip in cui questa immagine dovrà essere caricata
        
    loader.loadClip(clips[i]+".gif"this.createEmptyMovieClip(clips[i], this.getNextHighestDepth()));

    però in questa maniera (che riprende la tua) i clip comunque saranno sovrapposti tra di loro, non dovrebbero essere uno affianco all'altro per creare il tuo scroll, e tra l'altro se lo vuoi creare verticale, non dovrsti modificare la _y e non la _x di ogni clip?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    13
    grazie mille ora provo

    si hai ragione ma per l'animazione sono a posto

    faccio un mx.transitions.Tween sul primo e poi con controllo1.onMotionChanged modifico le y degli altri tre

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    13
    scusami ancora. siccome dopo mi serve l'altezza delle immagini per poterle spazziare corettamente quando posso leggere l'altezza o assegnarla ad una variabile?


    loader.onLoadInit = function (target) {
    // per ogni clip imposto la _x usando il parametro della funzione come vettore
    target._x = -target._width/2;
    }


    dentro a questa funzione posso creare 4 variabili in runtime, esempio:

    altezzaPrimo = primo._height
    altezzaSecondo = secondo._height
    ecc...ecc...

    ??

    spero di essermi fatto capire

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    dentro a quella funzione puoi fare tutto quello che coinvolge le altezze dei clip caricati
    attenzione comunque che le azioni per le tween le devi dare ugualmente una volta che li hai caricati tutti

    per verificare che il caricamento sia stato fatto su tutti puoi utilizzare un altro array che registri un "true" a caricamento avvenuto, e quando tutti i clip sono stati caricati, verifichi la dimensione di quell'array, e se è uguale a quella dell'array "clips" attivi la tween

    Codice PHP:
    var clips = ["primo""secondo""terzo""quarto"];
    var 
    loaded = [];
    var 
    path this;
    var 
    loader = new MovieClipLoader();
    loader.onLoadInit = function (target) {
        
    target._x = -target._width/2;
        
    loaded.push(true);
        if(
    loaded.length == clips.length) {
            
    // azioni quando TUTTE le immagini sono state caricate
        
    }
    }
    for(var 
    i=0i<clips.lengthi++) {
        
    loader.loadClip(clips[i]+".gif"this.createEmptyMovieClip(clips[i], this.getNextHighestDepth()));

    comunque se mi passi il codice della tween posso inserirla direttamente nel codice per completarlo

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    13
    questo è il codice as

    grazie mille dell'aiuto



    Codice PHP:
    // creo un array per velocizzare la scrittura del codice dei caricamenti, con i nomi delle immagini e dei clip
    var clips = ["primo""secondo""terzo""quarto"];
    // creo una variabile che mi serve dentro loader per non confondere il this
    var path this;
    // creo un MovieClipLoader da usare per caricare le immagini nei vari clip
    var loader = new MovieClipLoader();
    // inizializzo la funzione che verrà eseguita automaticamente a fine caricamento di ogni clip
    loader.onLoadInit = function (target) {
        
    // per ogni clip imposto la _x usando il parametro della funzione come vettore
        
    target._x = -target._width/2;
        
    loaded.push(true);
        if(
    loaded.length == clips.length) {
            
    h1 primo._height+seocndo._height+terzo.height+quarto.height;
        }
        }
    // creo un ciclo per il caricamento di ogni immagine sfruttando il contenuto dell'array
    for(var i=0i<clips.lengthi++) {
        
    // richiamo la funzione che avvia il caricamento, passandogli il nome dell'immagine da caricare
        // e allo stesso momento creo il clip in cui questa immagine dovrà essere caricata
        
    loader.loadClip(clips[i]+".gif"this.createEmptyMovieClip(clips[i], this.getNextHighestDepth()));
    }

    passaggio 255;
    random(999999);
    135-h1-30// per impostare il punto finale dell'animazione in base alle altezze delle 4 foto e alla loro spaziatura

    import mx.transitions.Tween;

    var 
    controllo1:Tween = new Tween(primo"_y"mx.transitions.easing.None.easeNone265x7true);

    var 
    asd false;

    controllo1.onMotionChanged = function() {
        
    secondo._y this.position+primo._height+10;
        
    terzo._y this.position+primo._height+secondo._height+20;
        
    quarto._y this.position+primo._height+secondo._height+terzo._height+30;
        if ( ( 
    passaggio >= quarto._y+quarto._height ) && (asd==false) )
                    { 
                    
    _root.ossidigi.loghettiasd.attachMovie("loghettiattach""loghetti"+ww);
                    
    asd true;
                    }
        };

    controllo1.onMotionFinished = function() {
    _root.ossidigi.loghettiasd.removeMovieClip(); //questo ultimo comando non so se è giusto e rimuove il mc che ho inserito con attachMovie
    }; 

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    c'è quell h1 che non è valorizzato, e non ottengo la tween, ma solo i clip eccessivamente distanziati tra di loro

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    13
    errata corrige. Al codice mancava il loader = []

    mi sa che il mio codice fa schifo perchè adesso non va la tween

    Codice PHP:
    // creo un array per velocizzare la scrittura del codice dei caricamenti, con i nomi delle immagini e dei clip
    var clips = ["primo""secondo""terzo""quarto"];
    var 
    loaded = [];
    // creo una variabile che mi serve dentro loader per non confondere il this
    var path this;
    // creo un MovieClipLoader da usare per caricare le immagini nei vari clip
    var loader = new MovieClipLoader();
    // inizializzo la funzione che verrà eseguita automaticamente a fine caricamento di ogni clip
    loader.onLoadInit = function(target) {
        
    // per ogni clip imposto la _x usando il parametro della funzione come vettore
        
    target._x = -target._width/2;
        
    loaded.push(true);
        if (
    loaded.length == clips.length) {

            
    h1 primo._height+secondo._height+terzo.height+quarto.height;
            
    trace ("h1 vale   " +h1);
        }
    }
        
    // creo un ciclo per il caricamento di ogni immagine sfruttando il contenuto dell'array
        
    for (var 0i<clips.lengthi++) {
            
    // richiamo la funzione che avvia il caricamento, passandogli il nome dell'immagine da caricare
            // e allo stesso momento creo il clip in cui questa immagine dovrà essere caricata
            
    loader.loadClip(clips[i]+".gif",this.createEmptyMovieClip(clips[i], this.getNextHighestDepth()));
        }


    passaggio 255;
    random(999999);
    135-h1-30;// per impostare il punto finale dell'animazione in base alle altezze delle 4 foto e alla loro spaziatura

    import mx.transitions.Tween;

    var 
    controllo1:Tween = new Tween(primo"_y"mx.transitions.easing.None.easeNone265x7true);

    var 
    asd false;

    controllo1.onMotionChanged = function() {
            
    secondo._y this.position+primo._height+10;
            
    terzo._y this.position+primo._height+secondo._height+20;
            
    quarto._y this.position+primo._height+secondo._height+terzo._height+30;
            if ((
    passaggio>=quarto._y+quarto._height) && (asd == false)) {
                
    _root.ossidigi.loghettiasd.attachMovie("loghettiattach","loghetti"+w,w);
                
    asd true;
            }
        }

        
    controllo1.onMotionFinished = function() {
            
    _root.ossidigi.loghettiasd.removeMovieClip();//questo ultimo comando non so se è giusto e rimuove il mc che ho inserito con attachMovie
        


  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    così funziona, anche se non so se era quello che volevi ottenere

    Codice PHP:
    import mx.transitions.*;
    var 
    clips = ["primo""secondo""terzo""quarto"];
    var 
    loaded = [];
    var 
    path this;
    var 
    h1 0;
    var 
    passaggio 255;
    var 
    random (999999);
    var 
    0;
    var 
    asd false;
    var 
    loader = new MovieClipLoader ();
    loader.onLoadInit = function (target) {
        
    target._x = -target._width/2;
        
    loaded.push (true);
        if (
    loaded.length == clips.length) {
            for(var 
    p=0p<clips.lengthp++) {
                
    h1+=path[clips[p]]._height;
            }
            
    135-h1-30;
            var 
    controllo = new Tween (primo"_y"null265x7true);
            
    controllo.onMotionChanged = function () {
                
    secondo._y this.position+primo._height+10;
                
    terzo._y this.position+primo._height+secondo._height+20;
                
    quarto._y this.position+primo._height+secondo._height+terzo._height+30;
                if ((
    passaggio>=quarto._y+quarto._height) && (asd == false)) {
                    
    _root.ossidigi.loghettiasd.attachMovie ("loghettiattach","loghetti"+w,w);
                    
    asd true;
                }
            };
            
    controllo.onMotionFinished = function () {
                
    _root.ossidigi.loghettiasd.removeMovieClip ();
            };
        }
    };
    for (var 
    0i<clips.lengthi++) {
        
    loader.loadClip (clips[i]+".jpg",this.createEmptyMovieClip (clips[i], this.getNextHighestDepth ()));


  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    13
    scusami sono stato impegnato ieri pomeriggio e questa mattina.

    ho provato lo script, ma a me non funziona.

    per provarlo ho anche fatto un swf nuovo con solo questo script

    a parte l'attachmovie il resto dovrebbe funzionare, ma non vedo ne le immagini caricate ne l'animazione, cosa sbaglio?

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.