2016-08-04 18 views
1

私はthree.jsの例からコピーしたthree.jsプロジェクトのライト用のフォルダを追加しようとしています。しかし、私はそれを働かせることはできません。私は私がf1 = add.folder( 'light1')を使用し、何とかf1.add( '強度')等でf1にパラメータを追加する必要があると思います...しかし、コードがこのように構造化されているとき、これを行う方法? node = f1.add()は動作しません!dat.guiにフォルダを追加するには?

 function buildGui() { 
      clearGui();   
/****************************** Light1 **************************/ 
      var f1 = gui.addFolder('Light1'); 
      addGui('lightcolor', spotLight.color.getHex(), function(val) { 
       spotLight.color.setHex(val); 
       render(); 
      }, true); 

      addGui('intensity', spotLight.intensity, function(val) { 
       spotLight.intensity = val; 
       render(); 
      }, false, 0, 2); 

/************************** Light2 **************************/ 
      var f2 = gui.addFolder('Light2'); 
      addGui('lightcolor 2', spotLight2.color.getHex(), function(val) { 
       spotLight2.color.setHex(val); 
       render(); 
      }, true); 

      addGui('intensity 2', spotLight2.intensity, function(val) { 
       spotLight2.intensity = val; 
       render(); 
      }, false, 0, 2); 
     } 

     function addGui(name, value, callback, isColor, min, max) { 
      var node; 
      param[ name ] = value; 

      if (isColor) { 
        node = gui.addColor(param, name).onChange(function() { 
        callback(param[ name ]); 
       }); 
      } else if (typeof value == 'object') { 
        node = gui.add(param, name, value).onChange(function() { 
        callback(param[ name ]); 
       }); 
      } else { 
        node = gui.add(param, name, min, max).onChange(function() { 
        callback(param[ name ]); 
       }); 
      } 
      gui.remember(param); 
      return node; 
     } 

答えて

1

あなたはそれが正常に動作する必要がありaddGuiするパラメータとしてターゲット(すなわちguiまたはフォルダ)を追加した場合。

このような何か:

function addGui(gui, name, value, callback, isColor, min, max) { 
    // ... stays the same 
} 

var f2 = gui.addFolder('Light2'); 
addGui(f2, 'lightcolor 2', /* ... */); 
関連する問題