Avatar billede theselfimages Nybegynder
17. januar 2004 - 17:07 Der er 10 kommentarer og
1 løsning

Definerer scalebredde efter JPG bredde

Dette spørgsmål er videreført fra:
http://www.eksperten.dk/spm/452580

SPØRGSMÅL TIL NEDENSTÅENDE SCRIPT:

Vedr. function trans(speed)
Her scaleres fra 0-100 MovieClippet 'Transition'. I dette MC ligger et hvidt område svarende til max bredden på et billede (645px). Efter scaleringen kaldes denne: function elasticMove.

Det vil alt i alt sige: At lige meget om selve JPG billedet er 645px bredt eller 300px bredt, da scaleres det hvide område over billedet altid fra 0 - 645px og udløser herefter: function elasticMove.
Problemet er at dette giver en forsinkelse af kaldet på function elasticMove for de billeder der IKKE er så bredde.
Er det derfor muligt at sætte scalebredden efter billedets egen bredde, eller f.eks. benytte en: Transition._x (hvor billedets bredde så manuelt defineres i .txt fil) !?!

Håber dette er bare lidt forståeligt.


SCRIPT:
preloadBar._alpha = 0;
num = 1;
max = 4;
function setString(num) {
    u = 'content/imagery/sevendeadlysins/text/'+num+'.txt';
    i = 'content/imagery/sevendeadlysins/images/'+num+'.jpg';
}
setString(num);

function viewImage(speed) {
    trace(speed);
    clearInterval(timer);
    trace("cleared");
    trans(speed)
}

function trans(speed){
        Transition._xscale = 0;
    this.onEnterFrame = function(){
        trace(Transition._xscale)
        if (Transition._xscale<100) {
            Transition._xscale += speed;
        } else {
            Transition._xscale = 100;
            this.onEnterFrame = 0;
            elasticMove(1, 0.2);
        }
    }
}

function elasticMove(startspeed, acceleration) {
    Description._visible = true;
    xspeed = startspeed;
    moving = true;
    this.onEnterFrame = function() {
        if (xspeed>-startspeed && moving) {
            xspeed -= acceleration;
        } else {
            moving = false;
            if (xspeed<0) {
                xspeed += acceleration;
            } else {
                xspeed = 0;
                this.onEnterFrame = 0;
            }
        }
        Description._x += xspeed;
    };
}

function preload (){
  preloadBar._alpha = 100;
  imageLoaded = false;
  preloadBar._xscale = loadedBytes = totalBytes = percent = 0;
  this.onEnterFrame = function(){
    totalBytes = ImageHolder.getBytesTotal();
    loadedBytes = ImageHolder.getBytesLoaded();
    percent = Math.floor(loadedBytes/totalBytes*100);
    if(totalBytes > 4) preloadBar._xscale = percent;
    if(!imageLoaded && loadedBytes == totalBytes && totalBytes > 4){
      imageLoaded = true;
      preloadBar._alpha = 0;
      timer = setInterval(viewImage,400,25);
    }
  }
}

function handler() {
    Transition._xscale = 0;
    Description.wordwrap = true;
    Description.autoSize = true;
    Description.text = this.Description;
    Description._visible = false;
    Description._x = this.Description_x;
    Description._y = this.Description_y;
    loadMovie(i, "ImageHolder");
    preload()
}

buttonIsActive = true;
function buttonInactive (){
  buttonIsActive = false;
  buttonTimer = setInterval(buttonActive, 1400);
}
function buttonActive(){
  buttonIsActive = true;
  clearInterval(buttonTimer);
}

l = new LoadVars();
l.load(u);
l.onLoad = handler; buttonInactive();
stop();
Avatar billede pyroman Nybegynder
18. januar 2004 - 11:01 #1
hmm ingen bud? - nå jamen så er det vist mig der skal komme og redde dig igen....

I dit Transition MC laver du grafikken om til et andet MC med navnet "size" (VIGTIGT: med registreringspunktet i øverste venstre hjørne!!!) for så kan du bruge denne kode:

function trans(speed){
  Transition.size._width = ImageHolder._width;
  Transition.size._height = ImageHolder._height; //Denne hvis dine billeder også varierer i højden! eller slet den...
  Transition._xscale = 0;
  this.onEnterFrame = function(){
    trace(Transition._xscale)
    if (Transition._xscale<100) {
      Transition._xscale += speed;
    } else {
      Transition._xscale = 100;
      this.onEnterFrame = 0;
      elasticMove(1, 0.2);
    }
  }
}

Good luck!!
Avatar billede theselfimages Nybegynder
20. januar 2004 - 03:26 #2
Du er en god redning.
Super cool! Det virker øjensynligt perfekt :)

Vil det være et kæmpe arbejde, at få Transition._xscale til også at skalerer den modsatte vej, når der klikkes Frem/Tilbage? Gerne med sin egen defineret hastighed.

F.eks.: Ved klik Frem/Tilbage forsvinder Description tekst og det synlige billede skaleres fra højre mod venstre, hvorefter næste billeder loader og toner frem som hidtil. 

Lars
Avatar billede theselfimages Nybegynder
26. januar 2004 - 18:13 #3
Blev du træt af det?
Anyway.. post et svar for din hjælp.

Lars
Avatar billede pyroman Nybegynder
26. januar 2004 - 22:17 #4
Nej glemte det bare helt...

function transOut(speed){
  Transition._xscale = 100;
  this.onEnterFrame = function(){
    if (Transition._xscale>0) {
      Transition._xscale -= speed;
    } else {
      Transition._xscale = 0;
      this.onEnterFrame = 0;
      loadMovie(i, "ImageHolder");
      preload()
    }
  }
}
function handler() {
    Transition._xscale = 0;
    Description.wordwrap = true;
    Description.autoSize = true;
    Description.text = this.Description;
    Description._visible = false;
    Description._x = this.Description_x;
    Description._y = this.Description_y;
    TransOut(speed);
}

Tror noget a la dette burde virke...
Avatar billede pyroman Nybegynder
26. januar 2004 - 22:17 #5
Lægger også lige et svar :)
Avatar billede theselfimages Nybegynder
26. januar 2004 - 22:27 #6
Hmm.. den går helt blank!
Avatar billede pyroman Nybegynder
26. januar 2004 - 22:30 #7
Hvad med dette:

function handler() {
    Transition._xscale = 0;
    Description.wordwrap = true;
    Description.autoSize = true;
    Description.text = this.Description;
    Description._visible = false;
    Description._x = this.Description_x;
    Description._y = this.Description_y;
    transOut(speed);
}
Avatar billede theselfimages Nybegynder
26. januar 2004 - 22:36 #8
Hmm.. nææh! Der sker intet, når jeg sætter transOut scriptet ind + den nye version af handler.

Hvad hvis jeg gerne vil ha' (speed) for transOut til at være en anden
hastighed end den der bruges på "function trans"?
Avatar billede pyroman Nybegynder
26. januar 2004 - 22:48 #9
function transOut(speed){
  Transition._xscale = 100;
  this.onEnterFrame = function(){
    trace("out: "+Transition._xscale);
    if (Transition._xscale>0) {
      Transition._xscale -= speed;
    } else {
      Transition._xscale = 0;
      this.onEnterFrame = 0;
      loadMovie(i, "ImageHolder");
      preload();
      trace("preloading");
    }
  }
}
function handler() {
    Transition._xscale = 0;
    Description.wordwrap = true;
    Description.autoSize = true;
    Description.text = this.Description;
    Description._visible = false;
    Description._x = this.Description_x;
    Description._y = this.Description_y;
    transOut(outSpeed);
}

Du kan ændre "outSpeed"...
Hvis den ikke udskriver (tracer) Transitions x-skalering og ordet "preloading" så er der noget galt...
Godnat!!
Avatar billede theselfimages Nybegynder
27. januar 2004 - 14:59 #10
Hmm.. den skriver ud traces fint nok.

Men ideen var at transOut(speed) skulle aktiveres ved klik på knapperne, således at det billede der er hentet frem med "trans(speed)", skaleres ud med transOut(speed), ved klik på Forward eller Backward knap.
Avatar billede theselfimages Nybegynder
29. januar 2004 - 14:13 #11
Sorry! .. Tror jeg lader det være som det var.
Tusind tak for din hjælp!

Venligst
Lars Højberg
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