Javascript 是否有方法将Div属性指针而不是其值发送到对象
为了创建animationque,我创建了一个对象,该对象包含所需的细节以及阵列中的所有动画点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
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;
}
}