Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有方法将Div属性指针而不是其值发送到对象_Javascript_Object_Animation - Fatal编程技术网

Javascript 是否有方法将Div属性指针而不是其值发送到对象

Javascript 是否有方法将Div属性指针而不是其值发送到对象,javascript,object,animation,Javascript,Object,Animation,为了创建animationque,我创建了一个对象,该对象包含所需的细节以及阵列中的所有动画点 module.exports = function calcAnims(start,div,dimension,dimStart,dimStop,duration,FPS){ this.div = div; this.start = start; this.dimension = dimension; this.FPS = FPS; this.tweenArr = []; if(dimStart &g

为了创建animationque,我创建了一个对象,该对象包含所需的细节以及阵列中的所有动画点

module.exports = function calcAnims(start,div,dimension,dimStart,dimStop,duration,FPS){
this.div = div;
this.start = start;
this.dimension = dimension;
this.FPS = FPS;
this.tweenArr = [];
if(dimStart > dimStop){
    var dimDiff = dimStart - dimStop;
    var totalFrames = duration/FPS;
    var incPF =  dimDiff / totalFrames;
    for(var i=0; i<totalFrames;i++){
        this.tweenArr.push(((totalFrames - i)*incPF)+dimStop);
    }
}
if(dimStart < dimStop){
    var dimDiff = dimStop - dimStart;
    var totalFrames = duration/FPS;
    var incPF =  dimDiff / totalFrames;
    for(var i=0; i<totalFrames;i++){
        this.tweenArr.push((i)*incPF+dimStart);
    }
}
}
然后我在animationloop中迭代这个数组

if(animationQue[i].start<progress){
    if(this.dimension == "width"){
        animationQue[i].div.style.width = animationQue[i].tweenArr[0] + "px";
        animationQue[i].tweenArr.shift();
        animationQue[i].start = animationQue[i].start + animationQue[i].FPS;
    }
}
是否有任何方法可以将类似div.style.width的内容传递给此对象,以便在其动画时间结束时用作参考?
这比必须编写一个if-then语句来检查字符串是否在animationloop中的宽度要经济得多

谢谢你回答我自己的问题!:理想情况下,维度将进入它们自己的模块,但我稍后将对此进行研究

我在顶部发布的对象现在看起来像这样

module.exports = function calcAnims(start,div,dimension,dimStart,dimStop,duration,FPS){
this.div = div;
this.start = start;
this.dimension = dimension;
this.FPS = FPS;
this.tweenArr = [];
if(dimStart > dimStop){
    var dimDiff = dimStart - dimStop;
    var totalFrames = duration/FPS;
    var incPF =  dimDiff / totalFrames;
    for(var i=0; i<totalFrames;i++){
        this.tweenArr.push(((totalFrames - i)*incPF)+dimStop);
    }
}
if(dimStart < dimStop){
    var dimDiff = dimStop - dimStart;
    var totalFrames = duration/FPS;
    var incPF =  dimDiff / totalFrames;
    for(var i=0; i<totalFrames;i++){
        this.tweenArr.push((i)*incPF+dimStart);
    }
}

switch(dimension){
    case "width":
        this.callBackAnim = function(div, value){
            div.style.width = value + "px";
        }
    break;
    case "height":
        this.callBackAnim = function(div, value){
            div.style.height = value + "px";
        }
    break;
    case "left":
        this.callBackAnim = function(div, value){
            div.style.left = value + "px";
        }
    break;
    case "top":
        this.callBackAnim = function(div, value){
            div.style.top = value + "px";
        }
    break;
    case "inner":
        this.callBackAnim = function(div, value){
            div.innerHTML = value;
        }
    break;      
    default:
        alert("no valid animation passed on");

}
}
因此,根据首次创建对象时传递给对象的维度字符串,callBackAnim变量将附加一个不同的函数。 物体的装箱方式仍然完全相同。但是当动画被执行时,callBackAnim被执行。我不确定,但是我不认为这是一个回调函数。 这就是我的动画循环

  for(var i=0;i<animationQue.length;i++){
    if(animationQue[i].start<progress){
    animationQue[i].callBackAnim(animationQue[i].div, animationQue[i].tweenArr[0]);
    animationQue[i].tweenArr.shift();
    animationQue[i].start = animationQue[i].start + animationQue[i].FPS;
    }
  }

我能想到的唯一方法是像evaldiv.style.width=235+px这样的东西。我想通过创建一个函数来调整div的宽度,然后将该函数传递给对象,可以更好地实现这一点。我猜这可能是需要做的,只是我不知道如何将函数传递给对象。当我下班回来时,我将对此进行研究。类似这样的东西。setDivAtt=函数setDivWidthdiv,value{div.style.width=value+px;}
  for(var i=0;i<animationQue.length;i++){
    if(animationQue[i].start<progress){
    animationQue[i].callBackAnim(animationQue[i].div, animationQue[i].tweenArr[0]);
    animationQue[i].tweenArr.shift();
    animationQue[i].start = animationQue[i].start + animationQue[i].FPS;
    }
  }