2014-01-16 42 views
0

這種情況TweenJS不尊重實例嗎?

我需要遍歷數組,並根據每個項目的值運行補間。因此,對於數組中的每個項目,必須有一個單獨的Tween實例。根據TweenJS documentationget()方法「返回新的補間實例」。

的問題

看來好像存在陣列中的for

守則

HTML內運行的每個項目的新吐溫當只有一個單獨的實例

<div id='log'></div> 

Java腳本

var items = [3,6,2,8,9,6]; 
var log = document.getElementById('log'); 

for(var i = 0; i < items.length; i++){ 
    var item = items[i]; 

    var start = { 
     x: item * 10, 
     y: item * 15 
    }; 

    var end = { 
     x: item * 10, 
     y: item * 30 
    }; 

    createjs.Tween 
     .get(start, { 
      onChange: function() { 
       log.innerHTML = log.innerHTML + i + " - " + JSON.stringify(start) + "<br/>"; 
      } 
     }) 
     .to(end, 1000) 
}; 

演示

http://codepen.io/anon/pen/pilAL - 請注意輸出。開頭的數字是當前數組值的索引。它只顯示最後一個項目。

理想...

理想地,陣列中的每個項目將其值之間分別補間。

在此先感謝!

回答

2

快速骯髒的解決方案是使用onChange中的「事件」參數,並檢查其target.target屬性。

訣竅是,它正在適當地觸發一切,但變量範圍是這樣的,我開始不再包含事件方法觸發時尋找的值。

這與變革:http://codepen.io/anon/pen/FhsHz

呀,如我所料,它是從詞法範圍發出來的......我只好自己刷新它,因爲它是一段時間,因爲我已經以這種方式處理JavaScript(因此擔心它!)

通讀本指南,它非常有見地,並開始解決您的問題以及在「在閉環中創建閉合」小節中的解決方法:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures

的要點是,如果你想要創建一個匿名函數來使用在函數創建時捕獲的值,你必須將你最終使用的變量的範圍變爲這樣一個狀態,即它實際上指向期望值。

這很煩人,他們確實應該爲你提供一個比「event.target.target」更直觀的參數,作爲獲得你所尋求的價值的地方,但另一種方法是做一些事情,比如他們在做什麼這個例子,本質上是一個函數生成函數,你傳入變量。此時,函數使用的變量範圍將成爲「生成函數」中傳入參數的範圍,並且它將指向適當的值。 Y u c k。