SPANIMはアニメーションを開始する命令なので、毎回呼び出すとアニメーションがリセット(頭出し)されてしまうので思うようにアニメーションしません。 なので基本的にはアニメーションが変化した瞬間のみ実行して、その後変化がなければ(同じアニメーションなら)呼び出さないようにする必要があるわけです。