Nate
I'm trying to make an animation loop for 3 seconds before switching
I gotta stop using Gemini

weird

Nate
ohhhhhhhhhhh. Thx.
Final question I think
How do I make a set of animations loop forever?
So after using setAnimation then addAnimation 5 times, it'll just loop those 6

wait nvm it does it automatically
Good grief yall really did make things ez

wait nvm, i was seeing things
but this is wierd
with this:

success: function (player) {
    player.animationState.setAnimation(0, "run", true, 5);
    player.animationState.addAnimation(0, "jump", false);
    player.animationState.addAnimation(0, "run", true,5);
	  player.animationState.addAnimation(0, "idle", true, 3);

},

I get this

It just stays frozen like that in idle forever

setAnimation takes 3 parameters, not 4:

player.animationState.setAnimation(0, "run", true, 5);

addAnimation takes 4 parameters, not 3:

player.animationState.addAnimation(0, "jump", false); // Missing the delay param.

Make sure you understand the parameters (read the docs).

The true being passed makes that animation loop if playback exceeds the animation duration. If false is passed it will give you the last frame forever.

It's easy to play a single animation looping forever. To play multiple animations repeatedly, you'll need a listener to know when they are done, then you set the animations again:

success: function (player) {
	var loop = function () {
		player.animationState.addAnimation(0, "jump", true, 0);
		var entry = player.animationState.addAnimation(0, "run", true, 3);
		entry.listener = {
			complete: function (event) {
				loop();
			}
		};		 
	};
	loop();
},

There are other events available beside complete, see the API reference docs.

You can also mix between animations, so the change is not so abrupt:

player.animationState.data.defaultMix = 0.2;
player.animationState.addAnimation(0, "jump", true, 0);

Or on a specific transition:

var entry = player.animationState.addAnimation(0, "jump", true, 0);
entry.mixDuration = 0.2;

Thx, that helped a lot.
I forgot about one final aspect, certain skins have a special animation on another track that plays, it is
skins-filename-common. The filename changes based on whatever filename I put in. So my questions around this are, how do I create an if animation exists statement, and how do I define a constant inside an animation name in setAnimation?

You're welcome!

"skin" means something else in Spine. I assume you mean different skeletons may not have some animations. To set an animation only if it exists:

var animation = player.skeleton.data.findAnimation("run");
if (animation) player.animationState.addAnimation(0, animation, true, 0);

What do you mean by "define a constant inside an animation name"?

    Nate Thx that answered the first part of my question.
    As for the second part, the constant filename is defined when someone types in something and hits Load Animation.

    I want to know how to use that constant in the findAnimation and addAnimation

    I'm not sure what you are asking. Basic programming maybe?

    var name = "something";
    var animation = player.skeleton.data.findAnimation(name + "-run");

    If that's missing the mark, you'll need to better explain what you are trying to accomplish. Sometimes it's faster if you know exactly what to ask, sometimes you need to lay out the whole situation so we can give the appropriate advice.

      Nate
      so just by putting it outside of the quotations it interprets it as a variable/constant?
      And yeah, it probably is basic programming, but I don't rlly know JS

      Nate that's exactly what I was looking for
      Thank you so much for your help!

        LeinadNoscaj
        this is the final question
        How do I get something to play only one time, but all the way through
        When I set the delay to 0, it pretty much skips over the animation

        If you play A and then queue (using addAnimation, not setAnimation) B using delay 0, the actual delay used will be such that B starts when A ends.

        For some reason when I did it it cut most of the animation off
        I mean it is like 0.3 seconds but still

        If there is a mix duration from A to B, delay 0 will start B at the A duration minus the mix duration, so when B mixing is done, A has just ended. Eg A is 0.3 duration and mix is 0.2. Queuing B with delay zero would use a delay of (0.3 - 0.2) = 0.1.

        Read the API reference and try watching this video, even though it's for Unity it explains AnimationState concepts:

        so how would I use TrackEntry to set mixduration to 0
        I tried the thing in the video but either I wasn't writing it right, or I put it in the wrong place.
        So where do I put it, and how am I supposed to write it for the web-player