艾奥宝贝
2017-03-09 16:28
enterFrame(success, time)中的time值具体是多少,也没有设置,怎么知道它的值,然后ratio的值也不知道啊
time 就是这帧动画开始到现在所经时间
ratio 当前时间除以间隔,也就是执行了第几个
具体这个time他在什么地方呢?
它是在timeline里面是这个方法
Timeline.prototype.onenterframe = function (time) { };
这个方法只是一个接口,主要就是传递time这一个值
那么楼主所问的图中哪个地方调用了上面这个方法呢?
我把图中的run方法贴出来
function run() { var interval = 50; var speed = 6; var initLeft = 100; var finalLeft = 400; var frame = 4; var frameLength = 6; var right = true; var runAnimation = animation().loadImage(images).enterFrame(function (success, time) { var ratio = (time) / interval; var position; var left; if (right) { position = rightRunningMap[frame].split(' '); left = Math.min(initLeft + speed * ratio, finalLeft); if (left === finalLeft) { right = false; frame = 4; success(); return; } } else { position = leftRunningMap[frame].split(' '); left = Math.max(finalLeft - speed * ratio, initLeft); if (left === initLeft) { right = true; frame = 4; success(); return; } } if (++frame === frameLength) { frame = 0; } $rabbit2.style.backgroundImage = 'url(' + images[0] + ')'; $rabbit2.style.backgroundPosition = position[0] + 'px ' + position[1] + 'px'; $rabbit2.style.left = left + 'px'; }).repeat(1).wait(1000).changePosition($rabbit2, rabbitWinMap, images[2]).then(function () { console.log('finish'); }); runAnimation.start(interval); }
方法的最后一行 runAnimation.start(interval);
这里调用了timeline里面的start方法
start方法里面调用了startTimeline这个方法(源码自己找)
startTimeline里面就有调用了onenterframe 这个方法
这样一步步找下来,就知道这个time是什么了
如果楼主还是不死心的说想知道time的具体值
可以先把程序写完,弄到Google浏览器上运行,按F12进入开发者模式,一帧一帧的跑,这个time的值就会一帧一帧的变,这就是time的具体值(滑稽)
原生 JS 实现帧动画库
47183 学习 · 92 问题
相似问题