canvas简单动画
实现场景:定义一个1000*800的方框,圆球在其中移动,碰撞到边框弹回的动画。方框背景是半径为10的小圆球组成。鼠标移动到移动圆球时,圆球停止运动。
html代码:
<div>
<canvas id="myCanvas"></canvas>
<canvas id="bgCanvas" style="display: none" width="1000" height="800"></canvas>
</div>
js代码:
var canvas = document.getElementById("myCanvas");
var bgCanvas = document.getElementById("bgCanvas");
canvas.width = 1000;
canvas.height = 800;
var ctx = canvas.getContext("2d");
var bgctx = bgCanvas.getContext("2d");
var rectX = 50,
rectY = 50,
dirX = 1,
dirY = 1,
speed = 10;
var isMouseMove = false;
// 判断鼠标移入,小圆球停止运动
canvas.onmousemove = function (e) {
var offsetX = e.offsetX;
var offsetY = e.offsetY;
if (Math.pow(offsetX-rectX, 2) + Math.pow(offsetY-rectY, 2) > Math.pow(50, 2)) {
isMouseMove = false;
} else {
isMouseMove = true;
}
};
// 通过离屏技术,将背景静态场景绘制在离屏上。
var bgCanvasC = function () {
for(var i = 10; i < canvas.width; i+=20){
for( var j = 10; j < canvas.height; j+=20) {
bgctx.beginPath();
bgctx.arc(i, j, 10, 0, 2*Math.PI);
bgctx.stroke();
}
}
};
bgCanvasC();
// 动画部分
setInterval(function () {
if (!isMouseMove) {
rectX += dirX * speed;
rectY += dirY * speed;
ctx.fillStyle="#ffffff";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.strokeRect(0, 0, 1000, 800);
ctx.drawImage(bgCanvas, 0, 0, bgCanvas.width, bgCanvas.height, 0, 0, canvas.width, canvas.height);
ctx.beginPath();
ctx.fillStyle = "#000000";
ctx.arc(rectX, rectY, 50, 0, 2*Math.PI);
ctx.fill();
if (rectX >= canvas.width - 50) {
dirX = -1;
} else if (rectX <= 50) {
dirX = 1;
}
if (rectY >= canvas.height - 50) {
dirY = -1;
} else if (rectY <= 50) {
dirY = 1;
}
}
}, 100)
效果是这样:

canvas简单动画的更多相关文章
- Canvas简单动画和像素处理
动画 利用JavaScript,可以在canvas元素上很容易地产生动画效果. var posX = 20, posY = 100; setInterval(function() { context. ...
- canvas制作简单动画
在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...
- canvas小球动画原理
随着html5发展,canvas标签作为h5革命性的发展标志也越来越流行.canvas标签的强大之处,不仅在于它可以作为一个独立的画布,也可以利用canvas做一些动画而不用导入flash文件.同时, ...
- canvas基础动画示例
canvas基础动画示例 本文主要用最简单的例子,展示canvas动画效果是如何实现的 动画效果,是一个球绕着一点旋转 const canvas = document.getElementById(' ...
- 原生JS封装简单动画效果
原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...
- jquery添加光棒效果的各种方式以及简单动画复杂动画
过滤器.绑定事件.动画 一.基本过滤器 语法 描述 返回值 :first 选取第一个元素 单个元素 :last 选取最后一个元素 单个元素 :not(selector) 选取去除所有与给定选择器匹 ...
- UIView简单动画
UIView动态实现的效果有以下几种: 1.动态改变frame 2.动态改变color 3.动态改变alpha 4.动态改变bounds 首先,我们先看几种BasicView动画 #pragma ma ...
- IOS 简单动画 首尾式动画
首尾式动画 首尾式动画即通过实现控件由初始状态到结束状态的过程.(主要表现在控件的Frame 透明度 ) // // ViewController.m // CX 简单动画 // // Created ...
- jQuery中自定义简单动画的实现
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
随机推荐
- Vue. 之 Element table 单元格内容隐藏
Vue. 之 Element table 单元格内容隐藏 在table显示数据时,若某个单元格的内容过多,需要进行隐层,在这一列的单元格属性添加::show-overflow-tooltip=&quo ...
- 100个常用的原生JavaScript函数
1.原生JavaScript实现字符串长度截取 复制代码代码如下: function cutstr(str, len) { var temp; var icount = 0; var ...
- farv
http://weishu.me/ https://github.com/jimupon/VirtualXposed O: ? api 26 - vdex N: speed-profile M: ...
- Ajax--解析JSON数据与解析XML数据
一.Ajax解析JSON数据 nav.json(json数据) [ { "link":"http://www.jd.com", "src": ...
- ScrollView 实现子视图滑动到顶部时固定不动
这个,个人建议使用自己写的布局使用view的gon或者visble的方法,使用design包中的控件来的话,局限性很大 方法有倆 (1)自定义ScrollView 重写ScrollView 的 com ...
- Poj 1830 高斯消元
开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5418 Accepted: 2022 Description 有N个相 ...
- C位域的初步了解
以为C中的东西了解的差不多了...今天却是第一次才看到位域这个概念, 闲来无事的时候读起了编程之美,看一个问题的时候有种解答用到了位域, 位域的结构体定义,变量声明和结构体很相似: struct (结 ...
- 解决listview点击item失效
开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了 ...
- window10下载安装jieba
下载安装jieba的过程如下: 1 下载jieba 2 将其解压到E:\python2,如图所示: 3 在桌面左下角搜索框中输入"运行",之后输入"cmd".再 ...
- Centos7搭建Django出现的问题(Centos7+Django1.11.1+Nginx+uwsgi)
出现的问题: 1.pip未安装:http://www.cnblogs.com/fnng/p/3737964.html 2.安装uwsgi失败,因为未安装python-devel yum search ...