[js] 精灵图像 与 Dom / CanvasRenderingContext2D 渲染 (下)

372 阅读2分钟

我是超级无敌杀人王!!!!

上一个文我写了用xy坐标(格)渲染到dom或canvas,请看juejin.cn/post/705229…
这篇我会写操作xy坐标
棋盘格镇楼
image.png

需求分析

因为之前已经有xy坐标渲染图像的方法了,现在只需要控制xy坐标的信息然后再次渲染就可以了。实际简单!

首先要明确一下这个动作是什么 比如现在我需要从左到右然后从上到下 从a5出发到b7。是这么走 image.png 如果是从右到左从上到下 就是这样 image.png 但是如果是a5从下到上可以吗?逻辑上可以的,但是如果和下面这个功能一起实现起来很麻烦,不好判断,所以算了,不写了(摆烂了)。

有时会需要跳帧来表示动作加速了。如下图a5到b7(从左到右然后从上到下) image.png 有时候会需要使用一组精灵图的某一部分,如下图a7到c7 image.png 固然你可以用之前那个精灵图渲染类来实现,但不得不说那将是非常愚蠢的。

软件架构 和 代码细节

步进器

我们需要一个规定取值范围的东西还要有让它步进的功能的东西
我是这么做的

image.png

image.png
步进器完整代码请看gitee.com/darth_ef/ba…

xy的控制器

我选择渲染使用一个帧的回调函数指针,函数执行时将传入xy值,
而结束回调我选择用一个队列,以方便链式添加动作组合。
image.png

image.png 下面那个play成员函数看起来挺长,但实际是非常简单的。就是判断一下是否溢出就行了。

demo

拿昨天画得那个图在上面标记一下

image.png 需要循环动画的话就在结束回调中再追加动画就行了
image.png
这里用7是因为坐标要从0开始数,宽度是8的话最大坐标是7 我就不录gif图了;看控制台,坐标是正确的。

image.png

完整代码请看 gitee.com/darth_ef/Pr…
需要cv的,请遵守协议link.juejin.cn/?target=htt…
以上是所有内蓉!

5.2355618.gif
大萌神来卖个萌