为什么要把drawGirl放在loop中?

来源:2-3 绘制女孩图片

x兔子

2015-03-27 15:30

背景图只要画一次就好了呀。。。

写回答 关注

2回答

  • missdaisy
    2015-03-30 10:30:15
    已采纳

    是这样的,画面上我们看到的所有内容都是画在canvas上的,为了产生星星的动画效果,我们需要把前一帧画的星星从canvas上擦除,再画上下一帧。由于我们只使用了一个canvas,所以在擦除星星的同时,也把背景颜色和girl图片同时擦除掉了,所以drawGirl需要放在loop中不断重新画。

    当然你也可以把背景和drawGirl放在另一个canvas中,并且这2个canvas正好以正确的顺序叠在一起,这样背景颜色和girl图片只需要画一次就好了。

    但我们做的这个小实践对渲染的压力不是很大,所以在一个canvas中画就可以了。

    不过你会提出疑问是很值得鼓励的。

  • qq_Dieyin黄印_03783059
    2016-09-06 10:46:39

    为什么绘制图片和背景也必须放在gameLoop里面呢?我移到init()里面执行就出错。

    function gameLoop() {
    	window.requestAnimFrame(gameLoop);   
    	var now = Date.now();
    	deltaTime = now - lastTime;   
    	lastTime = now;
    
    	fillCanvas();  // ?
    	drawGirl();  // ?
    
    	drawStars();
    
    	aliveUpdate();
    }


    x兔子

    弄一个专门放背景的canvas ,当前canvas只用来画动效的部分

    2016-09-19 19:38:28

    共 1 条回复 >

canvas实现星星闪烁特效

使用HTML5实现轮播图片上的序列帧,进行拆分讲解,逐步实现目标

54188 学习 · 121 问题

查看课程

相似问题