PDA

Volledige versie bekijken : Bitmap fill probleem


c0redump
%Europe/Berlin %378 %2006, 09:05
Hey, Ik heb 2 vlakken die beide met dezelfde tiles gevuld zijn. 1 vlak wordt echter getekend dmv actionscript, en de ander met de pen tool. Deze vlakken sluiten naadloos aan op elkaar, maar helaas is de offset net ff iets anders, waardoor de tiles in beide vlakken niet op elkaar aansluiten.
nou hoopte ik dat ik de offset, oftewel, de grid waarin de tiles geplaatst worden, aan kan passen.
kon hier tot dusver helaas nix over vinden...misschien weet iemand een oplossing???

Dauntless
%Europe/Berlin %561 %2006, 13:27
Kan je aub een voorbeeld geven van wat je bedoelt? :# .

c0redump
%Europe/Berlin %594 %2006, 14:15
dat kan ik:

http://c0redump.its-s.tudelft.nl/~guido/tiles.gif

in het plaatje kan je zien dat er 2 bruine vlakken zijn. een schuine(rechts) en een rechte. Beiden zijn gevuld met dezelfde bitmap tile, maar ze sluiten niet op elkaar aan(dit zie je goed in de vergroting).

het schuine vlak is gewoon met de pentool getekend, en het rechte vlak op de volgende manier:

import flash.display.BitmapData;

var behang:BitmapData = BitmapData.loadBitmap("behang");
...
function fillLeft(){
var ul = -(Stage.width / 2);
var ur = Stage.width;

this.clear();
this.beginBitmapFill(behang);
this.moveTo(ul,leftBehangtop);
this.lineTo(-400,leftBehangtop);
this.lineTo(-400,leftBehangbottom);
this.lineTo(ul,leftBehangbottom);
this.endFill();
...
}
...

zo'n bitmap fill lijkt mij nix anders dan ergens de eerste tile neerzetten, en vanuit die positie telkens een volgende tile hier tegen aanzetten.
Als in beide vlakken van dezelfde beginpositie uitgegaan zou zijn, zouden dus twee vlakken met dezelfde tiles gewoon aansluiting hebben. In dit geval is dat duidelijk niet zo. Mijn vraag dan dus ook: Kan je de manier waarop die tiles uitgevuld worden aanpassen???

Dauntless
%Europe/Berlin %606 %2006, 14:33
Ik denk het niet... Maar je kan toch de hele figuur tekenen en deze dan toekennen aan een bitmap, en DAAR de tiles op loslaten? Dan zal hij wel mooi afsluiten... Of wil je dat niet?

Opiate
%Europe/Berlin %613 %2006, 14:43
sja, dat wat dauntless zegt, lijkt me de beste oplossing...
maar voor het alternatief: je eerste vlak (actionscript gestuurd)
bezit een vaste grote, en deze komt niet overeen met de grote van de bitmap + het aantal bitmaps... met andere woorden: als de bitmap 60 x 60 is, en jou vlak is 400, dan wil dat zeggen dat je 6,6 tiles hebt (met andere woorden, je laatste tile, word komt maar 60% uit de verf)
dus in het geval van de 60 pixel bitmap grote, kun je het beste een 420 pixel groot vlak tekenen, zodat alle tiles volledig worden afgerond.
Dan zal het uiteindelijk mooi aansluiten bij je handgetekende vak.

c0redump
%Europe/Berlin %626 %2006, 15:02
beide oplossingen zijn een beetje lastig. Ik teken dat rechte stuk met actionscript omdat de breedte hiervan afhankelijk is van de viewport van de browser. deze moet helemaal naar links doorlopen namelijk, de functie wordt ook getriggerd door een onResize event.
Als ik t uit 1 stuk maak, en vervolgens vul met die bitmap loopt t wel mooi door, maar als ik dat vergroot zodat het helemaal naar links uitgelijnd is dan wordt de vulling gewoon meevergroot en bovendien wordt het schuine stuk een beetje uit zn vorm getrokken.

het precies op maat maken van de vlakken zodat er alleen hele tiles in gaan werkt dus ook niet, want de maat is afhankelijk van de viewport...

De enige oplossing die nog wel werkt is het hele stuk tekenen met actionscript, maar dat wilde ik liever niet omdat ik dat lastig werken vind icm andere objecten in de movie...

bij HTML is het zo dat als je een box element ergens neerzet, en die een tileable background geeft, dan wordt de eerste tile links boven in de hoek geplaatst, en alle andere tiles komen hier tegen aan. Bij Flash is dit blijkbaar niet zo, want dan zouden de tiles in ieder geval in de hoogte goed moeten zitten. Op de eenofandere manier wordt bepaald vanuit welke positie getiled wordt, maar hoe??? en belangrijker, is dit te veranderen??

Dauntless
%Europe/Berlin %628 %2006, 15:04
Zet anders de 2 mc's (recht stuk en schuin stuk) in nog een andere mc en zorg ervoor dat ze elkaar goed aansluiten. Als je over die mc dan een bitmapfill gooit, gaat dat niet werken? (nog nooit geprobeerd ;) ).

En je kan ook gewoon de bitmapfill opnieuw laten tekenen wanneer de breedte van het object verandert hé :).

c0redump
%Europe/Berlin %654 %2006, 15:41
hmm..tsjaaH...toch zou ik graag willen weten hoe dat vullen nou gebeurt.

ik weet inmiddels dat als je via actionscript tekent, het tekenen van de tiles gebeurt vanuit de region point. bij het tekenen met de pentool kom ik er niet helemaal uit...het lijkt een soort best fit ofzo....als je het formaat neemt welke exact een veelvoud van het formaat van de tile is, dan vult ie m precies uit...is dit niet het geval...tsjaaH, hoe ie t dan doet weet ik nog niet helemaal...

c0redump
%Europe/Berlin %688 %2006, 16:31
Hmm..ik gebruik bij gradients vaak de "Gradient Transform Tool"...het is nooit in me opgekomen dat ik deze hier ook voor kan gebruiken. t heet tenslotte geen "BitmapFill Transform Tool", maar hiermee lukt het prima om die offset te bepalen.

theFlashWizard
%Europe/Berlin %704 %2006, 16:55
em.. en alles met die bitmapfill maken en dan onder een masker zetten had ook geen idee geweest trouwens?