Avatar billede joch Nybegynder
19. februar 2004 - 18:19 Der er 8 kommentarer

Skalere billede efter at være loadet ind i MovieClip

Jeg har først hentet mit billede ind i et MovieClip som et MovieClip

loadMovie(_root.PicHref,"_root.Picture.Obj");

Nu vil jeg så gerne skalere det ned så det er max 100x100 pixel

Hvordan gør jeg det? Jeg kan ikke hente billedets originale brede med:

Brede=getProperty(,"_root.Picture.Obj,_width);

Hvem kan hjælpe mig ?????
Avatar billede joch Nybegynder
19. februar 2004 - 18:19 #1
Brede=getProperty(_root.Picture.Obj,_width);
Avatar billede thulstrup Nybegynder
19. februar 2004 - 18:37 #2
loadMovie(_root.PicHref, "root.Picture.Obj");
bredde = root.Picture.Obj._width;

men du kan først få bredden, når billedet er loadet 100% ind.
Avatar billede joch Nybegynder
19. februar 2004 - 18:42 #3
Det har jeg også haft prøvet... Så det er nok fordi det ikke er loadet ind :( Kan man ikke lave en funktion der venter til det er inde?
Avatar billede thulstrup Nybegynder
19. februar 2004 - 18:58 #4
Jo det kan du sagtens:

MovieClip.prototype.loadImg = function(jpg) {
    var mc = this;
    mc.loadMovie(jpg);
    tmp = createEmptyMovieClip("tmp", 1);
    tmp.onEnterFrame = function() {
        this.procent = Math.floor((mc.getBytesLoaded()/mc.getBytesTotal())*100);
        if (this.procent == 100) {
            mc.scaleImg();
            this.removeMovieClip();
        }
    };
};
MovieClip.prototype.scaleImg = function() {
    bredde = this._width
    trace(bredde)
};
_root.Picture.Obj.loadImg(_root.PicHref);
Avatar billede gulekings Nybegynder
19. februar 2004 - 21:55 #5
cellb10ck>> er der nogen særlig grund til at du skriver:
var mc = this; ?
Kunne man godt bare bruge "this" i funktionen?
Avatar billede joch Nybegynder
19. februar 2004 - 23:17 #6
... Det er meget mærkeligt - Det virker fint fra min maskine. Altså hvis jeg åbner HTML-filen fra harddisken.

Hvis jeg kører den fra min IIS virker ikke - heller ikke på mit webhotel...
Hvad skyldes det? Er det fordi svartiden er langsommere?
Avatar billede thulstrup Nybegynder
19. februar 2004 - 23:40 #7
gulekings>> det er fordi at inde i tmp.onEnterFrame functionen henviser this til '_level0.tmp' og ikke til '_root.Picture.Obj'.

joch>> det lyder mærkeligt. Hvis det virker når du åbner den fra harddisken, burde det også virke alle andre steder. Prøv at udskriv procenterne til et tekstfelt, så du kan se om det loader som det skal:

MovieClip.prototype.loadImg = function(jpg) {
    var mc = this;
    mc.loadMovie(jpg);
    tmp = createEmptyMovieClip("tmp", 1);
    tmp.onEnterFrame = function() {
        this.procent = Math.floor((mc.getBytesLoaded()/mc.getBytesTotal())*100);
        debug_txt.text = this.procent+"%";
        if (this.procent == 100) {
            mc.scaleImg();
            this.removeMovieClip();
        }
    };
};
MovieClip.prototype.scaleImg = function() {
    bredde = this._x;
};
_root.Picture.Obj.loadImg(_root.PicHref);
createTextField("debug_txt", 10, 0, 0, 100, 20);
Avatar billede thulstrup Nybegynder
19. februar 2004 - 23:41 #8
bredde = this._x;
skal selvfølgelig være
bredde = this._width
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester