Laurence wrote...
I think I've figured out the problem. The 'Idle.gif' and 'IdleBack.gif' are both single-framed PNGs but I used them to make coding it as a whole easier (very lazy on my part). Would this be the issue?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // change fields GreenfootImage gifR0 = new GreenfootImage( "Idle.png" ); // adjust filename as needed GreenfootImage gifL0= new GreenfootImage( "IdleBack.png" ); // adjust filename as needed // in act if (dx != 0 ) // not idle { if (dx == 1 ) gif = gifR1; else gif = gifL1; setImage(gif.getCurrentImage()); } else // idle { if (gif == gifR1) setImage(gifR0); if (gif == gifL1) setImage(gifL0); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public Kasu_Marie() { int scalePercent = 20 ; for (GreenfootImage gif : gifR1.getImages()) { int wide = gif.getWidth()*scalePercent/ 100 ; int high = gif.getHeight()*scalePercent/ 100 ; gif.scale(wide, high); } for (GreenfootImage gif2 : gifL1.getImages()) { int wide = gif2.getWidth()*scalePercent/ 100 ; int high = gif2.getHeight()*scalePercent/ 100 ; gif2.scale(wide, high); } for (GreenfootImage image : gifR0.getImages()) { int wide = image.getWidth()*scalePercent/ 100 ; int high = image.getHeight()*scalePercent/ 100 ; image.scale(wide, high); } for (GreenfootImage image2 : gifL0.getImages()) { int wide = image2.getWidth()*scalePercent/ 100 ; int high = image2.getHeight()*scalePercent/ 100 ; image2.scale(wide, high); } } |
1 2 3 4 5 6 7 8 9 | private void scaleGif(GifImage gif, int scalePct) { for (GreenfootImage image : gif.getImages()) { int wide = image.getWidth()*scalePct/ 100 ; int high = image.getHeight()*scalePct/ 100 ; image.scale(wide, high); } } |
1 2 3 4 5 6 7 8 | public Kasu_Marie() { int scalePercent = 20 ; scaleGif(gifR1, scalePercent); scaleGif(gifR0, scalePercent); scaleGif(gifL1, scalePercent); scaleGif(gifL0, scalePercent); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public Kasu_Marie() { int scalePercent = 40 ; scaleGif(gifR1, scalePercent); scaleGif(gifR0, scalePercent); scaleGif(gifL1, scalePercent); scaleGif(gifL0, scalePercent); } private void scaleGif(GifImage gif, int scalePct) { for (GreenfootImage image : gif.getImages()) { int wide = image.getWidth()*scalePct/ 100 ; int high = image.getHeight()*scalePct/ 100 ; image.scale(wide, high); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | public class Kasu_Marie extends Actor { private GifImage gifR1 = new GifImage( "Run.gif" ); private GifImage gifL1 = new GifImage( "RunBack.gif" ); private GifImage gifR0 = new GifImage( "Idle.gif" ); private GifImage gifL0 = new GifImage( "IdleBack.gif" ); private GifImage gif = gifR0; public void act() { int dx = 0 ; if (Greenfoot.isKeyDown( "d" )) dx++; if (Greenfoot.isKeyDown( "a" )) dx--; move( 8 *dx); if (dx != 0 ) { if (dx == 1 ) gif = gifR1; else gif = gifL1; setImage(gif.getCurrentImage()); } else { if (gif == gifR1) gif = gifR0; if (gif == gifL1) gif = gifL0; } setImage(gif.getCurrentImage()); } public Kasu_Marie() { int scalePercent = 40 ; scaleGif(gifR1, scalePercent); scaleGif(gifR0, scalePercent); scaleGif(gifL1, scalePercent); scaleGif(gifL0, scalePercent); } private void scaleGif(GifImage gif, int scalePct) { for (GreenfootImage image : gif.getImages()) { int wide = image.getWidth()*scalePercent/ 100 ; int high = image.getHeight()*scalePercent/ 100 ; image.scale(wide, high); } } } |