enterFrame(success, time)中的time值具体是多少

来源:3-2 demo的完整实现

艾奥宝贝

2017-03-09 16:28

enterFrame(success, time)中的time值具体是多少,也没有设置,怎么知道它的值,然后ratio的值也不知道啊

写回答 关注

1回答

  • 郭小V先森
    2017-03-24 15:07:05

    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 实现帧动画库

了解如何用原生JS实现酷炫的帧动画,吸引他她的注意

47188 学习 · 92 问题

查看课程

相似问题