Visualizzazione dei risultati da 1 a 5 su 5

Discussione: preload da componente

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,610

    preload da componente

    Allora ho fatto un componente che hai un metodo che gli permette di caricare dentro di se una img

    il tutto funziona il locale con testandolo con simulatore di conn di flash no!
    solo che non capisco dove sbaglio ecco il codice che carica la foto

    la struttura del comp è
    componente.mcbackground.canvas

    cmpLoadFotoResize.prototype.loadFoto = function(pic) {
    this.oldw = this.mcbackground.canvas._width;
    this.oldh = this.mcbackground.canvas._height;
    this.mcbackground.canvas.loadMovie(pic);
    this.onEnterFrame = function() {
    trace(this.mcbackground.canvas.getBytesLoaded()+"-"+this.mcbackground.canvas.getBytesTotal());//questi valori sono corretti
    if (this.mcbackground.canvas.getBytesLoaded() == this.mcbackground.canvas.getBytesTotal()){
    this.mcbackground.canvas._width = this.oldw;
    this.mcbackground.canvas._height = this.oldh;
    this.mcbackground.canvas._y = 0;
    this.onEnterFrame = undefined;
    trace(this.mcbackground.canvas._width); //se uso il simulatore questo vale 0 ;in locale ha un valore corretto
    /*
    e anche se faccio così
    this.mcbackground.canvas._height = 200;
    trace(this.mcbackground.canvas._width); //sempre zero solo con la simulazione
    */
    }
    }
    };

    ---
    -Penso di aver capito il problema ma non so come risolverlo:
    ecco alcuni tracciati:

    trace("prima"+this.mcbackground.canvas.getBytesLoa ded()+"-"+this.mcbackground.canvas.getBytesTotal());
    //stampa 12-12
    this.mcbackground.canvas.loadMovie(pic);
    this.onEnterFrame = function() {
    trace(this.mcbackground.canvas.getBytesLoaded()+"-"+this.mcbackground.canvas.getBytesTotal());
    //stampa 12-12
    this.onEnterFrame = undefined; //solo per debug

    //logicamente questo test è valido perchè ancora non sono arrivati i dati che dicono quanto è grande il mc ..
    if (this.mcbackground.canvas.getBytesLoaded() == this.mcbackground.canvas.getBytesTotal()) {
    //entrando qui quando la foto non è ancora caricato succede un casotto!
    }

    Ma come fare ? mia appello alla vostra esperienza

  2. #2
    NOn ho letto tutto il codice, solo nell'ultima parte mi è "saltato all'occhio"

    if (this.mcbackground.canvas.getBytesLoaded() == this.mcbackground.canvas.getBytesTotal()) {
    //entrando qui quando la foto non è ancora caricato succede un casotto!
    }


    Modificalo così

    if (this.mcbackground.canvas.getBytesLoaded() == this.mcbackground.canvas.getBytesTotal() && this.mcbackground.canvas.getBytesTotal()>2048) {
    //entrando qui quando la foto non è ancora caricato succede un casotto!
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,610
    Originariamente inviato da Broly
    NOn ho letto tutto il codice, solo nell'ultima parte mi è "saltato all'occhio"

    if (this.mcbackground.canvas.getBytesLoaded() == this.mcbackground.canvas.getBytesTotal()) {
    //entrando qui quando la foto non è ancora caricato succede un casotto!
    }


    Modificalo così

    if (this.mcbackground.canvas.getBytesLoaded() == this.mcbackground.canvas.getBytesTotal() && this.mcbackground.canvas.getBytesTotal()>2048) {
    //entrando qui quando la foto non è ancora caricato succede un casotto!
    }
    perchè 2048 ?

  4. #4
    Anche 1024 volendo..semplicemente senza quel pezzo la condizione si verifica anche quando i bytes totali e quelli caricati sono uguali a 0 (o a 4 che è più o meno la dimensione di un movieclip vuoto), per cui aggiungendo quell'ulteriore controllo fai in modo di essere sicuro che flash abbia ricavato le informazioni dall'immagine (che sarà sicuramente più grande di 2048 bytes, ovvero 2 kilobytes)

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,610
    Originariamente inviato da Broly
    Anche 1024 volendo..semplicemente senza quel pezzo la condizione si verifica anche quando i bytes totali e quelli caricati sono uguali a 0 (o a 4 che è più o meno la dimensione di un movieclip vuoto), per cui aggiungendo quell'ulteriore controllo fai in modo di essere sicuro che flash abbia ricavato le informazioni dall'immagine (che sarà sicuramente più grande di 2048 bytes, ovvero 2 kilobytes)
    perfetto infatti funziona :-)

    ora però ho un'atltro problemino...

    creo questo :
    this.mcbackground.canvas.createTextField("prelaod" ,1, 100, 100, 300, 100);

    e lo crea il problema e che la dimensione del testo è piccolissima
    e anche facendo così:
    formatopersonale = new TextFormat();
    formatopersonale.color = 0x3366CC;
    formatopersonale.bullet = false;
    formatopersonale.underline = false;
    formatopersonale.font = "Arial";
    formatopersonale.size = 100;

    this.mcbackground.canvas.prelaod.setTextFormat(for matopersonale);

    rimane uguale non capisco dove 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 © 2024 vBulletin Solutions, Inc. All rights reserved.