Bird.js:
var Bird = function () {
//保存当前的this
var scope = this;
//继承THREE.Geometry
THREE.Geometry.call( this );
v( 5, 0, 0 );
v( - 5, - 2, 1 );
v( - 5, 0, 0 );
v( - 5, - 2, - 1 );
v( 0, 2, - 6 );
v( 0, 2, 6 );
v( 2, 0, 0 );
v( - 3, 0, 0 );
f3( 0, 2, 1 );
f3( 0, 3, 2 );
f3( 4, 7, 6 );
f3( 5, 6, 7 );
//计算法向量
this.computeFaceNormals();
var test=new THREE.BoxGeometry();
function v( x, y, z ) {
scope.vertices.push( new THREE.Vector3( x, y, z ) );
}
function f3( a, b, c ) {
scope.faces.push( new THREE.Face3( a, b, c ) );
}
}
//将THREE.Geometry的方法赋给Bird
Bird.prototype = Object.create( THREE.Geometry.prototype );
//实现了Bird类对自身原型继承。
//案例:Bird.prototype = new Animal(); Bird.prototype.constructor = Bird;”
// Bird.prototype = new Animal();”意思是Bird.prototype原型作为Animal类的实例
// 那么Bird原型对象中包含了一个指向Animal原型对象的指针;“Bird.prototype.constructor = Bird;”
// 意思是因为“Bird.prototype = new Animal();”时,Bird.prototype.constructor指向了Animal原型对象,将其纠正重新指向Bird。
// 代码运行后你会发现pig.fly()会报错,此fly()行为undefined,那是因为Animal原型中没有fly行为。到此我们就实现了Bird类对Animal类的原型继承。-此案例来源于网络
Bird.prototype.constructor = Bird;
未写完。。。