• User Attivo

    Sono scemo io o cosa ?

    Ogni volta che mi metto a lavorare con flash me ne pento....

    Mi dite per favore dove sbaglio ??

    var tile:MovieClip = new MovieClip();
    var tile_img:Loader = new Loader();

    tile_img.load(new URLRequest(pnlToolbox.getItemAt(pnlToolbox.selectedIndex).source));

    tile.addChild(tile_img);

    tile.x=xpos;
    tile.y=ypos;
    tile.width = w;

    trace(w);
    trace(tile.width);

    E' assurdo: w è una variabile passata come parametro alla funzione che contiene il codice sopra (variabile w : Number).... il trace(w) mi restituisce il valore esatto di w (196), mentre il trace di tile_img.width (a cui assegno w subito prima) mi risulta 0 !!! com'è possibile ??? è come se non accettasse l'assegnazione...come se fosse di sola lettura, o non so che...... ma non da comunque nessun errore in output.

    Sto impazzendo, pls help me .... tnx


  • Super User

    Ciao,
    prima di tutto devi assegnare dei listeners in ascolto agli eventi della classe Loader o Flash non sa quando Loader ha caricato tutto.

    Poi dovresti anche fare un addChild di tile

    🙂


  • User Attivo

    @Flep said:

    Ciao,
    prima di tutto devi assegnare dei listeners in ascolto agli eventi della classe Loader o Flash non sa quando Loader ha caricato tutto.

    Poi dovresti anche fare un addChild di tile

    🙂

    Questo lo faccio già, solo che non l'ho incollato nel codice sopra perchè non c'entrava con il problema... e faccio anche l'addChild più avanti nel codice.

    Il problema non è questo...è che la proprietà width è come se non accettasse valori..qualsiasi cosa le assegno non la memorizza e rimane 0..... cmq ho temporanemanete risolto assegnando la variabile w (che è la larghezza del tile, che ho già ottenuto prima perchè è uguale ad un altro tile che ho già caricato) alla proprietà creata a runtime pre_w (tile.pre_w = w).... so che è una soluzione brutta e poco elegante ma per adesso è l'unica che funziona...

    Nessun suggerimento sul perchè la proprietà width del movieclip tile non memorizza il valore che assegno (come se fosse in sola lettura) ?


  • Super User

    Scusa non ho capito,
    il valore gli e lo assegni quando è già stato caricato oppure no ?


  • User Attivo

    @Flep said:

    Scusa non ho capito,
    il valore gli e lo assegni quando è già stato caricato oppure no ?

    Allora, tile è una movieclip contenitore, che contiene al suo interno l'istanza dell'oggetto Loader chiamata tile_img.

    la proprietà width di tile (il contenitore, non l'oggetto loader che carica l'immagine) la assegno dopo che chiamo tile_img.load...ma prima che l'immagine sia effettivamente caricata (quindi comunque prima che l'evento complete venga "scatenato"). Cmq la proprietà width è della Movieclip contenitore, non dell'oggetto loader, percui non c'entra nulla con il fatto che l'oggetto loader abbia finito di caricare l'immagine o meno.
    Però finchè non viene caricata l'immagine sull'oggetto Loader (contenuto dentro la movieclip contenitore tile) in teoria la movieclip tile è vuota, o meglio ha un oggetto Loader all'interno che però non contiene nulla....è possibile che non si possa assegnare una width/height arbitraria ad una movieclip, a meno che non "disegno" qualcosa dentro (ad esempio uno shape, un rettangolo) che si estenda alle dimensioni width/height che voglio ?


  • Super User

    Ora ho capito, se scrivevi il codice facevamo 3 giorni prima 🙂

    Se il contenitore in cui metti l'istanza di Loader è vuoto, non puoi assegnare un width.

    Quello che non capisco è perchè inserisci un' istanza Loader dentro ad un' altra MovieClip... la classe Loader eredita tutto dalla classe MovieClip per cuipotresti interagire con l' istanza Loader come fosse una MovieClip.