我有一個腳本可以在畫布上生成x個蝴蝶,我使用了一些適度原始的函數構造函數,以便可以修改每個蝴蝶而不會影響其他任何蝴蝶,但更新其中一個序列更新所有這些,我看不出爲什麼。更新一個JavaScript對象全部更新它們
由於代碼數量龐大(超過350行),我創建了一個JS fiddle來看待(可能皺眉)
您可以在衆目睽睽之下這一切here。
但是因爲我不能發佈一個鏈接到JSFiddle,這裏是序列函數本身的代碼。
function Sequence (s, f) {
// Check we have arguments
if (!s || !f) {
throw new TypeError('No sequences to load');
}
// Instance for the onload event
var _sq = this;
// Some public properties
this.w = 0;
this.r = false;
this.st = 0;
this.ns = 22;
// This is the step in the sequence we're at
this.s = 20;
// The step width
this.sw = 0;
// Create the image
this._s = new Image;
this._f = new Image;
// Load listener
this._s.onload = function() {
// Set our publics
_sq.w = this.width;
_sq.sw = _sq.w/fps;
};
this._s.src = s;
this._f.src = f;
// Return
return this;
};
[編輯] 我已經更新序列類基本上不關心負載,它的預取反正使用
<link rel="prefetch" href="image.png" />
我還更新了的jsfiddle所以你可以看到它工作(還有其他幾個更新),但代碼有點笨拙,因此我不會進入它。
對不起,小提琴的代碼掛在我的瀏覽器(FF21)。我不是在一臺特別快速的電腦上,但也許值得注意的是,這是否適用於公衆。 – K3N 2013-04-08 09:22:17
它僅針對iPad,似乎在所有的iPad和我的MacBook上都可以。我更新了鏈接,鏈接到了錯誤的版本。 – 2013-04-08 09:23:51
您應該1)在原型上設置函數,並在這些函數中使用'this'以避免內存浪費/使用閉包2)僅在'SequenceImage'類中存儲圖像一次。 3)使用requestAnimationFrame有一個流暢的動畫。我看到所有蝴蝶都在隨意移動,這是什麼問題? – GameAlchemist 2013-04-08 09:59:35