0

我想創建(這裏樣本數據)複製此對象的架構值的算法:提取數組值轉換成目標動態

let layer1 = {name: 'x', 
      values: [{_color: '#996666', time: 0, tween: 'quadEaseIn', value: 0}, 
        {_color: '#b074a0', time: 4, value: 5.500023}, 
        {_color: '#b074a0', time: 3, value: 4.500023}, 
        {_color: '#b074a0', time: 2, value: 3.500023}], 
      tmpValue: 3.500023, 
      _color: '#6ee167', 
      _value: 0}; 

第3,第4,而這個樣本數據的5日線是有關問題。

那麼下面是到目前爲止的算法。變量numKeyframes已經定義(n)。在第一個循環中,動態對象被添加到一個名爲keyframes的數組中。

在第二個循環中,關鍵幀數組包含在圖層對象內。這裏的想法是關鍵幀應該插入多個對象來代替它所在的對象(就像上面的示例對象數據一樣)。

... 
    var keyframes = []; 
    var timevals = [1, 2, 3, 4, 5] 
    for (var k=0; k<numKeyframes; k++) { 
    var tv = timevals[k]; 
    var kf = {_color: '#FF0000', time: tv, value: 3.500023} 
    keyframes.push(kf); 
    } 

    // make x, y, z layers 
    for (var i=0; i<3; i++) { 
    layer = {name: layerNames[i], 
       values: [{_color: layerValuesColors[i], 
         time: layerValuesTime[i], 
         tween: 'quadEaseIn', 
         value: layerValuesValues[i]}, 
         keyframes], 
       tmpValue: layertmpValues[i], 
       _color: layerColors2[i], 
       _value: layerValues[i]} 
    layerData.push(layer); 
    } 
    ... 

但這不起作用。看起來沒有包含任何對象。

如果我用關鍵幀替換關鍵幀],那麼它可以工作,但是當它需要插入所有值(對象)時,它當然只會獲得第一個值(對象)。

什麼是最好的方式去做這件事?

回答

0

我認爲你有沒有在你的代碼的任何錯誤,都只是爲了檢查使用console.dir功能的數據結構如下

console.dir(layerData); 
+0

正確,有沒有錯誤,並console.dir(layerData)不顯示對象([對象對象],[對象對象],[對象對象])...但它是layerData中的關鍵幀,我有如何正確解析它的問題 –

+0

好吧,我只是試過這個:console.dir (「layerData:」+ JSON.stringify(layerData)); –

+0

它確實顯示關鍵幀對象正在嵌套。例如,這裏是其中之一: –