Du kan med meget gode øjne ane en halv pixels forskel, hvad skal du dog med en 20 milliardnedel af en pixel? Jeg har to løsninger:
1. Find nogle bedre tal, det andet er umuligt at ane - og i det hele taget også umuligt for computeren at vise. Så mange farvekoder har den slet ikke :)
2. Lav en variabel, der repressenterer dens x- og y-værdier. Personligt ville jeg foretrække dette, og lave en lille klasse, der extender MovieClip som følgende:
class Mc extends MovieClip { private var xVærdi:Number; private var yVærdi:Number; function Mc() { xVærdi = this._x; yVærdi = this._y; } function set _xVærdi(newX):Void { xVærdi = newX; this._x = newX; } function set _yVærdi(newY):Void { yVærdi = newY; this._y = newY; } function get _xVærdi():Number { return xVærdi; } function get _yVærdi():Number { return yVærdi; } }
Nu ved jeg ikke, hvor ferm du er til ActionScript, men ellers kan du i dit ActionScript skrive:
Derefter går du ind i library, højreklikker på det MovieClip, du arbejder med, og trykker Properties. Sørg for at visningen er Advanced og ikke bare Basic. Marker Export for ActionScript, og så markeres Export in first frame også. Derefter skal du i AS 2.0 Class skrive Mc, og i Identifer kan du skrive, hvad du vil - jeg har skrevet mc.
Så trykker du bare Ok, og så er det faktisk ikke sværere :)
Jeg vil lige pointere, at min løsning ikke påvirker MovieClippet med de sidste 0,00684 px, og dens "rigtige" x-værdi er nok 20,16 eller 20,2 - men hér snakker vi tiende- og hundrede dele af en enhed, du knap kan ane med det blåtte øje. Så i praksis virker min metode ikke, men rent teoretisk - og efter øjet duelighed - fungerer min metode fint.
Jeg retter lige klassen lidt til - ikke at det gør nogen betydelig forskel, men så ser det bedre ud ;)
class Mc extends MovieClip { private var xVærdi:Number; private var yVærdi:Number; function Mc() { xVærdi = this._x; yVærdi = this._y; } public function set _xVærdi(newX):Void { this._x = xVærdi = newX; } public function set _yVærdi(newY):Void { this._y = yVærdi = newY; } public function get _xVærdi():Number { return xVærdi; } public function get _yVærdi():Number { return yVærdi; } }
Jeg vil også lige sige, at du godt kan sætte samme klasse på flere movieclips, men husk at give dem hver især en unik linkage (identifier). Eller beder Flash dig bare ændre den. Og så kan du altså ikke undgå at give dem en identifier - måske til tider lidt upraktisk.
Nåh, jeg går da helt banannas. Jeg tror, jeg stopper nu :)
Det var et meget velskrevet, pænt og langt svar du kom med der :) Det er meget essentielt, at jeg bibeholder de korrekte koordinater, det være sig både
2.5 og 2.4765878
Det er selvfølgelig underligt, når man ikke visuelt kan se en sådan forskel. Ja, jeg er en rimelig erfaren AS'er ;-)
Meget pæn kode du har lavet i øvrigt.
Jeg har fået en idé ud fra det du har lavet, som jeg vil efterprøve. Jeg vender tilbage.
Undskylder ventetiden - har haft barselorlov :-) Fandt ud af en løsning der tager højde for det "spild", som Flash ikke kan håndtere. Dette kombineret med min og din "løsning" er blevet enden på det. Takker!
Synes godt om
Ny brugerNybegynder
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.