html5换场效果图,场景转场动画的Canvas实现

废话不说,先上图

e3388fd702523d5ecec570168b5f02c1.png

图1:转场前

936d99209f97e68472d26d820335e81d.png

图2:转场中(动画效果此处请看末尾链接)

20151004235352_1212.png

图3:转场后

看完效果,我们来讲讲原理。

首先我们需要准备一张转场用的图。理论上所有图片都可以作为过渡图使用。

我使用的是一张带有天使翅膀图案的图片作为过渡图。

首先,将过渡图黑白化。

var pixs = context.getImageData(0, 0, context.Canvas.width, context.Canvas.height);

var data = pixs.data;

var len = data.length;

while(len -= 4){

var r = (data[len] + data[len + 1] + data[len + 2]) / 3;

data[len] = data[len + 1] = data[len + 2] = r;

}

context.putImageData(pixs, 0, 0);

(以上代码纯手写未测试,请注意)

在进行过渡之前,我们必须往屏幕上绘制一些内容,随便画什么都可以。

然后我们开始准备过渡了。

在过渡之前,我们需要定义一些变量。

// 用于保存旧的场景最后一帧

var oldSceneCanvas = document.createElement("Canvas");

// 用于指示当前最多可用的不透明度值

var currentOffset = 255;

// 将过渡图绘制在后台Canvas上,由于之前我们将它黑白化过,因此这里假定已经在Canvas上

var transitionCanvas = ...;

完成上面的操作后,我们将当前可见画布中的内容绘制在 oldSceneCanvas 上。

然后假装正常的把新内容绘制在可见画布上。

之后我们将 oldSceneCanvas 的每个像素和 currentOffset进行比较,如果alpha通道大于currentOffset,则让其等于 currentOffset的值。

将oldSceneCanvas 最后绘制在可见画布上。

1

2

下一页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值