简单的样式:

body{
margin: 0;
padding: 0;
}
#canvas{
display: block;
position: relative;
margin: auto;
}

创建绘图标签:

<canvas id="canvas">
您的浏览器不支持,请用升级浏览器或下载chrome浏览器体验
</canvas> 具体实现:
var ball={
x:200,
y:200,
r:150,
vx:7+Math.random()*5,
vy:3+Math.random()*5
};
var B = true;
window.onload= function () {
var canvas=document.getElementById("canvas");
var context=canvas.getContext('2d');
canvas.width=window.innerWidth;
canvas.height=window.innerHeight;
if (context){//判断是否支持canvas
setInterval(function () {
Draw (context,canvas.width,canvas.height);
ballMove(canvas.width,canvas.height);
},50); canvas.addEventListener("click", function () {
var x = event.clientX - canvas.getBoundingClientRect().left;
var y = event.clientY - canvas.getBoundingClientRect().top;
var click_this=context.isPointInPath(x,y);
if ( click_this ){
B = false;
}else {
B = true;
}
});
}else {
alert("您的浏览器不支持,请用升级浏览器或下载chrome浏览器体验");
}
};
function ballMove(canvasW,canvasH){
if ( B ){
ball.x += ball.vx;
ball.y += ball.vy;
}
if( ball.y >= canvasH-ball.r || ball.y <= ball.r ){
ball.vy = - ball.vy;
}
if( ball.x >= canvasW-ball.r || ball.x <= ball.r ){
ball.vx = -ball.vx;
}
return ball
} function Draw (context,W,H){
console.log("还在进行");
context.clearRect(0,0,W, H);
context.save(); context.beginPath();
context.fillStyle = "black";
context.fillRect(0,0,W, H);
context.closePath(); context.beginPath();
context.arc(ball.x,ball.y,ball.r,0,Math.PI*2);
context.fillStyle = "#fff";
context.fill();
context.clip(); var imgs=new Image();
imgs.src="../imgs/c1.jpg";
context.fillStyle = context.createPattern(imgs,"repeat");
context.fill(); context.restore();
}

canvas实现“探照灯”共能的更多相关文章

  1. leaflet如何加载10万数据

    作为一名GIS开发者,你工作中一定遇到过这种问题,根据业务设计,需要在地图上添加1万+条数据,数据或是点.或是线.或是面.但不管哪种,当你添加到5000条时,地图操作就会出现明显的卡顿.当你添加超过1 ...

  2. canvas探照灯效果

    canvas中的clip()方法用于从原始画布中剪切任意形状和尺寸.一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域) 也可以在使用clip()方法前通过使用s ...

  3. 赠书:HTML5 Canvas 2d 编程必读的两本经典

    赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...

  4. Canvas绘制图形

    1.Canvas绘制一个蓝色的矩形 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  5. ECharts-基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表

    ECharts http://ecomfe.github.com/echarts 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算 ...

  6. HTML5 画布canvas元素

    HTML5的canvas元素以及随其而来的编程接口Canvas API应用前景极为广泛.简单地说,canvas元素能够在网页中创建一块矩形区域,这块矩形区域可以成为画布,这其中可以绘制各种图形.可别小 ...

  7. canvas之2D上下文

    1.填充和描边 (1)fillStyle (2)strokeStyle 2.绘制矩形 (1)fillRect() (2)strokeRect() (3)clearRect()   :清除画布上的矩形区 ...

  8. 提高HTML5 canvas性能的几种方法

    简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为了web中受到广泛支持的2D快速模式绘图(2Dimmediate mode graphic)的标准.许多开发者现在利 ...

  9. 转载爱哥自定义View系列--Canvas详解

    上面所罗列出来的各种drawXXX方法就是Canvas中定义好的能画什么的方法(drawPaint除外),除了各种基本型比如矩形圆形椭圆直曲线外Canvas也能直接让我们绘制各种图片以及颜色等等,但是 ...

随机推荐

  1. OpenStack Swift client开发

    如果你搭建好了Swift环境 ,你应该可以通过Swift 命令 来尝试去测试上传下载等功能,这是因为在安装Swift的时候,通常会安装一个python-swiftclient客户端,这个一个pytho ...

  2. Leetcode OJ : Merge k Sorted Lists 归并排序+最小堆 mergesort heap C++ solution

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  3. 2015北京网络赛B题 Mission Impossible 6

    借用大牛的一张图片:模拟 #include<cstdio> #include<cmath> #include<cstring> #include<algori ...

  4. 4.4 CUDA prefix sum一步一步优化

    1. Prefix Sum 前缀求和由一个二元操作符和一个输入向量组成,虽然名字叫求和,但操作符不一定是加法.先解释一下,以加法为例: 第一行是输入,第二行是对应的输出.可以看到,Output[1] ...

  5. 跨平台的游戏客户端Socket封装,调整

    原文链接:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019359.html 头文件: #pragma once #ifdef WIN32 ...

  6. (二)list或set的遍历

    <@e.table class="tablelist questionlist" listAction="devide_check_list_batch.do&qu ...

  7. html中的body标签

    <head>标签代表的是页面的"头部",而<body>标签代表的就是页面的"身体"了.如果说<html>标签定义了网页的开始 ...

  8. Learn_Dynamic

    首先看一下Dynamic的定义 Visual C# 2010 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像具 ...

  9. WordPress Import 上传的文件尺寸超过php.ini中定义的upload_max_filesize值--&gt;解决方法。

    參考一: WordPress Importer上传导入备份文件时遇到这样一个错误,提示"上传的文件尺寸超过 php.ini 中定义的 upload_max_filesize 值". ...

  10. USB移动硬盘WinPE启动盘的制作方法

    USB移动硬盘WinPE启动盘的制作方法 软件:老九WinPE 老毛桃终于撒手无论版 发行时间:2007年9月11日 制作发行:老毛桃 作用:当系统坏了,无法进入时,用来做系统维护,备份文件.轻巧稳定 ...