Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766

    Dimensionamento immagini

    Allora..
    vorrei sapere come dimensionare le immagini caricate tramite loadMovie.
    Se uso le proprietà xscale, yscale, tutto ok, non ci sono problemi.
    Se invece voglio assegnare altezza e larghezza prefissate non riesco nel mio intento.
    Perchè se faccio:

    simbolo1._width=100;
    simbolo1._height = 100;
    loadMovie("immagine.jpg", "simbolo1");

    e poi vado a fare un trace sull'altezza e la larghezza ottengo 266 e 200?

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    quando richiami il loadMovie quasi tutti i comandi precedenti vengono annullati,
    per impostarli correttamente devi prima attendere il caricamento del file esterno, ma siccome l'evento di "caricamento completato" è asincrono (ossia non si conosce il momento preciso in cui avverrà) è necessario utilizzare un "preloader" per recuperarlo
    se non hai grande dimestichezza con i preload, ti consiglio di utilizzare una classe che ho scritto io stesso, scritta per AS1 e compatibile con il flash player 6, che puoi scaricare dai miei articoli (link in firma, poi sulla pagina, a sinistra c'è l'elenco degli articoli, cerca "Preload")
    in alternativa da Flash MX 2004 esiste la classe MovieClipLoader che fa sostanzialmente quello che fa anche la mia classe
    sempre sui miei articoli trovi una spiegazione sommaria di tale classe

    se usi la classe Preload il codice sarebbe questo

    Codice PHP:
    #include "Preload.as"
    var = new Preload();
    p.onLoadInit = function(target) {
        
    simbolo1._width=100;
        
    simbolo1._height 100;
    }
    simbolo1.loadMovie("immagine.jpg");
    p.start(simbolo1); 
    mentre con la classe MovieClipLoader

    Codice PHP:
    var o:Object = new Object();
    o.onLoadInit = function (target){
        
    simbolo1._width 100;
        
    simbolo1._height 100;
    }
    var 
    l:MovieClipLoader = new MovieClipLoader();
    l.addListener(o);
    l.loadClip("immagine.jpg"simbolo1); 

  3. #3
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Ok, con la classe MovieClipLoader va, adesso però cosa ho fatto (danni come al solito), ho messo il tuo codice in una funzione che viene richiamata dall'interno di un'altra funzione.
    Con ordine

    1)Carico dei valori da asp (alcuni testo, altri sono immagini)
    2)faccio un controllo che i dati siano ricevuti
    3) da qui chiamo una funzione con all'interno il tuo codice

    mi sa che ho fatto qualche casino:

    loadVariablesNum('test_news.asp', 0);
    function checkParamsLoaded() {
    if (controllo.text == "") {
    m1._visible = false;
    } else {
    m1._visible = true;
    clearInterval(param_interval);
    caricaimmagini();
    }
    }
    var param_interval:Number = setInterval(checkParamsLoaded, 100);

    function caricaimmagini() {
    var o1:Object = new Object();
    o1.onLoadInit = function(target) {
    _root.clippa1._width = 100;
    _root.clippa1._height = 100;
    };
    var l1:MovieClipLoader = new MovieClipLoader();
    l1.addListener(o1);
    loadMovie(immagine1, "_root.clippa1");
    }

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    con la classe MovieClipLoader non si usa più "loadMovie" ma il metodo diretto della classe "loadClip", quindi al posto della riga loadMovie(immagine1, "_root.clippa1"); devi scrivere l1.loadClip(immagine1, _root.clippa1);

    comunque vorrei farti un appunto sul codice:
    la funzione che utilizzi per il caricamento dei dati dall'esterno (loadVariablesNum) è datata e ha problemi e ne eviterei l'utilizzo in favore della classe LoadVars che sostanzialmente compie lo stesso lavoro, ma ha già di suo l'evento "onLoad" che verifica con precisione il recupero dei dati in modo che sia lo stesso player a gestire la verifica senza intervento dello sviluppatore con funzioni e intervalli propri

    nel tuo caso il codice diventerebbe

    Codice PHP:
    var o1:Object = new Object();
    o1.onLoadInit = function(target) {
        
    // dentro questa funzione puoi riferirti al clip che sta 
        // caricando l'immagine direttamente con il parametro "target" passato alla funzione
        
    target._width 100;
        
    target._height 100;
    };
    var 
    l1:MovieClipLoader = new MovieClipLoader();
    l1.addListener(o1);
    var 
    lv:LoadVars = new LoadVars();
    lv.onLoad = function(ok){
        if(
    ok){
            
    m1._visible true;
            
    // la variabile "immagine1" ricevuta dall'esterno diventa una proprietà dell'istanza di LoadVars "lv" e 
            // dentro la funzione onLoad ci si può riferire a "lv" con "this", quindi avremo
            
    l1.loadClip(this.immagine1_root.clippa1);
        }


  5. #5
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Urka miseria, ho usato il loadmovie della precedente versione e ho toppato. Intanto ti ringrazio assai, quando torno in uff provo.
    In una prima versione utilizzavo lo xscale e non c'erano (o almeno non sembravano) esserci questi problemi di asincronismo, come mai?

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    a quanto pare _xscale e _yscale insieme forse a _rotation, sono le uniche proprietà che vengono mantenute dal clip anche dopo un loadMovie, probabilmente hanno una "locazione" diversa rispetto alle proprietà intrinseche del MovieClip

  7. #7
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Allora, al posto di LoadVariablesNum ho messo lv.load("test_news.asp");
    l'immagine arriva giusta ma siccome ho anche dei campi testo che hanno come valore variabile il nome delle varibili nell'asp, questi mi vengono vuoti. Non dovrebbero riempirsi automaticamente col valore giusto?

    anche forzandogli la visualizzazione mettendo il nome date1 al campo testo e scrivendo
    date1.text = this.date1 mi viene fuori _level0.date1;

  8. #8
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Ho più o meno risolto mettendo anche
    lv.path = this;
    this.path.date1 = this.date1;

    e ora funzia, ma mi sembra un po' macchinoso, perchè' cosi' devo assegnare a mano tutti i campi. E' giusto così o mi sfugge qualcosa?

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    è corretto,
    il fatto di assegnarli a mano può sembrare in effetti macchinoso, ma a lungo andare troverai che avere un così elevato controllo sulle variabili che ti arrivano rende il tutto più intuitivo, più facile da gestire e sopratutto più corretto e veloce a livello sintattico e dell'esecuzione degli script

  10. #10
    Moderatrice di CSS L'avatar di ResianTaxidrive
    Registrato dal
    Oct 2007
    residenza
    Udine
    Messaggi
    2,766
    Ok, sembra funzionare tutto. Grazie mille and.

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.