Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24

    dimensione immagine caricata

    Ciao, io ho un problema con il caricamento di una immagine.Io carico e visualizzo correttamente la mia immagine, utilizzando una classe che eredita da MovieClipLoader. Il problema è che a me serve ricavare la proprietà _height e _weight dell'immagine prima che questa sia visualizzata. Al momento riesco a ricavarle solo dopo, con la funzione onLoadInit.Non so se mi sono spiegato.
    In altre parole io voglio caricare l'immagine, ricavarne altezza e larghezza e solo dopo visualizzarla.

    Ho una classe ImageLoader che eredita da MovieClipLoader, la quale ha un metodo loadClip che utilizza il metodo loadClip della superclasse. Allego il codice delle mie classi in questione

    //ho eliminato le parti che non riguardano il problema
    class Viewer.Utility_classes.ImageLoader extends MovieClipLoader {

    private var target_mc, owner, parentreference:MovieClip;
    private var fcolor, sampler:Number;
    private var loadmessage, callfunction:String;
    private var callbacktarget:Object;
    private var result: Boolean = true;
    var w,h:Number; //prova

    //costruttore, passato il reference al movie clip contenitore
    function ImageLoader(reference:MovieClip, parentreference:MovieClip) {

    this.owner = reference;
    //
    if (parentreference) {
    this.parentreference = parentreference;
    } else {
    this.parentreference = this.owner;
    }
    this.target_mc = this.owner;
    }
    //metodo che carica l'immagine
    public function loadClip(from:String, offsetx:Number, offsety:Number):Void {
    clearInterval(this.sampler);
    //creo un contenitore per l'immagine
    this.target_mc.createEmptyMovieClip("image", 1);
    //imposto le coordinate dove sarà posizionata l'immagine
    if (offsetx) {
    this.target_mc.image._x = offsetx;
    }
    if (offsety) {
    this.target_mc.image._y = offsety;
    }

    super.loadClip(from, this.target_mc.image);

    this.onLoadStart();
    }

    //metodo invocato quando comincia il caricamneto dell'immagine
    public function onLoadStart():Void {
    //imposto il messaggio della label
    this.setLabel(this.loadmessage);

    }
    //metodo invocato a caricamento completato
    public function onLoadComplete():Void {

    //nascondo la barra
    this.target_mc.bar._visible = false;
    this.target_mc.loadinglabel._visible = false;
    //set a reference
    this.target_mc.image._parent = this.parentreference;
    //comunico che l'immagine è stata caricata
    if (this.callbacktarget!=undefined){
    this.callbacktarget[this.callfunction]();
    }
    clearInterval(this.sampler);
    }
    public function onLoadInit():Void {
    trace(this.target_mc.image._height);
    }

    //metodo che setta la funzione di callback
    public function setCallback(owner:Object,callfunction:String):Void {
    this.callbacktarget=owner;
    this.callfunction=callfunction;
    }
    }



    import Viewer.Utility_classes.ImageLoader;
    import Viewer.Viewer_classes.Viewer_CSS;
    import Viewer.Utility_classes.DrawShape;
    //
    class Viewer.Viewer_classes.Viewer_image extends MovieClip{
    //############ ATTACH ON THE FLY ###############################################
    static var symbolName:String = "__Packages.Viewer.Viewer_classes.Viewer_image ";
    static var symbolOwner:Function = Viewer.Viewer_classes.Viewer_image;
    static var symbolLinked:Object = Object.registerClass(symbolName, symbolOwner);
    //############ ATTACH ON THE FLY ###############################################
    private var img, border:MovieClip;
    private var struct:Array;
    private var loader:ImageLoader;
    private var w,h:Number;
    private var mother:Object;
    private var cssExtractor:Viewer_CSS;

    //costruttore
    function Viewer_image(){
    //applico l'offset, di default allineamento in alto a sinistra
    this._x=this._y=this.mother.offset;
    //inizialisso l'oggetto cssExtractor
    this.cssExtractor = new Viewer_CSS(this.mother.style);
    //creo un movie clip che conterrà l'immagine
    this.createEmptyMovieClip("img", 1);
    //sovrascrivo gli attributi dell'immagine con quelli del file css
    //tag css
    var extracted=this.cssExtractor.getCSSItem("img",this. struct);
    //class css
    var extracted=this.cssExtractor.getCSSItem("."+this.st ruct.attributes["class"],this.struct);
    //css class
    var extracted=this.cssExtractor.getCSSItem("#"+this.st ruct.attributes["id"],this.struct);
    //converto il formato del colore, da #ffffff a 0xffffff
    //colore bordo
    if (this.struct.attributes.bordercolor!=undefined){
    this.struct.attributes.bordercolor=Number("0x"+(th is.struct.attributes.bordercolor).substr(1, 7));
    }else{
    //colore bordo di default
    this.struct.attributes.bordercolor=0x333333;
    }
    //colore sfondo
    if (this.struct.attributes.bgcolor!=undefined){
    this.struct.attributes.bgcolor=Number("0x"+(this.s truct.attributes.bordercolor).substr(1, 7));
    }else{
    //colore sfondo di default
    this.struct.attributes.bgcolor=0xE9E9E9;
    }

    //se esiste disegno il bordo dell'immagine utilizzando un oggetto di tipo
    //drawShape
    var drawer=new DrawShape(this);
    drawer.drawSquare(0, 0, Number(this.struct.attributes.width), Number(this.struct.attributes.height), this.struct.attributes.bgcolor, 100, this.struct.attributes.border, this.struct.attributes.bordercolor, 100, this.struct.attributes.style);
    //inizializzo l'oggetto che sarà utilizzato per caricare l'immagine
    this.loader = new ImageLoader(this.img);

    //se l'immagine è larga almeno 50px e alta almeno 20px visualizzo la barra di caricamento
    if ((Number(this.struct.attributes.width)>=50) && (Number(this.struct.attributes.height)>=20)){
    this.loader.viewLoader(this.struct.attributes.bord ercolor, 10, 2, 30, "Loading...");
    }
    //imposto la funzione di call back da invocare
    this.loader.setCallback(this,"clearImageBack");

    this.loader.loadClip(this.mother.getPath()+""+this .struct.attributes.src);
    }

    }



    Se qualcuno sa darmi qualche consiglio ne sarei molto grato.... grazie...
    ciaoooo

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182

    Re: dimensione immagine caricata

    mi sà tanto che l'unico modo di fare ciò che vuoi tu è quello di "chiedere" ad un linguaggio server-side le dimensioni dell'immagine prima del caricamento, flash in effetti ne è capace solo dopo che l'immagine è caricata, ma con un server-side potresti avere prima l'informazione ed usarla come preferisci

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24

    Re: Re: dimensione immagine caricata

    purtroppo non posso proprio farlo in questo modo. Io credo si possa fare caricando l'immagine in un'altro movie clip e poi usare questo movie clip... il problema è che non risco proprio a farlo....

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182

    Re: Re: Re: dimensione immagine caricata

    Originariamente inviato da phil
    purtroppo non posso proprio farlo in questo modo. Io credo si possa fare caricando l'immagine in un'altro movie clip e poi usare questo movie clip... il problema è che non risco proprio a farlo....
    beh, lo puoi fare, ma così utilizzi il doppio delle risorse

    scusa ma, è un problema caricare l'immagine invisibile e renderla visibile solo dopo aver recuperato _height e _width ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    il fatto è che io ho bisogno di costruire una determinata struttura in cui andrà posizionata l'immagine e devo conoscere le dimansioni dell'immagine prima di costruire questa struttura...

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da phil
    il fatto è che io ho bisogno di costruire una determinata struttura in cui andrà posizionata l'immagine e devo conoscere le dimansioni dell'immagine prima di costruire questa struttura...
    non ti seguo... la struttura viene costruita in AS? è per questo che devi conoscere prima le dimensioni?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    si, io costruisco una tabella nella quale saranno inserite delle immagini... se hai tempo prova a dare un'occhiata al codice, forse li si capisce meglio di come l'ho spiegato....

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da phil
    si, io costruisco una tabella nella quale saranno inserite delle immagini... se hai tempo prova a dare un'occhiata al codice, forse li si capisce meglio di come l'ho spiegato....
    un bel guaio fare 'sta cosa in AS senza "dinamicizzazioni esterne", hai pensato magari ad usare il component datagrid per intabellare quei valori? così non avresti il problema di doverla costruire tu la tabella (sto sparando a caso, giusto per trovare una soluzione alternativa)

    non riesco a guardare il codice ora...

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    ho bisogno di costruirla io la tabella purtroppo...

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da phil
    ho bisogno di costruirla io la tabella purtroppo...
    il mio suggerimento sarebbe un'interazione "parziale" con php, ossia quando inseisci nuove immagini nella cartella richiami uno script che ti scriva un .xml o un .txt in cui tu metti il riferimento al link dell'immagine e le dimensioni, forse però questo stravolgerebbe oltremodo il lavoro che già hai fatto

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.