2016-07-04 2 views
0

gibt es ein bekanntes Problem mit einem Object3D ??? Sehen Sie den folgenden CodeTHREE.Object3D.add: Objekt keine Instanz von THREE.Object3D. Auf den erforderlichen Modulen

das funktioniert

... 
// THREE is imported globally somewhere else 

var material = new THREE.MeshBasicMaterial({color: 0xff0000, wireframe: true}); 
var mesh = new THREE.Mesh(new THREE.BoxGeometry(200, 200, 200), material); 

console.dir(mesh) // -> THREE.Mesh 

scene.add(mesh); 

... 

dies nicht funktioniert

Character.ts

export class Character { 

    create() { 

     var material = new THREE.MeshBasicMaterial({color: 0xff0000, wireframe: true}); 
     return new THREE.Mesh(new THREE.BoxGeometry(200, 200, 200), material); 

    } 

} 

app.ts

import {Character} from "./Character.js; 

var mesh = (new Character).create(); 

console.dir(mesh) // -> THREE.Mesh 

scene.add(mesh); 

Fehler

app.js: 8861 THREE.Object3D.add: Objekt keine Instanz von THREE.Object3D.

im browserify

Three.js Version R78

mit
+0

wir nicht sehen können, so man fragen müssen: Sie können etwas, ohne Three.js Abhängigkeit von 'Character.js' importieren? Als nächstes können Sie in 'Character.js' eine andere Klasse erstellen, die von der Klasse' Character' abhängt und die Sie erfolgreich anderswo importieren können? – gallygator

+0

@gallygator Ich habe gerade ein Fragment, drei js wurde global auf dem Skript hinzugefügt .. so ist es überall verfügbar. Die Sache ist, wenn du dir den Kommentar in der app.ts genauer ansiehst. "Ich bin dabei, die Klasse' (new Character) .create() 'zu vervollkommnen und es ist in der Konsole, es zeigt, dass es eine DREI.Mesh ist. Aber das Hinzufügen des gleichen Objekts zur Szene .. Pop-up diese Fehlermeldung .. –

+0

Scheint mir, Sie haben ein paar Sol'n Herausforderungen: 1) Code kann nicht leicht durch Tricks oder Fehler von anderen neu erstellt, 2) das Problem kann sein Mit browserify, three.js, 3) kann das Problem mit three.js, typescript auftreten.Ich kann nur empfehlen, zurück zu einigen minimalen Fällen zu vereinfachen, um es zum Laufen zu bringen und zu bestätigen, welche Komponente zu einem Fehler führt Fehler mit einigen Demo-Repo .. – gallygator

Antwort

0

ich das lief in nur - mein Problem war, dass ich three.js zweimal in meinem Projekt einschließlich wurde. Ich habe es selbst hinzugefügt, und ich benutzte auch eine Bibliothek, die three.js enthielt. Dies führt zu einigen Fehlern, da Objektkonstruktoren überschrieben werden, und ich denke, das hat meinen Fehler verursacht. Betrachten Sie das folgende Beispiel (diesen Code geklaut von here):

window.MyObject = function() {}; 
var v1 = new window.MyObject(); 
console.log('first object instanceof:', v1 instanceof window.MyObject); // true 

window.MyObject = function() {}; 
var v2 = new window.MyObject(); 
console.log('second object instanceof:', v2 instanceof window.MyObject); // true 
console.log('first object instanceof:', v1 instanceof window.MyObject); // false! 
+0

danke Mann .. aber am Ende fand ich, was ich falsch gemacht habe .... es war aufgrund des Codes async ... und die Konsole hat mich ausgetrickst ... wenn ich console.log es Loggt das Objekt auf den aktuellen Zustand ... wenn einige Zeilen weiter unten das Objekt ändert .. das erste Konsolenlog wird sich auch ändern .... so fühlte ich .. wie die Linie 1 c onsole .log this ... und die Datei 500 console log protokolliert auch das gleiche Objekt .... dann habe ich es herausgefunden ... es war die console.log, die mich betrügt ... –

Verwandte Themen