我想创建一个复制此对象模式值的算法(此处为示例数据):
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)。在第一个循环中,动态对象被添加到名为关键帧的数组中。
在第二个循环中,关键帧数组包含在图层对象中。这里的想法是关键帧应该插入多个对象来代替它所在的对象(就像上面的示例对象数据一样)。
...
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]]替换关键帧,那么它可以工作,但当需要插入所有值(对象)时,它只获得第一个值(对象)。
最好的方法是什么?