我只想知道如何使用另一个函数来访问一个函数。因此,如果我有下面的代码,则change函数不会影响加载程序函数。我究竟做错了什么 ?

var loader = new THREE.JSONLoader();

loader.load( "test.js", function(geometry, materials){
var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
scene.add(mesh);
});

  $('input').change(function() {

    if($("#radio").is(":checked")){
    mesh.material.materials[ 0 ].color.set( 0xff0000 );
    mesh.material.materials[ 1 ].color.set( 0x111111 );
  }

  });

最佳答案

一个函数的局部变量不能从其他函数访问。由于javascript函数是closures,因此您可以让两个函数共享一个变量:

var loader = new THREE.JSONLoader();
var mesh;

loader.load( "test.js", function(geometry, materials){
  mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
  scene.add(mesh);
});

$('input').change(function() {
  if($("#radio").is(":checked")){
    mesh.material.materials[ 0 ].color.set( 0xff0000 );
    mesh.material.materials[ 1 ].color.set( 0x111111 );
  }
});

关于javascript - 使一个功能影响其他功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34086929/

10-12 13:19