How do I make the transition of images delayed? I use several images but they flip so fast you can barely notice it.
/** add the following line outside any methods */
private int imgTimer;
/** in act method */
imgTimer++;
/** to run the animation */
if (imgTimer == 6) // adjust value as needed
{
imgTimer = 0;
// change image here
}import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Ape here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Ape extends Enemy
{
private GreenfootImage image1;
private GreenfootImage image2;
private GreenfootImage image3;
private GreenfootImage image4;
private GreenfootImage image5;
private GreenfootImage image6;
private GreenfootImage image7;
private GreenfootImage image8;
private GreenfootImage image9;
private GreenfootImage image10;
private GreenfootImage image11;
private GreenfootImage image12;
private int imgTimer;
private boolean rollDir = true;
private int life = 10;
public Ape()
{
image1= new GreenfootImage("apeLeft1.png");
image2= new GreenfootImage("apeLeft2.png");
image3= new GreenfootImage("apeLeft3.png");
image4= new GreenfootImage("apeLeft4.png");
image5= new GreenfootImage("apeLeft5.png");
image6= new GreenfootImage("apeLeft6.png");
image7= new GreenfootImage("apeRight1.png");
image8= new GreenfootImage("apeRight2.png");
image9= new GreenfootImage("apeRight3.png");
image10= new GreenfootImage("apeRight4.png");
image11= new GreenfootImage("apeRight5.png");
image12= new GreenfootImage("apeRight6.png");
setImage(image1);
}
public void act()
{
roll();
takeDamage();
killPlayer();
imgTimer++;
if (535>=getY())
{
gravity();
}
if (getX()>=1350)
{
rollDir = true;
}
if (20>=getX())
{
rollDir = false;
}
if (life == 0)
{
defeated();
}
if (imgTimer == 15 && rollDir == true)
{
imgTimer = 0;
if (getImage()==image1)
{
setImage(image2);
}
else if (getImage()==image2)
{
setImage(image3);
}
else if (getImage()==image3)
{
setImage(image4);
}
else if (getImage()==image4)
{
setImage(image5);
}
else if (getImage()==image5)
{
setImage(image6);
}
else if (getImage()==image6)
{
setImage(image1);
}
else
{
setImage(image1);
}
}
if (imgTimer == 5 && rollDir == false)
{
imgTimer = 0;
if (getImage()==image7)
{
setImage(image8);
}
else if (getImage()==image8)
{
setImage(image9);
}
else if (getImage()==image9)
{
setImage(image10);
}
else if (getImage()==image10)
{
setImage(image11);
}
else if (getImage()==image11)
{
setImage(image12);
}
else if (getImage()==image12)
{
setImage(image7);
}
else
{
setImage(image7);
}
}
}
public void roll()
{
if (rollDir == true)
{
rollLeft();
}
if (rollDir == false)
{
rollRight();
}
}
public void takeDamage()
{
Actor redBeamLeft;
redBeamLeft = getOneObjectAtOffset(0,0,RedBeamLeft.class);
Actor redBeamRt;
redBeamRt = getOneObjectAtOffset(0,0,RedBeamRt.class);
Actor redBeamUp;
redBeamUp = getOneObjectAtOffset(0,0,RedBeamUp.class);
Actor redBeamDown;
redBeamDown = getOneObjectAtOffset(0,0,RedBeamDown.class);
if (redBeamLeft!=null | redBeamRt!=null | redBeamUp!=null | redBeamDown!=null)
{
life--;
}
}
private void defeated()
{
getWorld().removeObject(this);
}
public void rollLeft()
{
move(-3);
}
public void rollRight()
{
move(3);
}
}