javascript - 如何优化这个canvas效果?
天蓬老师
天蓬老师 2017-04-10 16:06:49
[JavaScript讨论组]

http://www.alok2333.com/gadgets/canvas/countdown/

这是个倒计时效果,都是用canvas画的。
动画的效果是用setInterval()实现的。

然后我发现打开这个页面后,我转到其它页面,过一段时间再转回来
就会出现很多很多的小球,然后浏览器就要崩溃了。
原代码对小球有一个优化是,当小球弹离开页面时,就把这个小球的数据删去。
之所以会崩溃,
原因我猜想是不打开页面的时候,小球是不会自动运动的,导致越来越多的小球产生。

这个有办法优化吗?该如何优化呢?
求指教求指点!
源码:https://github.com/Aloklok/gadgets/tree/master/canvas/countdown

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
高洛峰

setInterval会在当前页面非active情况下依旧进行,也就是在切换其他页面或者最小化的时候仍然在后面跑,所以你过段时间切换回来看会发现上面积累了很多东西。

如果从这个方面考虑的话,可以换requestAnimationFrame方式去替换setInterval

ringa_lee

试试离屏的canvas(缓存),建立两个canvas标签,大小一致,一个正常显示,一个隐藏(缓存用的,不插入dom中),先将结果draw缓存用的canvas上下文中,因为游离canvas不会造成ui的渲染,所以它不会展现出来,再把缓存的内容整个裁剪再draw到正常显示用的canvas上,这样能优化不少。

黄舟

这个效果在www.imooc.com有很详细的视频讲解,建议你自己去看看。关于canvas的视频不多

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号