centrare immagini create dinamicamente

Di: mirco1982 | 26/09/2020 18:17:26
Ciao a tutti, spero qualcuno possa risolvere questo mio problema: dovrei caricare all'interno dello stage delle immagini di diverse dimensioni. vorrei che il centro di ognuna di queste immagini vada a coincidere con il centro dello stage. mi serve perchè sto progettando un interfaccia grafica per una macchina che scatta foto di varie dimensioni (non molto diverse una dall'altra, però qualche centimetro in più o meno c'è).
avevo pensato una cosa del genere ma non mi funziona:
inserisco le immagini in movieclip vuote e assegno delle proprietà alla movie appena creata, e poi combino la misura con quella dello stage:
this.createEmptyMovieClip("my_mc",1)
my_mc.loadMovie("mia_immagine.jpg");
my_mc._x=(Stage.width/2)-(my_mc.width/2)
my_mc._y=(Stage.height/2)-(my_mc.height/2)
ma il risultato delle coordinate è sempre: my_mc._x=0 e my_mc._y=0
se qualcuno può aiutarmi gli sarei molto grato.
Sto sklerando alla grande...

Risposte



Ciao Mirco,
per prima cosa ti segnalo l'errore di codice che ho riscontrato:
Le proprietà width e height di un MovieClip si scrivono _width e _height, preceduti da un underscore "_", e sono valide sia in lettura che in scrittura.
Le proprietà width e height, senza underscore sono di sola lettura e inoltre non possono essere usate con i MovieClip.
Per questo motivo nel tuo script my_mc.width e my_mc.height restituiscono "undefined", quindi non è possibile usarli come numeri, ecco perché ottieni sempre 0.
Una scrittura più corretta sarebbe:
this.createEmptyMovieClip("my_mc",1)
my_mc.loadMovie("mia_immagine.jpg");
my_mc._x=(Stage.width/2)-(my_mc._width/2)
my_mc._y=(Stage.height/2)-(my_mc._height/2)
tuttavia non abbiamo risolto tutti i problemi, infatti scrivendo il comando loadMovie nello stesso script in cui chiediamo le dimensioni non abbiamo il tempo di caricare le immagini, questo causerebbe una risposta diversa da quella che ci aspettiamo, infatti se l'immagine non è stata caricata le dimensioni del movieClip che la contiene sarebbero 0 in larghezza e in altezza.
In conclusione dovresti caricare l'immagine, accertarti di averla caricata e successivamente provare a posizionarla.

Di: Professore | 26/09/2020 18:18:26


Il prof ha ragione, dovresti applicare un preload alle img, oppure se conosci già le dimensioni delle foto, potresti creare il clip dinamico all'interno di un clip vuoto e già istanziato.
Così facendo puoi posizionare inizialmente il MC contenitore sullo stage, in modo che il clip dinamico con la rispettiva img caricata risultino centrali rispetto allo stage.
Se hai notato, l'img caricata, viene posozionata sul vertice in alto a sinistra, è quello l'allineamento predefinito.
Detto questo, una soluzione potrebbe essere questa:
this.createEmptyMovieClip("ciccio", 1);
this.ciccio.loadMovie("ninfee.jpg");
this.onEnterFrame = function() {
ciccio._x = (Stage.width/2)-(ciccio._width/2);
ciccio._y = (Stage.height/2)-(ciccio._height/2);
};

Di: goku | 26/09/2020 18:18:26