给Obsidian&Excalidraw增加支持GIF功能(非iframe)自动&逐帧播放
背景
Excalidraw中只支持静态图片,如果要显示gif动画的话,一种方式是通过iframe。但是iframe只能在其他类型的元素之上;而且gif动画的播放不好控制(有的算法演示gif一步步演示)。
因此增加在元素上播放gif动画功能,这样可以解决层次问题、手动控制逐帧播放问题
效果
1. 自动播放。与iframe不一样的是,这里元素层次可以自由调整,比如下面矩形遮盖gif

2. 手动控制逐帧播放(这里采用的'<'和'>'按键显示前一帧或后一帧)

实现
这里我选择的是在drawElementFromCanvasHook中绘制gif到元素的canvas。需要先解析gif为frames,然后根据当前帧编号来显示帧。