为什么长度为3的数组通过`if(array.length == 6)`test?

时间:2016-02-16 00:52:25

标签: javascript arrays

我正在研究一种有两种形状的程序:三角形表示为三个顶点的数组;四边形作为六个数组(它们是粘在一起的两个三角形)。为了确定我是否处于给定的形状,我需要首先检查三角形,然后通过检查它们的两个三角形来检查四边形。

我的问题是,即使我点击三角形,也会遇到else if条件。这意味着我可以影响我的四边形而不会影响我的三角形(如果移动它们它们都移动,但这是另一个问题),但旋转三角形也会旋转所有四边形。

以下是代码:

    for(var i = shapes.length - 1; i >= 0; i--){
        /* Check triangles */
        if( shapes[i].length == 3 &&
            mouseIsInTriangle( mousePos, shapes[i] ) ){
            /* Update flag to reflect the shape that has been clicked in */
            selectedShape = i;
            /* And update theta if necessary */
            if(shift || ctrl) {
                theta[selectedShape] += thetaStep;
            }
        }
        /* Check quads */
        else if(shapes[i].length == 6){
            var triangleA = [shapes[i][0],shapes[i][1],shapes[i][2]];
            var triangleB = [shapes[i][3],shapes[i][4],shapes[i][5]];
            if( (mouseIsInTriangle, mousePos, triangleA) ||
                (mouseIsInTriangle, mousePos, triangleB)){
                // console.log("A");
                // console.log(triangleA);
                // console.log("B");
                // console.log(triangleB);
                /* Update flag to reflect the shape that has been clicked in */
                selectedShape = i;
                /* And update theta if necessary */
                if(shift || ctrl) {
                    theta[selectedShape] += thetaStep;
                }
            }
        }
    }

0 个答案:

没有答案