【发布时间】:2012-09-20 12:20:09
【问题描述】:
很抱歉问了一个很简单的菜鸟问题。
我有一个视图,它在 Three.js 渲染器中创建几何图形 - 该视图第一次成功渲染。但是,对渲染函数的后续调用会因未知引用错误而失败。
我试图在视图而不是模型中存储对渲染几何的引用,因为模型在多个浏览器(实际上是服务器)之间共享 - 使用 Backboneio.js
视图如下所示:
StarSystem.hudContact = BackboneIO.View.extend({
el: '',
model: '',
initialize: function(options) {
var material = new THREE.LineBasicMaterial({
color: 0xFFFFFF,
});
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.vertices.push(new THREE.Vector3(0, 0, ((camera[0].position.z - this.model.get('zPos')) / 10000)));
var line = new THREE.Line(geometry, material);
line.position.x = ((camera[0].position.x - this.model.get('xPos')) / 10000);
line.position.y = ((camera[0].position.y - this.model.get('yPos')) / 10000);
line.position.z = 0;
line.Name = this.model.get('Name');
this._hudLine = hudScene.add(line);
this.model.bind('update', this.render, this);
},
render: function(){
console.log(this._sceneLine.position.x);
this._hudLine.position.x = ((camera[0].position.x - this.model.get('xPos')) / 10000);
this._hudLine.position.y = ((camera[0].position.y - this.model.get('yPos')) / 10000);
this._hudLine.position.z = 0;
}
});
因此,可以看出,我试图在 this._hudLine 中存储对行(行)的引用 - 这在第一次渲染时(在初始化调用期间)是已知的,但在此后(在渲染调用中) )。
任何关于如何处理此问题而不必依赖全局数组或在模型中存储信息的指导将不胜感激......
谢谢!
【问题讨论】:
-
这很奇怪。一旦在
initialize()中定义了this._hudline,它就应该是实例的一个属性,并且即使在第一次render()调用之后,在该hudContact对象的生命周期内仍然存在。是否有可能其他地方的其他代码正在篡改该数据并可能破坏它? -
嘿,谢谢你 - 它至少证实我一开始就在正确的树上吠叫!
标签: binding view backbone.js three.js