Is it possible to animate the Projectile before it gets removed? I tried some things but it ended up all the same. The Projectile get removed first, so obviously it cant get animated.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Projectile here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Projectile extends Mover
{
/**
* Act - do whatever the Projectile wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
private int speed = 10;
private int vSpeed = 0;
private int accel = 1;
private int jumpHeight= -20;
private boolean jumping = false;
int deathCount = 0;
boolean isDying = false;
private GreenfootImage run1 = new GreenfootImage("fireball1.png");
private GreenfootImage run2 = new GreenfootImage("fireball2.png");
private GreenfootImage run3 = new GreenfootImage("fireball3.png");
private GreenfootImage run4 = new GreenfootImage("fireball4.png");
private GreenfootImage run5 = new GreenfootImage("fireball5.png");
private GreenfootImage run6 = new GreenfootImage("fireball6.png");
private GreenfootImage run7 = new GreenfootImage("fireball7.png");
private GreenfootImage run8 = new GreenfootImage("fireball8.png");
private GreenfootImage run9 = new GreenfootImage("fireball9.png");
private GreenfootImage run10 = new GreenfootImage("Fireball_explosion1.png");
private GreenfootImage run11 = new GreenfootImage("Fireball_explosion2.png");
private GreenfootImage run12 = new GreenfootImage("Fireball_explosion3.png");
private GreenfootImage run13 = new GreenfootImage("Fireball_explosion4.png");
private GreenfootImage run14 = new GreenfootImage("Fireball_explosion5.png");
private GreenfootImage run15 = new GreenfootImage("Fireball_explosion6.png");
private GreenfootImage run16 = new GreenfootImage("Fireball_explosion7.png");
private GreenfootSound sound = new GreenfootSound("Projectile_sound.mp3");
private int frame = 1;
private int animationCounter = 0;
public Projectile()
{
}
public void act()
{
if(isDying)
{
deathCount++;
if(1 == deathCount)
setImage("Fireball_explosion1.png");
else if(2 == deathCount)
setImage("Fireball_explosion2.png");
else if(3 == deathCount)
setImage("Fireball_explosion3.png");
else if(4 == deathCount)
setImage("Fireball_explosion4.png");
else if(5 == deathCount)
setImage("Fireball_explosion5.png");
else if(6 == deathCount)
setImage("Fireball_explosion6.png");
else if(7 == deathCount)
setImage("Fireball_explosion7.png");
else
getWorld().removeObject(this);
return;
}
move(10.0);
moveAround();
animationCounter ++;
remove();
}
public void moveAround()
{
if(animationCounter % 8 == 0)
animatefireball();
}
public void turnToMouse()
{
turnTowards(15000,0);
}
public void animatefireball()
{
if (frame == 1)
{
setImage(run1);
}
else if(frame ==2)
{
setImage(run2);
}
else if(frame ==3)
{
setImage(run3);
}
else if(frame ==4)
{
setImage(run4);
}
else if(frame ==5)
{
setImage(run5);
}
else if(frame ==6)
{
setImage(run6);
}
else if(frame ==7)
{
setImage(run7);
}
else if(frame ==8)
{
setImage(run8);
}
else if(frame ==9)
{
setImage(run9);
frame = 1;
return;
}
frame ++;
}
public void remove()
{
Actor walls = getOneIntersectingObject(Ground.class);
if(getX() <=1 || getX() >= getWorld().getWidth() -1)
{
getWorld().removeObject(this);
}
else if(walls != null)
{
deathCount = 0;
isDying = true;
getWorld().removeObject(this);
sound.play();
}
}