1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" style="margin:0 auto;border:1px #ddd solid">
  9. The current browser does not support Canvas, can replace the browser a try!
  10. </canvas>
  11.  
  12. <script>
  13.  
  14. var searchLight = {
  15. x : 400,
  16. y : 400,
  17. radius : 150,
  18. vx : Math.random() * 5 + 10,
  19. vy : Math.random() * 5 + 10
  20. }
  21.  
  22. var isIncrease = true;
  23.  
  24. window.onload = function(){
  25. var canvas = document.getElementById('canvas');
  26.  
  27. canvas.width = 1024;
  28. canvas.height = 768;
  29.  
  30. if(canvas.getContext('2d')){
  31. var context = canvas.getContext('2d');
  32.  
  33. setInterval(function(){
  34. draw(context);
  35. update(canvas.width,canvas.height);
  36. },40);
  37.  
  38. }else{
  39. alert('当前游览器不支持Canvas,请更换游览器后再试!');
  40. }
  41. }
  42.  
  43. function draw(cxt){
  44. var canvas = cxt.canvas;
  45. cxt.clearRect(0,0,canvas.width,canvas.height);
  46.  
  47. cxt.save();
  48.  
  49. cxt.beginPath();
  50. cxt.fillStyle = "#000";
  51. cxt.fillRect(0,0,canvas.width,canvas.height)
  52. cxt.closePath();
  53.  
  54. cxt.save();
  55. cxt.translate(searchLight.x,searchLight.y);
  56. cxt.scale(searchLight.radius,searchLight.radius);
  57. starPath(cxt);
  58. cxt.fillStyle = "#fff";
  59. cxt.fill();
  60. cxt.restore();
  61. cxt.clip();
  62.  
  63. cxt.font = "bold 150px Arial";
  64. cxt.textAlign = "center";
  65. cxt.textBaseline = "middle";
  66. cxt.fillStyle = "#058";
  67. cxt.fillText("Canvas",canvas.width/2,canvas.height/4);
  68. cxt.fillText("Canvas",canvas.width/2,canvas.height/2);
  69. cxt.fillText("Canvas",canvas.width/2,canvas.height * 3/4);
  70. cxt.restore();
  71. }
  72.  
  73. function starPath(cxt){
  74.  
  75. cxt.beginPath();
  76. for(var i=0;i<5;i++){
  77. cxt.lineTo(Math.cos( (18+i*72) / 180 * Math.PI ),
  78. -Math.sin( (18+i*72) / 180 * Math.PI ));
  79. cxt.lineTo(Math.cos( (54+i*72) / 180 * Math.PI )*0.5,
  80. -Math.sin( (54+i*72) / 180 * Math.PI )*0.5);
  81. }
  82. cxt.closePath();
  83. }
  84.  
  85. function update(canvasWidth,canvasHeight){
  86. // rot += 1;
  87.  
  88. // searchLight.x += searchLight.vx;
  89. // searchLight.y += searchLight.vy;
  90.  
  91. // if(searchLight.x - searchLight.radius <= 0){
  92. // searchLight.vx = -searchLight.vx;
  93. // searchLight.x = searchLight.radius;
  94. // }
  95.  
  96. // if(searchLight.x + searchLight.radius >= canvasWidth){
  97. // searchLight.vx = -searchLight.vx;
  98. // searchLight.x = canvasWidth - searchLight.radius;
  99. // }
  100.  
  101. // if(searchLight.y - searchLight.radius <= 0){
  102. // searchLight.vy = -searchLight.vy;
  103. // searchLight.y = searchLight.radius;
  104. // }
  105.  
  106. // if(searchLight.y + searchLight.radius >= canvasHeight){
  107. // searchLight.vy = -searchLight.vy;
  108. // searchLight.y = canvasHeight - searchLight.radius;
  109. // }
  110.  
  111. if(searchLight.radius > 700)
  112. isIncrease = false;
  113. else if(searchLight.radius < 150)
  114. isIncrease = true;
  115.  
  116. if(isIncrease)
  117. searchLight.radius += 5;
  118. else
  119. searchLight.radius -= 5;
  120. }
  121.  
  122. </script>
  123. </body>
  124. </html>

canvas-8searchLight4.html的更多相关文章

  1. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  2. 【探索】利用 canvas 实现数据压缩

    前言 HTTP 支持 GZip 压缩,可节省不少传输资源.但遗憾的是,只有下载才有,上传并不支持.如果上传也能压缩,那就完美了.特别适合大量文本提交的场合,比如博客园,就是很好的例子. 虽然标准不支持 ...

  3. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  4. 获取Canvas当前坐标系矩阵

    前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...

  5. Canvas坐标系转换

    默认坐标系与当前坐标系 canvas中的坐标是从左上角开始的,x轴沿着水平方向(按像素)向右延伸,y轴沿垂直方向向下延伸.左上角坐标为x=0,y=0的点称作原点.在默认坐标系中,每一个点的坐标都是直接 ...

  6. Canvas绘图之平移translate、旋转rotate、缩放scale

    画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...

  7. 用html5的canvas和JavaScript创建一个绘图程序

    本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...

  8. html5标签canvas函数drawImage使用方法

    html5中标签canvas,函数drawImage(): 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本.参数传递三种形式: drawImage(image,x,y):在 ...

  9. 使用 JavaScript 和 canvas 做精确的像素碰撞检测

    原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...

  10. H5项目开发分享——用Canvas合成文字

    以前曾用Canvas合成.裁剪.图片等<用H5中的Canvas等技术制作海报>.这次用Canvas来画文字. 下图中"老王考到驾照后"这几个字是画在Canvas上的,与 ...

随机推荐

  1. Android APK安装过程学习笔记

    1.什么是APK APK,即Android Package,Android安装包.不同平台的安装文件格式都不同,类似于Windows的安装包是二进制的exe格式,Mac的安装包是dmg格式.APK可以 ...

  2. 吴恩达机器学习笔记1-单变量线性回归(Linear Regression with One Variable)

    在监督学习中我们有一个数据集,这个数据集被称训练集.

  3. 使用CSS样式的三种方式

    外部样式表 当样式需要被应用到很多页面的时候,外部样式表将是理想的选择.使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观. 内部样式表 当单个文件需要特别样式时,就可以使用内部样式表.你可 ...

  4. 使用git clone命令克隆github项目到本地时出错,提示没有权限的解决方法

    最近使用 git clone 命令在Github上克隆自己项目到本地时出错:提示没有权限,确认仓库是否存在,如下图红色框所示 问题:用过 git 的小伙伴都知道克隆项目的命令是—— git clone ...

  5. swiper轮播在ie浏览器上遇到的显示问题探索

    前言: 最近项目有一个需求,想要下图效果,鼠标指向头像图片,图片会放大同时上面的轮播会跟着切换: 鼠标移开头像图片,图片变回原来的大小 注:下图是我根据上面需求已经实现的效果,所以截图方便说明 思考: ...

  6. pycharm注册码(不断更新)

    2019.3.13测试可用 MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWd ...

  7. ubuntu16.04 下鼠标变成十字形状无法点击情况解决

    出现这种问题的原因是把shell命令行终端当成了python环境,误输入了"import"命令. (当然如果你真的希望在shell中输入import指令除外...) 我自己想当然的 ...

  8. python pip 安装库文件报错:pip install ImportError: No module named _internal

    解决方法: pip2.7, you can at first curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py then python2. ...

  9. Robot Framework - 建立本地测试环境

    注意:本文内容是以“在Window7系统中安装本地RobotFrmamework自动化测试环境”为例. Robot Framework简介 HomePage:http://robotframework ...

  10. spark面试总结1

    Spark Core面试篇01 一.简答题 1.Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper? 答:spark通过这个参数spark.deploy.z ...