.setAttribute函数用于设置许多克隆实体的旋转

时间:2019-01-10 09:26:32

标签: javascript aframe

我多次克隆一个实体,现在我需要对每个实体进行轮换。每个旋转都不同,并存储在一个数组中。如何分配这些轮换?

window.onload=function(){


rollRot = document.getElementById("roller-rotation");
rollEl = document.getElementById("roller");
rollCen = document.getElementById("roller-center");
var nElements = 6;
var degSep = 360/nElements;
var rollers = new Array(nElements);
var degRot = 0;

//creat array with rotation data then clone rollerRot
for(var i = 0; i < nElements; i++){

rollers[i] = [{rotation: "0, " + degRot + ", 0"}];

degRot = degRot + degSep;
console.log(degRot);

rollCen.appendChild(rollRot.cloneNode(true));
};
console.log(rollers);
console.log(degSep);
;


//configure rotation

        var rollerNodes = document.querySelectorAll("#roller- 
rotation");
        console.log(rollerNodes);
        rollers.forEach(function(rollersData, index) {
            var rollerItem = rollerNodes[index];

            rollerItem.setAttribute("visible", true);
            rollerItem.setAttribute("rotation:", 
rollersData.rotation); //<----------------
            console.log(rollerItem);
});




}

我希望克隆的实体的旋转能够进行诸如(0,0,0)(0,60,0)(0 120 0)之类的工作,

相反,它们始终都是(0,0,0)

1 个答案:

答案 0 :(得分:0)

具有如下语法:

rollers[i] = [{rotation: "0, " + degRot + ", 0"}];

您要创建一个数组,其中的滚子数组中的对象为0。要访问它,您需要做

rollers.forEach(function(rollersData, index) {
// ...   
//        rollers item
//       \/         
rollersData[0].rotation
//          /\
//          the inner array with the rotation object

像这样:

rollerItem.setAttribute("rotation", rollersData[0].rotation)


如果这是有意的,并且您打算在该处添加头寸或其他任何罚款,否则请丢掉[]这样的rollersData.rotation括号。

提琴here