hi i wanted to create a simple program that plays all model animations.
the problem is onAnimCycleDone doesnt notify me when “stand” animation is finished.
[java]package nooblike;
import com.jme3.animation.AnimChannel;
import com.jme3.animation.AnimControl;
import com.jme3.animation.AnimEventListener;
import com.jme3.app.SimpleApplication;
import com.jme3.light.DirectionalLight;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Spatial;
import java.util.Iterator;
public class BeginnerTest07_PlayAllAnimation extends SimpleApplication implements AnimEventListener
{
public static void main(String[] args)
{
BeginnerTest07_PlayAllAnimation app = new BeginnerTest07_PlayAllAnimation();
app.start();
}
private AnimControl control;
private AnimChannel channel;
private Spatial player;
Iterator<String> animations ;
@Override
public void simpleInitApp()
{
player = assetManager.loadModel(“Models/Oto/Oto.mesh.xml”);
rootNode.attachChild(player);
control = player.getControl(AnimControl.class);
control.addListener(this);
channel = control.createChannel();
for (String anim : control.getAnimationNames()) { System.out.println(anim); }
playNextAnimation();
//channel.setLoopMode( LoopMode.Cycle );
/** Must add a light to make the lit object visible! */
DirectionalLight sun = new DirectionalLight();
sun.setDirection(new Vector3f(1, 0, -2).normalizeLocal());
sun.setColor(ColorRGBA.White);
rootNode.addLight(sun);
}
public void playNextAnimation()
{
System.out.println("
");
System.out.println("play animation start");
if (animations != null && animations.hasNext())
{
String animationName = animations.next();
System.out.println("Playing "+animationName);
channel.setAnim(animationName);
}
else
{
System.out.println("iterator");
animations = control.getAnimationNames().iterator();
String animationName = animations.next();
System.out.println("Playing "+animationName);
channel.setAnim(animationName);
}
System.out.println("play next animation done");
}
public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName)
{
System.out.println("AnimCycleDone");
playNextAnimation();
}
public void onAnimChange(AnimControl control, AnimChannel channel, String animName)
{
System.out.println("AnimChange : "+animName);
}
}[/java]
how can i fix it ?