2016-03-22 15 views
1

İçe aktarılan bir örgü döndürmeyi gösteren, Three.js ile çok basit bir sahne oluşturmaya çalışıyorum. Ben Three.js belgelerinden birkaç örnek kombine ve aşağıdaki kodla geldi:Three.js JSONLoader 'onLoad bir işlev değil'

var scene, camera, renderer; 
var geometry, material, mesh; 

init(); 
animate(); 

function init(){ 
    scene = new THREE.Scene(); 

    camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 10000); 
    camera.position.z = 1000; 

    // geometry = new THREE.BoxGeometry(200, 200, 200); 
    var jsonLoader = new THREE.JSONLoader(); 
    jsonLoader.load('handgun.js', object_to_scene(geometry, material)); 
} 

function object_to_scene(geometry, material){ 
    material = new THREE.MeshBasicMaterial({ 
     color: 0xff0000, 
     wireframe: true 
    }); 

    mesh = new THREE.Mesh(geometry, material); 
    scene.add(mesh); 

    renderer = new THREE.WebGLRenderer(); 
    renderer.setSize(window.innerWidth, window.innerHeight); 

    document.body.appendChild(renderer.domElement); 
} 

function animate(){ 
    requestAnimationFrame(animate); 
    mesh.rotation.x += 0.01; 
    mesh.rotation.y += 0.02; 

    renderer.render(scene, camera); 
} 

Sence Three.js kullanarak Box oluşturulan nerede, yukarıda ortaya yorumladı orijinal örnek görebilirsiniz. Bu iyi çalıştı. Ancak, özel 3 boyutlu modelin JSON dosyası içe aktarılmıyor. Benim konsol Denetleme aşağıdaki hatayı ortaya koymaktadır:

Bu Three.js'ye kendisi ile ilgili bir hata gibi görünen
TypeError: onLoad is not a function    three.js:18294:4 
    THREE.JSONLoader.prototype.load/<()   three.js:18294 
    THREE.XHRLoader.prototype.load/<()    three.js:18010 

, ancak Github yüzündenkalamayacaklarını bildiren kişilerin sadece iki örneğini bulduk ve hem söylendi Github, hata bildirmek için yardım istemiyordu (eğer bu bir hata değilse, o zaman nedir?).

Başka bir kişi bu sorunla karşılaştı ve sorunu çözdüyseniz nasıl yaptınız?

Teşekkürler! Bunun yerine

jsonLoader.load('handgun.js', object_to_scene(geometry, material)); 

ait

cevap

2

Bunu yapmanız gerekir:

jsonLoader.load('handgun.js', object_to_scene); 

object_to_scene(geometry, material) o senin olayda, undefined döndüren bir işlev çağrıdır.

three.js r.75

+0

Teşekkür ederiz! Bu hatanın neden üçlüsüne girdiğimi bilmiyordum, ama sonuçta karşılaştığım TypeError'ı bana veriyordu, fakat bunu düzeltmiş gibi görünüyor (kodda birkaç değişiklik daha var). – Peregrine

+0

O zaman anlaman için zaman ayırmanı öneririm. Sana neden diye bir açıklama yaptım. – WestLangley

+0

Tamamen gereksiz yere snarky yorumlarda, hayır, sen yapmadım. Bana bir çözüm verdiniz - ki bunu takdir ediyorum - ama tanımlanamayan bir fonksiyonun neden BURADA önceden tanımlanmış bir fonksiyonun neden Three.js içinde tanımlanamayacağına dair açık bir açıklama görmüyorum, ya da bana neden bu kadar açık olduğu belli değil Fonksiyondaki parametreler tanımsız olmasına neden olur. Ama açık olmak gerekirse, ben de açıklamadım, bunu bana açıklamamı rica ediyorum. Biliyorum ki bu nokta değil. – Peregrine

İlgili konular