一种可能性是放弃数组并使用链表。
使每一帧成为指向下一个对象的对象。然后最后一个指向第一个。然后你需要做的就是引用下一个对象。
var curr = first; // reference to first frame object
setInterval(function() {
// process image
curr.image.doSomething();
// proceed to next
curr = curr.next;
}, 1000);
没有计数器可以用这种方式搞砸。
设置链表通常非常简单,只需对设置数组的当前代码稍作修改即可完成。
var first = new Frame(); // This is your entry point
var current = first; // This holds the current frame during setup
for (var i = 0; i < totalFrames; i++) {
current.next = new Frame(); // Make the current reference a new frame
current = current.next; // Make the new frame current
}
current.next = first; // circular reference back to the first.
function Frame() {
// set up this frame
}
然后first
是你的起点。
或者链接可以在Frame
构造函数中完成。
var first = new Frame(null);
var current = first;
for (var i = 0; i < totalFrames; i++) {
current = new Frame(current);
}
current.next = first;
function Frame(currFrame) {
// link this frame to the given one
if (currFrame)
currFrame.next = this;
// set up the rest of this frame
}