I am not sure what type of this asking it should be. But most importantly, it is about Greenfoot system that appears to be a trouble.
I am scaling an image in an actor.
this actor does expand the size of the image, then shrink again.
Now, I have added the actor to the World.
there.
The problem is:
After the image being reffered shrunk, the quality ruins!
Before Act:
After Act:
image size shrinking:
Sorry for large images. Basically, I simply scale and update the set image with the new setting reffered.
I must have used the scaler wrongly.
If you have any solution to make the image does not broke with scaling, feel free and thanks for your help.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class BoomImage here. * * @author (your name) * @version (a version number or a date) */ public class BoomImage extends ExplosionImage { private boolean existed = false ; private int Sequence = 0 ; private int [] DynaSize = new int [] { 0 , 0 }; private int DynaX = 0 ; private int DynaY = 0 ; private int [] Ukuran = new int []{getImage().getWidth(), getImage().getHeight()}; private int nonDeltaTimeKey = 100 ; private GreenfootImage baseImg = new GreenfootImage( "BoomImage.png" ); private GreenfootImage imaging = new GreenfootImage(baseImg); public BoomImage(){ DynaSize[ 0 ] = 1 ; DynaSize[ 1 ] = 1 ; imaging.scale(Ukuran[ 0 ], Ukuran[ 1 ]); setImage(imaging); //existed = true; } public void addedToWorld(World world){ existed = true ; Sequence = 0 ; } /** * Act - do whatever the ExplosionImage wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { // Add your action code here. //DynaSize[0] += 10; //DynaSize[1] += 10; //imaging.scale(DynaSize[0], DynaSize[1]); //setImage(imaging); if (existed == true ){ if (Sequence == 0 ){ if (DynaSize[ 0 ] < Ukuran[ 0 ] || DynaSize[ 1 ] < Ukuran[ 1 ]){ DynaSize[ 0 ] += 10 ; DynaSize[ 1 ] += 10 ; } else if (DynaSize[ 0 ] >= Ukuran[ 0 ] || DynaSize[ 1 ] > Ukuran[ 1 ]){ Sequence = 1 ; } } else if (Sequence == 1 ){ if (DynaSize[ 0 ] > 2 || DynaSize[ 1 ] > 2 ){ DynaSize[ 0 ] -= 10 ; DynaSize[ 1 ] -= 10 ; } else if (DynaSize[ 0 ] <= 2 || DynaSize[ 1 ] <= 2 ){ imaging.setTransparency( 0 ); Sequence = 2 ; } } imaging.scale(DynaSize[ 0 ], DynaSize[ 1 ]); setImage(imaging); } } } |
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 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class testResult2 here. * * @author (your name) * @version (a version number or a date) */ public class testResult2 extends testAreas { /** * Constructor for objects of class testResult2. * */ public testResult2() { prepare(); } /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. */ private void prepare() { levelNumber levelnumber = new levelNumber( 12 , "Windowsl" ); addObject(levelnumber,getWidth()/ 2 , 12 ); DuarImage duarimage = new DuarImage(); addObject(duarimage, 255 , 202 ); BoomImage boomimage = new BoomImage(); addObject(boomimage, 446 , 202 ); } } |


