做了一个无限画布涂鸦软件的 demo,挺有意思

2021-04-23 21:39:30 +08:00
 yingzir
只做了基本画,擦除,滴管,简单的颜色管理功能,这种软件不知道有没有人需要?

<amp-youtube data-videoid="9PAmIbwrFlg" layout="responsive" width="480" height="270"></amp-youtube>
3857 次点击
所在节点    分享创造
36 条回复
itabas016
2021-04-29 10:18:12 +08:00
@superliwei #17 移动端不支持啊
superliwei
2021-04-29 10:50:16 +08:00
@itabas016 是的,后续会适配.
xiyuesaves
2021-04-29 11:09:43 +08:00
@yingzir 也是拿 canvas 实现的一个 demo,正好想实践一下这方面的知识,就用了楼主的创意,希望不要介意
yingzir
2021-04-29 13:12:21 +08:00
@xiyuesaves 很好啊,canvas2d 做就是性能有些更不上,我画多点就卡,好像没有很好的办法
xiyuesaves
2021-04-29 13:46:42 +08:00
@yingzir 可以看一下我做的, 确实点一多就会出现卡顿, 这个优化我还在做,可以在控制台输入 highPerformanceDrag = true 来切换到高性能拖动,就是预览效果不太好

https://canvas.furryworld.top
superliwei
2021-04-29 15:50:42 +08:00
@xiyuesaves 可以通过缓存、裁剪、延迟渲染等方式来优化性能
xiyuesaves
2021-04-29 17:03:06 +08:00
@superliwei 谢谢建议, 现在正在研究怎么多人联机
yingzir
2021-04-29 19:39:27 +08:00
@xiyuesaves 哇你动作真快啊,域名都搞好了,不错,看好你的项目了,笔触有点大,小点就好了,搞个保存。基本就可以用起来了
xiyuesaves
2021-04-29 20:12:36 +08:00
@yingzir 域名是早就买了的,分个二级,nginx 配置下就好了,笔触大小的话,改下配置文件就行,保存功能大概得花点时间,现在主要是在写多人联机部分
xiyuesaves
2021-05-06 17:24:08 +08:00
@yingzir 基本上功能已经完成了,可以看一下 x

https://canvas.furryworld.top/

邀请码目前默认: xiyue

github(代码特别特别特别菜,轻喷): https://github.com/xiyuesaves/infiniteCanvas
yingzir
2021-05-07 10:44:21 +08:00
@xiyuesaves Good! 刚试了一下,挺不错了,就是画完 zoom 的时候卡顿,我怀疑浏览器做这个可能比较难优化。
xiyuesaves
2021-05-07 12:31:54 +08:00
@yingzir 卡顿的主要原因是每个浏览器针对 mousemove 这个监听返回的频率不同导致的,比如 chrome,正常情况下这个绘制量是不可能导致卡顿的,但是打开控制台之后 mousemove 触发频率会提高很多,导致每一笔要处理的数据量很大,主要体现就是线条会变得歪歪扭扭的,正常情况下应该是很顺滑的曲线,这个暂时还没想要要怎么处理
yingzir
2021-05-07 14:28:30 +08:00
@xiyuesaves 不是画的时候卡,是缩放,和移动时候,画的时候觉得不卡。
xiyuesaves
2021-05-07 14:30:53 +08:00
@yingzir 画确实不会卡啊,因为根本不会重绘画面,只会向上叠加,只有在缩放,拖动时会重绘所有路径
M3oM3oBug
2021-05-10 09:30:03 +08:00
@xiyuesaves 不同浏览器对 mousemove 的监听,在打开控制台触发频率会高的问题,我之前做过尝试,第一是因为鼠标刷新率的问题,比如 125Hz/500Hz/1000Hz,触发高是浏览器完全接受了鼠标的反馈,第二是因为浏览器调试问题,至少 Chrome 在调试的时候会主动限制在低频,在开关控制台后限制消失。。

解决办法是主动给监听函数设置一个依靠时间或 setTimeout 实现的节流,或者使用 requestAnimationFrame 实现每帧节流,可以试下
xiyuesaves
2021-05-10 12:31:05 +08:00
@M3oM3oBug requestAnimationFrame 也会根据用户显示设备帧数改变,最好还是用 setTimeout 来节流比较稳定吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/772830

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX