изменить размер объекта путем выбора выпадающего списка JavaScript - PullRequest
0 голосов
/ 26 июня 2018

Мне нужно изменить размер определенного объекта в 3D-модели, выбрав раскрывающийся список.

var activities = document.getElementById("stand");   
var wallMaterial = new THREE.MeshLambertMaterial({color:resources.settings.wallColor});
var partitionLeft = new THREE.Mesh(geometries.partition, materials.partitionMaterial);

alert(activities);

activities.addEventListener("change", function() {
    if(activities.options[activities.selectedIndex].value=="stand1") {
        var footRight = new THREE.Mesh(new THREE.BoxGeometry(0.140, 0.15, 0.05), materials.footRightMaterial);
        partitionLeft.add(footRight);
        footRight.position.set(1.15,-1.85,0);

    } else {
        var footRight = new THREE.Mesh(new THREE.BoxGeometry(6.450, 4.15, 5.25), materials.footRightMaterial);
        partitionLeft.add(footRight);
        footRight.position.set(0.15,-0.85,0);
    }
});

Проблема в этом решении заключается в том, что при переключении с одного выбора на другой (раскрывающийся список)предыдущее измерение из варианта 1 все еще там.Он не скрывается.

После выбора 2-го варианта в модели появляются обе цифры.Тогда ничего не произойдет при изменении параметров из выпадающего списка.Оба объекта появляются в модели.

Что мне нужно сделать, это скрыть 1 объект после изменения выбора раскрывающегося списка.

Есть предложения?

1 Ответ

0 голосов
/ 26 июня 2018

Проблема в том, что вы продолжаете добавлять сетки к partitionLeft, но никогда не удаляете их.

Вместо этого попробуйте что-то вроде этого:

var activities = document.getElementById("stand");   
var wallMaterial = new THREE.MeshLambertMaterial({color:resources.settings.wallColor});
var partitionLeft = new THREE.Mesh(geometries.partition, 
materials.partitionMaterial);

alert(activities);


var footRight1 = new THREE.Mesh(new THREE.BoxGeometry(0.140, 0.15, 0.05), materials.footRightMaterial);
footRight1.position.set(1.15,-1.85,0);

var footRight2 = new THREE.Mesh(new THREE.BoxGeometry(6.450, 4.15, 5.25), materials.footRightMaterial);
footRight2.position.set(0.15,-0.85,0);

activities.addEventListener("change", function() {
    if(activities.options[activities.selectedIndex].value=="stand1") {
        partitionLeft.add(footRight1);
        partitionLeft.remove(footRight2);
    } else {
        partitionLeft.add(footRight2);
        partitionLeft.remove(footRight1);
    }
});
...