canvas 实现掉落效果
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 实现掉落效果的更多相关文章
- 使用Canvas实现动画效果 | DKlogs -- 设计 | 生活
使用Canvas实现动画效果 | DKlogs -- 设计 | 生活 使用Canvas实现动画效果
- canvas实现倒计时效果示例(vue组件内编写)
前言: 此事例是在vue组件中,使用canvas实现倒计时动画的效果.其实,实现效果的逻辑跟vue没有关系,只要读懂canvas如何实现效果的这部分逻辑就可以了 canvas动画的原理:利用定时器,给 ...
- 原生js实现canvas气泡冒泡效果
说明: 本文章主要分为ES5和ES6两个版本 ES5版本是早期版本,后面用ES6重写优化的,建议使用ES6版本. 1, 原生js实现canvas气泡冒泡效果的插件,api丰富,使用简单2, 只需引入J ...
- canvas/CSS仪表盘效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HTML5 Canvas实现黑客帝国文字掉落效果
效果: 原理: 用canvas逐行输出文字,然后让背景颜色逐渐加深,再随机中断某些列. 代码: HTML: <canvas id="c"></canvas> ...
- canvas弹动效果
弹动效果,用物体与目标的距离乘上系数再累加至速度上,让物体呈加速度运动,再让速度乘与摩擦力系数,让物体最终停止运动 代码如下所示 var canvas = document.getElementByI ...
- 用Canvas制作剪纸效果
在做剪纸效果之前,先介绍剪纸效果运用到的一些知识: 1.阴影: 在Canvas之中进行绘制时,可以通过修改绘图环境中的如下4个属性值来指定阴影效果: shadowColor:CSS格式的颜色字串.默认 ...
- HTML5之Canvas时钟(网页效果--每日一更)
今天,带来的是使用HTML5中Canvas标签实现的动态时钟效果. 话不多说,先看效果:亲,请点击这里 众所周知,Canvas标签是HTML5中的灵魂,HTML5 Canvas是屏幕上的一个由Java ...
- 【HTML5】Canvas 实现放大镜效果
图片放大镜 效果 在线演示 源码 原理 首先选择图片的一块区域,然后将这块区域放大,然后再绘制到原先的图片上,保证两块区域的中心点一致, 如下图所示: 初始化 <canvas id=&qu ...
随机推荐
- 能判断是电脑端还是手机端的javascript
<script language="javascript"> //平台.设备和操作系统 var system ={ win : false, mac : false, ...
- stock抓取基本资料
use Goutte\Client; use GuzzleHttp\Client as GuzzleClient; include './vendor/autoload.php'; $client = ...
- java面试题:Spring
Spring 面试时,最好能结合底层代码说出IOC,AOP或Spring MVC的流程,能说出拦截器的底层. 如果看过Spring的源码,并能结合设计模式表达,是很大的加分项. IOC Q:讲一下IO ...
- CSS3 box-shadow实现纸张的曲线投影效果
一般的投影效果,尤其通过CSS实现的投影效果(无论是CSS3,还是IE滤镜),都是直来直往的.纸张是有卷角的,其投影就是曲面的,如何使用CSS模拟出纸张的卷边曲线投影效果. <div class ...
- DRF的视图和路由
DRF的视图 APIView Django中写CBV的时候继承的是View,rest_framework继承的是APIView, urlpatterns = [ url(r'^book$', Book ...
- Django的rest_framework的序列化组件之序列化多表字段的方法
首先,因为我们安装了restframework,所以我们需要在django的settings中引入restframework INSTALLED_APPS = [ 'django.contrib.ad ...
- java调用微信扫一扫
步骤: 1,获取Accesstoken(参考我之前的文章) 2,获取jsapiticket(参考我之前的文章) 3,获取签名 4JSSDK使用步骤 步骤一:绑定域名(JS接口安全域名),.否则会报in ...
- sql语句Order by 报错列名不明确
select top 10 column1,column2,column3 from table1 where table1.id not in(select top 0 table1.id from ...
- day 27 Python中进程的操作
进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...
- linux命令学习之:ps
Linux中的ps命令是Process Status的缩写.ps命令用于报告当前系统的进程状态,列出系统中当前运行的那些进程.可以搭配kill指令随时中断.删除不必要的程序. 要对进程进行监测和控制, ...