2015-12-04 130 views
0

我只想知道如何使用其他功能訪問功能。所以如果我有下面的代碼,更改函數不會影響加載函數。我究竟做錯了什麼 ?製作功能會影響其他功能

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); 
    } 

    }); 

回答

3

函數的局部變量不能從其他函數訪問。因爲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); 
    } 
}); 
+0

是的。將函數(閉包)看作具有公共和私人範圍。 – DvS