var canvas = document.getElementById('canvas');
var cxt = canvas.getContext('2d');

cxt.strokeStyle = 'red';

var gravity = 0.98;
var timer;
var index = 0;
var end = 550;
var iStop = false;

var blocks = [
{'left':0,'top':0,'end':0,'speed':0,'startIndex':0},
{'left':50,'top':0,'end':0,'speed':0,'startIndex':10},
{'left':100,'top':0,'end':0,'speed':0,'startIndex':20},
{'left':150,'top':0,'end':0,'speed':0,'startIndex':30},
{'left':200,'top':0,'end':0,'speed':0,'startIndex':40},
{'left':250,'top':0,'end':0,'speed':0,'startIndex':50},
{'left':300,'top':0,'end':0,'speed':0,'startIndex':60},
{'left':350,'top':0,'end':0,'speed':0,'startIndex':70},
{'left':400,'top':0,'end':0,'speed':0,'startIndex':80},
{'left':450,'top':0,'end':0,'speed':0,'startIndex':90},
{'left':500,'top':0,'end':0,'speed':0,'startIndex':100},
{'left':550,'top':0,'end':0,'speed':0,'startIndex':110}
];

function erase() {
cxt.clearRect(0, 0, canvas.width, canvas.height)
}

function draw() {
for(var i=0; i<blocks.length; i++){
if(blocks[i].startIndex <= index){
cxt.fillRect(blocks[i].left, blocks[i].top, 50, 50);
cxt.strokeRect(blocks[i].left, blocks[i].top, 50, 50);
if(blocks[i].top >= end){
blocks[i].top = end;
}else{
blocks[i].top += blocks[i].speed;
blocks[i].speed += gravity;
}
}
}
}

function animate() {
erase();
draw();
index ++;
if(iStop){
cancelRequestAnimationFrame(timer);
}else{
timer = requestAnimationFrame(animate);
}
}

animate();

canvas 实现掉落效果的更多相关文章

  1. 使用Canvas实现动画效果 | DKlogs -- 设计 | 生活

    使用Canvas实现动画效果 | DKlogs -- 设计 | 生活 使用Canvas实现动画效果

  2. canvas实现倒计时效果示例(vue组件内编写)

    前言: 此事例是在vue组件中,使用canvas实现倒计时动画的效果.其实,实现效果的逻辑跟vue没有关系,只要读懂canvas如何实现效果的这部分逻辑就可以了 canvas动画的原理:利用定时器,给 ...

  3. 原生js实现canvas气泡冒泡效果

    说明: 本文章主要分为ES5和ES6两个版本 ES5版本是早期版本,后面用ES6重写优化的,建议使用ES6版本. 1, 原生js实现canvas气泡冒泡效果的插件,api丰富,使用简单2, 只需引入J ...

  4. canvas/CSS仪表盘效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. HTML5 Canvas实现黑客帝国文字掉落效果

    效果: 原理: 用canvas逐行输出文字,然后让背景颜色逐渐加深,再随机中断某些列. 代码: HTML: <canvas id="c"></canvas> ...

  6. canvas弹动效果

    弹动效果,用物体与目标的距离乘上系数再累加至速度上,让物体呈加速度运动,再让速度乘与摩擦力系数,让物体最终停止运动 代码如下所示 var canvas = document.getElementByI ...

  7. 用Canvas制作剪纸效果

    在做剪纸效果之前,先介绍剪纸效果运用到的一些知识: 1.阴影: 在Canvas之中进行绘制时,可以通过修改绘图环境中的如下4个属性值来指定阴影效果: shadowColor:CSS格式的颜色字串.默认 ...

  8. HTML5之Canvas时钟(网页效果--每日一更)

    今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:亲,请点击这里 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由Java ...

  9. 【HTML5】Canvas 实现放大镜效果

    图片放大镜 效果 在线演示    源码 原理 首先选择图片的一块区域,然后将这块区域放大,然后再绘制到原先的图片上,保证两块区域的中心点一致, 如下图所示: 初始化 <canvas id=&qu ...

随机推荐

  1. 【Nodejs】Expressのファイルアップロード(FileUpload)のMulterについて

    https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md Multer 是一个 node.js 中间件,用于处理 mult ...

  2. 如何修改Eclipse的 workspace目录

    Eclipse是一款很强的Java IDE, eclipse ide for eclipse committers 这里的committers 就是投稿者与执行者的意思,也就是说这个eclipse是为 ...

  3. Floyd算法简介

    参考:https://blog.csdn.net/qq_35644234/article/details/60875818 一.Floyd算法的介绍    1.算法的特点:    弗洛伊德算法是解决任 ...

  4. open suse linux 磁盘分区

    在opensuse 中我是这样对磁盘进行配置的 先添加一块磁盘任意大小 reboot 重启 ls /dev/ | grep sd 可以看到有一块sdb 的磁盘没有分区 fdisk /dev/sdb n ...

  5. HDU-1002.大数相加(字符串模拟)

    本题大意:给出两个1000位以内的大数a 和b,让你计算a + b的值. 本题思路:字符串模拟就能过,会Java的大佬应该不会点进来...... 参考代码: #include <cstdio&g ...

  6. python之栈和队列

    1. 栈 1.1 示例 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: .py @time: 20 ...

  7. Ansible Playbook 详解

    一.playbook 的简单使用 1.创建文件实例 (1)编辑配置文件 [root@tiejiangSRC1 ~]# cd /etc/ansible/ [root@tiejiangSRC1 ansib ...

  8. activity背景毛玻璃效果

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  9. stark组件前戏之项目启动前加载指定文件

    1. django项目启动时, 自定制执行某个py文件 dajngo 启动时.会将所有 路由加载到内存中. 我的目的就是在 路由加载之前,执行某个py文件. 每个app中都有一个 apps.py fr ...

  10. 比特币学习-Transaction的locktime属性

    Locktime, also known as nLockTime from the variable name used in the reference client, defines the e ...