Flipped Sprites?
Monkey Forums/Monkey Programming/Flipped Sprites?
| ||
I recall a while back that DrawImageRect does not support sprite flipping by setting x or y scale to -1. Is this still the case or is there a way to do it now? Is it possible to do with matrix transforms and if so how? |
| ||
Works fine here... And according to the Monkey docs: The image is drawn using the current color, alpha, blend mode and matrix, and is clipped to the current scissor rectangle. Import mojo Class MyApp Extends App Field items:Image Method OnCreate() items = LoadImage("items.png", 1, Image.MidHandle) SetUpdateRate 60 End Method OnUpdate() End Method OnRender() Cls 128,0,255 DrawImage items, 10, 10 Scale -1,1 DrawImageRect items, 200, 100, 0, 0, 200, 200 Scale 1,1 End End Function Main() New MyApp End |
| ||
I see, when I tested it I was putting the scale into the drawimagerect call. Thanks! |
| ||
I actually prefer to use GrabImage:Import mojo Class MyApp Extends App Field items:Image Field axe:Image Method OnCreate() items = LoadImage("items.png", 1, Image.MidHandle) axe = items.GrabImage(0, 0, 200, 200) SetUpdateRate 60 End Method OnUpdate() End Method OnRender() Cls 128,0,255 DrawImage axe, 200, 100, 0, -1, 1 End End Function Main() New MyApp End |
| ||
Unfortunately, when I attempt to draw it flipped, no sprite is drawn. Notice that for testing purposes both cases for facing are set to -1 to enforce the flipped draw. Function DrawStripTile:Void(strip:Image, num:Int, x:Int, y:Int, facing:Int) If facing = 1 Scale -1, 1 DrawImageRect(strip, x, y, num*TILESIZE, 0, TILESIZE, TILESIZE, 0, 1, 1) Else Scale -1,1 DrawImageRect(strip, x, y, num*TILESIZE, 0, TILESIZE, TILESIZE, 0, 1, 1) endif End Function |
| ||
What is the functional difference between the grabimage method and the drawimagerect method? At this point it wouldn't cause me much trouble to switch and setting up a table of different named images would make things like animation easier later. |
| ||
I see what I was doing wrong. The scale in the drawimagerect was overwriting the Scale command. |
| ||
What is the functional difference between the grabimage method and the drawimagerect method? Not much from what I can see, apart from that you actually store the image into another variable which does make it a lot easier to use. |
| ||
I mostly use GrabImage when I want to set the handle to Image.MidHandle. If the handle will be at the top left, DrawImageRect is just as easy. |
| ||
i thought first that GrabImage copy imagebuffer, but it create a simple reference to image... Interesting, when i discard image, it happen nothing to this reference... that is fine! |
| ||
So revill's method creates an index into the sprite sheet and doesn't experience slowdown from sprite flipping? |