2

ThreeJS を使用して、人々がキューブをクリックできるインタラクションを作成しています。ただし、これらのキューブは、クリックしたときの動作が異なります (アイデアをシンプルにするために、異なる色のアニメーションを使用します)。

私のアイデアは、THREE.Mesh オブジェクトの拡張クラスを作成し、カスタム関数と属性を追加することでした。これは、キューブのさまざまな動作を分離し、よりクリーンなコードを提供するのに役立ちます。

John Resigs の関数を使用して classes を拡張しようとしましたが、最終的に彼の「Class」クラスを拡張するクラスに対してのみ機能するようです。

これを行う方法はありますか?

4

1 に答える 1

3

Javascript でクラスベースのシステムを作成するには、いくつかの方法があります。John Resig の「クラス」は素晴らしいものですが、Three.js が使用する継承のタイプではありません。

Cube クラス ファイルの次の行に注意してください。

THREE.Geometry.call( this );

Javascript はクラス継承の組み込みモデルを提供しないため、クラス構築に継承を組み込むライブラリ (John Resig のような) を使用していない限り、スーパー メソッドを明示的に呼び出す必要があります。

クラス内で以下を呼び出すと、クラスは CubeGeometry から継承されます。

THREE.CubeGeometry.call( this );

また、CubeGeometry をプロトタイプに設定することもできます。

THREE.MyCubeGeometry.prototype = new THREE.CubeGeometry();
THREE.MyCubeGeometry.prototype.constructor = THREE.MyCubeGeometry;
于 2012-06-12T15:03:24.163 に答える