0

おそらく非常に単純な初心者の質問であることを尋ねて申し訳ありません。

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 に格納しようとしています。これは最初のレンダリング (初期化呼び出し中) で認識されますが、その後 (レンダリング呼び出しでは認識されません)。

グローバル配列に依存したり、モデル内に情報を保存したりすることなく、これを処理する方法についての指示は大歓迎です...

ありがとう!

4

3 に答える 3

0

この問題は、以下を参照して修正されました。

バックボーンビューへのプライベート変数とパブリック変数

助けてくれてありがとう!

于 2012-09-21T19:05:32.793 に答える
0

私は実際にBackboneIOが何であるかを知りませんが、バックボーンでは、レンダリング機能をバインドし_.bindAll(this,"render")て、何かを機能させる必要がありますthis.model.bind('update',this.render)

于 2012-09-20T22:11:50.443 に答える
0

以下の記事を参考に解決しました。

バックボーン ビューへのプライベート変数とパブリック変数

ただし、根本的な問題は、ビューを自己実行関数でラップした元のテンプレートにあったと思います。

(function () {
  //view stuff
}).call(this);

それよりも:

(function () {
  //view stuff
})();

初歩的な問題 - 助けてくれてありがとう!

于 2012-09-22T11:38:20.043 に答える