Ik ben samen met een maat van me een spel aan het maken.
Nu zit het zo dat in dat spel images zitten, en die images zijn voor objecten, bijvoorbeeld een boom (wordt RPG-achtig spel).
Echter hebben we een optie gemaakt in de map-editor om objecten verticaal te spiegelen, omdat je dan bij bijvoorbeeld een bankje, een bankje kan maken dat naar rechts 'kijkt' en een bankje dat naar 'links' kijkt met hetzelfde object.
Nougoed, de code die we hiervoor gebruiken is:
het komt er dus op neer dat als een image niet geflipped is deze gewoon getekend wordt van (x1, y1) naar (x2, y2), met x1 <= x2 en y1 <= y2.
Als de image wèl geflipped is wordt deze getekend van (x2, y2) naar (x1, y1), met x2 >= x1 en y2 >= y1.
In de Java VM van Sun is dit geen probleem, maar de Microsoft VM tekent dan gewoon botweg niets en geeft ook geen error.
Hoe kunnen we het zo maken dat het wel in Java VM èn in MS VM werkt?
Nu zit het zo dat in dat spel images zitten, en die images zijn voor objecten, bijvoorbeeld een boom (wordt RPG-achtig spel).
Echter hebben we een optie gemaakt in de map-editor om objecten verticaal te spiegelen, omdat je dan bij bijvoorbeeld een bankje, een bankje kan maken dat naar rechts 'kijkt' en een bankje dat naar 'links' kijkt met hetzelfde object.
Nougoed, de code die we hiervoor gebruiken is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| //BIGraphics is een graphics om op een off-screen-image te tekenen. (voor doublebuffering idd). curObject = objectArray[i]; curObjectImage = objects[curObject.getNo()]; //objects[] is een array van object-images int flipint = curObject.getFlip()?-1:1; BIGraphics.drawImage( curObjectImage, curObject.getX() - flipint*curObjectImage.getWidth(this)/2, curObject.getY() - curObjectImage.getHeight(this), flipint * curObjectImage.getWidth(this), curObjectImage.getHeight(this), null, this ); |
het komt er dus op neer dat als een image niet geflipped is deze gewoon getekend wordt van (x1, y1) naar (x2, y2), met x1 <= x2 en y1 <= y2.
Als de image wèl geflipped is wordt deze getekend van (x2, y2) naar (x1, y1), met x2 >= x1 en y2 >= y1.
In de Java VM van Sun is dit geen probleem, maar de Microsoft VM tekent dan gewoon botweg niets en geeft ook geen error.
Hoe kunnen we het zo maken dat het wel in Java VM èn in MS VM werkt?