[]物体随着鼠标滑动旋转脚本

function ObjectRotate() {
    
    ObjectRotate.super(this);//这里不太清楚作用
 
    //最终鼠标在X轴上的值
    this.lastMouseX = NaN;    
 
    //最终鼠标在Y轴上的值             
    this.lastMouseY = NaN;              
    this.yawPitchRoll = new Laya.Vector3(); //
 
    //实例化一个四元素
    this.tempRotationZ = new Laya.Quaternion(); 
    
     //鼠标是否按下默认为没有按下
    this.isMouseDown = false; 
 
     //旋转速度
    this.rotaionSpeed = 0.00006; 
    this.mainCameraAnimation = null;
    this.scene = null;
}

Laya.class(ObjectRotate, "ObjectRotate", Laya.Script);  //这是什么意思有什么作用

ObjectRotate.prototype._initialize = function (owner) {
    var _this = this;
    ObjectRotate.__super.prototype._initialize.call(this,owner);
 
    //在this(调取本函数的的对象)作用域内,侦听mousedown(鼠标按下)事件,如果侦听到就执行方法this.mousedown
    Laya.stage.on("mousedown", this, this.mouseDown); 
    Laya.stage.on("mouseup", this, this.mouseUp);
    Laya.stage.on("mouseout", this, this.mouseOut);
    _this.Obj = owner;
}
//
ObjectRotate.prototype._update = function (state) {
    ObjectRotate.__super.prototype._update.call(this,state);
    this.updateObject(state.elapsedTime);
}
//Object实时旋转
ObjectRotate.prototype.updateObject = function (elapsedTime) {
    if (!isNaN(this.lastMouseX) && !isNaN(this.lastMouseY)) {
        if (this.isMouseDown) {
            var offsetX = Laya.stage.mouseX - this.lastMouseX;
            var offsetY = Laya.stage.mouseY - this.lastMouseY;
            var yprElem = this.yawPitchRoll.elements;
            yprElem[0] += offsetX * this.rotaionSpeed * elapsedTime; //控制对象在X轴上的旋转
            yprElem[1] -= offsetY * this.rotaionSpeed * elapsedTime; //控制对象在Y轴上的旋转
            this.updateRotation();
        }
    }
    this.lastMouseX = Laya.stage.mouseX;
    this.lastMouseY = Laya.stage.mouseY;
}
//更新Object旋转
ObjectRotate.prototype.updateRotation = function () {
    var yprElem = this.yawPitchRoll.elements;
    if (Math.abs(yprElem[1]) < 1.50) {
        Laya.Quaternion.createFromYawPitchRoll(yprElem[0], yprElem[1], yprElem[2], this.tempRotationZ);
        this.Obj.transform.localRotation = this.tempRotationZ;
    }
}
//鼠标按下Object随着鼠标滑动得出相应的坐标值
ObjectRotate.prototype.mouseDown = function (e) {
    this.Obj.transform.localRotation.getYawPitchRoll(this.yawPitchRoll);   
    this.lastMouseX = Laya.stage.mouseX; //获取鼠标的X值
    this.lastMouseY = Laya.stage.mouseY; //获取鼠标的Y值
    this.isMouseDown = true;
}

ObjectRotate.prototype.mouseUp = function (e) {
    this.isMouseDown = false;
}
ObjectRotate.prototype.mouseOut = function (e) {
    this.isMouseDown = false;
}
 
==========================================================================================================================
 
上面加粗的代码 没理解透有谁 知道的就说说吧
已邀请:

HummerMan

赞同来自:

貌似是Laya的js继承写法,这个方法在哪里的呀,我正在找这个功能呢?

mayzhengxi

赞同来自:

额 没搞懂你说的啥

要回复问题请先

商务合作
商务合作