2014-12-03 235 views
0

財產「霧」我用ThreeJS正在加載場景,像這樣:ThreeJS ObjectLoader-無法讀取的不確定

$(document).ready(function(){ 
    var scene = new THREE.ObjectLoader().load("scene.js"); 
    var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 
    var renderer = new THREE.WebGLRenderer(); 
    var fly = new THREE.OrbitControls(camera); 
    renderer.setSize(window.innerWidth, window.innerHeight); 
    document.body.appendChild(renderer.domElement); 

    var gui = new dat.GUI(); 
gui.add(controls, 'rotationSpeed',0,100); 
    camera.position.z = 5; 
    camera.position.z = 32; 
    function render() { 
     requestAnimationFrame(render); 
     renderer.render(scene, camera); 
    } 
    render(); 
}); 
    var controls = new function() { 
      this.rotationSpeed = 0.02; 
      this.bouncingSpeed = 0.03; 
    }; 

和這裏的場景(從ThreeJS編輯器導出):http://www.codepixl.net/experiments/threejs/scene.js
但是,當我嘗試加載場景:它重複拋出不能讀取未定義的屬性「霧」,undefined不是我的功能。發生了什麼?應該發生什麼:

+0

這可能是相關的嗎? http://stackoverflow.com/questions/17757391 – 2014-12-03 00:46:47

+0

@ScottMcDermid雖然,我的場景沒有霧。 – user3042719 2014-12-03 00:47:29

+0

'fog'似乎是'scene'的一個屬性。你確定'場景'正在正確加載嗎? 'scene.js'存在嗎? – 2014-12-03 01:03:39

回答

1

load()是異步的。 它不是返回一個值,而是將結果傳遞給一個回調函數。嘗試這樣的:

var loader = new ObjectLoader(); 
loader.load('scene.js', function(object) { 
    scene.add(object); // load the object into your scene here 
}); 
+0

謝謝!我沒有意識到它是異步的。 – user3042719 2014-12-03 02:47:54