22. november 2006 - 21:41
Der er
9 kommentarer og 2 løsninger
hvordan finder jeg den originale størrelse på et movieclip?
Hvordan finder jeg den originale størrelse på et movieclip, som jeg har loadet med loadmovie, hvis jeg har ændret den med _width og _height? Hilsen Anders
Annonceindlæg fra Barco
22. november 2006 - 22:06
#1
Der er helt sikkert en nemmere metode, men hvis jeg selv skulle gøre det, ville jeg "snyde" en anelse: //kode, der loader mc'et ind. //mc'et hedder i eksemplet hér bare mc. setWidth(sti.til.mc, 150); setHight(sti.til.mc, 80); trace("Nuværende mål:\nwidth: " + sti.til.mc._width + " hight: " + sti.til.mc._hight + "\nOriginale mål:\nwidth: " + getOriginalWidth(sti.til.mc) + " hight: " + getOriginalHight(sti.til.mc)); function setWidth(obj:MovieClip, newWidth:Number):Void { this[obj]._xscale = 100 * newWidth / this[obj]._width; } function setHight(obj:MovieClip, newHight:Number):Void { this[obj]._yscale = 100 * newHight / this[obj]._hight; } function getOriginalWidth(obj:MovieClip):Void { return 100 / this[obj]._xscale * this[obj]._width; } function getOriginalHight(obj:MovieClip):Void { return 100 / this[obj]._yscale * this[obj]._hight; } Det er ikke testet efter, men jeg tror, det duer. Men som sagt er der helt sikkert en nemmere måde.
22. november 2006 - 22:07
#2
Der er i hvert fald to fejl. De to nederste funktioner skal selvfølgelig være: function getOriginalWidth(obj:MovieClip):Number { return 100 / this[obj]._xscale * this[obj]._width; } function getOriginalHight(obj:MovieClip):Number { return 100 / this[obj]._yscale * this[obj]._hight; }
23. november 2006 - 09:04
#3
Hvis obj er et movieclip, skal du da ikke this[obj]._stuff men blot obj._stuff :) Ellers er jeg enig i, at der er omkring den nemmeste metode. Dog at sætte _xscale og _yscale er ikke nødvendigt, hvis man blot vil ændre størrelsen - man kan godt sætte _width og bagefter læse _xscale - de to variabler følges ad :) Og så er der stavefejl i dine Height's: sti.til.mc._width = 150; sti.til.mc._height = 80; trace("Nuværende mål:\nwidth: " + sti.til.mc._width + " height: " + sti.til.mc._height + "\nOriginale mål:\nwidth: " + getOriginalWidth(sti.til.mc) + " height: " + getOriginalHeight(sti.til.mc)); function getOriginalWidth(obj:MovieClip):Void { return 100 / obj._xscale * obj._width; } function getOriginalHeight(obj:MovieClip):Void { return 100 / obj._yscale * obj._hight; } :) -- Morten Barklund
25. november 2006 - 15:51
#4
Vil det sige, at hvis jeg først ændre _width og senere sætter _xscale til 100, så får mit movieclip dets originalestørrelse tilbage igen?
25. november 2006 - 16:26
#5
Ja, det burde passe. Ifølge Barklunds udsagn, så følges disso jo ad, og dette er derfor en mulighed. Og så lige en kort bemærkning til hr. Barklund: Okay, jeg vidste ikke helt, de fulgtes ad - det er altid godt, at lære noget nyt :) Og så har du også stavefej: "at der er omkring" skal rettes til "at det er omkring". Okay, det ligger i småtingsafdelingen, men så kunne jeg give lidt igen :)
26. november 2006 - 14:51
#6
Jeg er ikke stavefej! :) Men ja, du vil altid kunne ændre _width lige så meget du vil og sætte _xscale til 100 og få genetableret den oprindelige størrelse. Eneste forskel på _xscale og _width er, at _xscale kan være negativ (og spejlvende clippet), mens width kun kan være positiv (og altså enten manipulere billedet retvendt eller spejlvendt alt efter om _xscale er positiv eller negativ). -- Morten Barklund
26. november 2006 - 17:01
#7
Okay, lidt negativt at drille én med stavefejl, og selv lave en. Nåh, pyt nu med det. Jeg retter lige Barklunds script, så det passer - han lavede nemlig samme fejl som jeg. En funktion fasttypes ikke til Void, hvis returneringsværdien er en subklasse af Number: sti.til.mc._width = 150; sti.til.mc._height = 80; trace("Nuværende mål:\nwidth: " + sti.til.mc._width + " height: " + sti.til.mc._height + "\nOriginale mål:\nwidth: " + getOriginalWidth(sti.til.mc) + " height: " + getOriginalHeight(sti.til.mc)); function getOriginalWidth(obj:MovieClip):Number{ return 100 / obj._xscale * obj._width; } function getOriginalHeight(obj:MovieClip):Number{ return 100 / obj._yscale * obj._hight; }
26. november 2006 - 17:02
#8
... jeg ved ikke helt, om jeg er berettiget til point i denne sag, men det kan du vurdere, grafik-anders :)
26. november 2006 - 19:25
#9
jeg er ikke god til konflikter :) så i får lige 20 points hver.
26. november 2006 - 19:26
#10
tak for det!
26. november 2006 - 19:57
#11
Tark for points :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.