// 欧拉角
function Euler( x,y,z,order ) {
// 自定义 x,y,z,order,并且设定默认值
this._x= x ||0;
this._y= y ||0;
this._z= z ||0;
this._order= order || Euler.DefaultOrder; // 默认值可以修改
}
Euler.RotationOrders= ['XYZ','YZX','ZXY','XZY','YXZ','ZYX'];
Euler.DefaultOrder='XYZ';
Object.defineProperties(Euler.prototype,{
// 通过 ‘’属性描述对象 “的存储器,其中存值函数,称为setter,使用属性描述对象的set属性,取值函数用getter,使用属性描述对象get属性,一旦对目标属性定义了存取器,那么存取的时候,都将执行对应的函数。利用这个功能,可以实现许多高级特性,参考 http://javascript.ruanyifeng.com/stdlib/attributes.html#toc3 // 这里就是利用该特性,使得我们设置属性值时,同时执行自定义的 this.onChangeCallback 事件
x: {
get:function() {
return this._x;
},
set:function( value ) {
this._x= value;
this.onChangeCallback();
}
},
y: {
get:function() {
return this._y;
},
set:function( value ) {
this._y= value;
this.onChangeCallback();
}
},
z: {
get:function() {
return this._z;
},
set:function( value ) {
this._z= value;
this.onChangeCallback();
}
},
order: {
get:function() {
return this._order;
},
set:function( value ) {
this._order= value;
this.onChangeCallback();
}
}