简体   繁体   English

实时调整框的大小

[英]Resizing box in real time

I am trying to resize a cube whenever a new value is set in the input text-box.每当在输入文本框中设置新值时,我都会尝试调整多维数据集的大小。 So far i have come across something similar, but it changes the cube only after a button is pressed.到目前为止,我遇到过类似的东西,但只有在按下按钮后它才会改变立方体。

http://jsfiddle.net/EtSf3/3/ http://jsfiddle.net/EtSf3/3/

 document.getElementById('btn').addEventListener('click', function(e) {
        var inputs = document.getElementsByClassName('numeric-textbox');
        cube.scale.x = parseFloat(inputs[0].value) || cube.scale.x;
        cube.scale.z = parseFloat(inputs[1].value) || cube.scale.z;
        cube.scale.y = parseFloat(inputs[2].value) || cube.scale.y;
    });

Just have to add onChange to the input fields that triggers a function to call the resize.只需将 onChange 添加到触发 function 的输入字段即可调用调整大小。

<input class="numeric-textbox" type="text" value="" onChange="resCube();">

function resCube() {
    var inputs = document.getElementsByClassName('numeric-textbox');
    cube.scale.x = parseFloat(inputs[0].value) || cube.scale.x;
    cube.scale.z = parseFloat(inputs[1].value) || cube.scale.z;
    cube.scale.y = parseFloat(inputs[2].value) || cube.scale.y;
}

http://jsfiddle.net/2wxbvkd3/ http://jsfiddle.net/2wxbvkd3/

Change your html to this:将您的 html 更改为:

<script src="http://www.html5canvastutorials.com/libraries/three.min.js"></script>
<div id="container"></div>
<div class="inputRow clear" id="dimensionsNotRound" data-role="tooltip">
    <label class="grid-8">Dimensions (mm):</label>
    <br/>
    <br/>
    <div> <span>Length</span>

        <input class="numeric-textbox" id='x' type="text" value="" onkeyup="updateRect(this.id, this.value)">
        <br/>
        <br/>
    </div>
    <div> <span>Width</span>

        <input class="numeric-textbox" id='y' type="text" value="" onkeyup="updateRect(this.id, this.value)">
        <br/>
        <br/>
    </div>
    <div> <span>Height</span>

        <input class="numeric-textbox" id='z' type="text" value="" onkeyup="updateRect(this.id, this.value)">
        <br/>
        <br/>
    </div>
</div>

And change this function:并更改此 function:

//Script for 3D Box 
document.getElementById('btn').addEventListener('click', function(e) {
    var inputs = document.getElementsByClassName('numeric-textbox');
    cube.scale.x = parseFloat(inputs[0].value) || cube.scale.x;
    cube.scale.z = parseFloat(inputs[1].value) || cube.scale.z;
    cube.scale.y = parseFloat(inputs[2].value) || cube.scale.y;
});

to this:对此:

  const changer = {
        "x": (value) => cube.scale.x = parseFloat(value) || cube.scale.x,
      "y": (value) => cube.scale.y = parseFloat(value) || cube.scale.y,
      "z": (value) => cube.scale.z = parseFloat(value) || cube.scale.z,
    }
      
    function updateRect(axis, value){
        changer[axis](value)
    }

This should change the rectangle whenever you change the input value.每当您更改输入值时,这应该会更改矩形。 You can see on this updated fiddle: http://jsfiddle.net/v5md7ug8/您可以在这个更新的小提琴上看到: http://jsfiddle.net/v5md7ug8/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM