È possibile precaricare le immagini in un array e poi recuperarle con un indice.
<p align="center"><img id="animazione" alt="Animazione"><br/>
<input type="button" value="PLAY" onclick="play()">
<input type="button" value="STOP" onclick="stop()">
<script>
var PATH="https://www.valcon.it/javascript/wp-content/uploads/a";
var EXT =".gif";
var FRAME=12;
var frame=0;
var codice=0;
var immagine=document.getElementById("animazione");
var immagini=new Array(FRAME);
for(i=0; i < FRAME; i++)
{
immagini[i]=new Image();
immagini[i].src=PATH+i+EXT;
}
function cambia()
{
frame++;
if(frame == FRAME)
frame=0;
immagine.src=immagini[frame].src;
}
function play()
{
if(codice == 0)
codice=setInterval("cambia()", 200);
}
function stop()
{
clearInterval(codice);
codice=0;
}
window.onload=cambia();
</script>