В основной программе я случайным образом выбираю объект, который хотел бы анимировать, поэтому я вызываю функцию с объектом в качестве аргумента. Первый цикл в порядке, x точно установлен, но на следующем ходу он становится undefined.
Что-то вроде этого:
var anim = {
        mainFunc: function(x) {
            anim.update(x);
            anim.redraw(x);
            window.requestAnimationFrame(anim.mainFunc);
        },
        update: function(x) {
        },
        redraw: function(x) {
        }
};
var n=Math.floor(Math.random() * (ArrayOfAnimObject.length));
anim.mainFunc(ArrayOfAnimObject[n]);
