canvas实践1
今天同学遇到问题,我于是就利用了canvas帮他写了个效果,效果如图
我本来在学习不是很想做,但是昨天感觉自己学的有点累就去帮忙做了,我的思路是每次画一个矩形,然后通过rotate旋转让它自身旋转45度,旋转完再用translate位移到目标点,先定义一个正方形的类,然后实例了很多个正方形,之后用画笔把他们全部画出了,设置完位置和判断出界返回之后就大功告成了\(^o^)/YES!学了几天了终于有点用了,希望自己以后能更强,加油吧,你离小目标还很远呢。
之后还是和以前一样,贴上代码
var canvas = document.getElementById("canvas");
var cxt=canvas.getContext("2d");
var lines=[];
var rectHeight=20;
var diff=30;
var diffW=1;
function Line(x,y,width,height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
}
window.onload=function(){
rc=rectHeight;
var lenc=23;
for (var i=0;i<lenc;i++) {
rc+=diff;
var heightX=Math.sqrt(rc*rc+rc*rc);
heightX+=diffW;
lines.push(new Line(canvas.width/2,canvas.height/2-heightX/2,rc,rc));
}
drawRect();
}
function drawRect(){
cxt.clearRect(0,0,canvas.width,canvas.height);
for (var i=0;i<lines.length;i++) {
var line=lines[i];
cxt.save();
cxt.translate(line.x,line.y)
cxt.rotate(Math.PI/180*45);
cxt.strokeStyle="red";
cxt.strokeRect(0,0,line.width,line.height);
cxt.stroke();
cxt.restore();
rectCal(line);
}
function rectCal(line){
var diffX=Math.sqrt(diffW*diffW+diffW*diffW);
line.y-=diffX/2;
line.width+=diffW;
line.height+=diffW;
if(line.width>canvas.width+200){
line.width=rectHeight;
line.height=rectHeight;
var heightX=Math.sqrt(rectHeight*rectHeight+rectHeight*rectHeight);
line.x=canvas.width/2;
line.y=canvas.height/2-heightX/2;
console.log(lines,rectHeight)
}
}
var id= requestAnimationFrame(drawRect);
}
canvas实践1的更多相关文章
- canvas实践小实例一 —— 画板工具
前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...
- canvas实践小实例二 —— 扇形
俗话说:发图不留种,菊花万人捅!我这里想延伸一下:教学不给例,说你是傻逼!哎呀,还挺押韵,嘻嘻,开个玩笑! 我们都讲了四期API的知识了,估计大家看的也是枯燥的很啊,前面的小实例也是太简单,简直不解渴 ...
- 宅在家学不进去吗?试试这些 GitHub 上简单易学的游戏项目吧
作者:HelloGitHub-小鱼干 这是本人宅在家里的第 4 周,代码不想看,技术文章不想读,都不能愉快学习了我还怎么当一个优秀的需求消化师呢?有没有什么轻松地方法来学习技术呢?想起了小时候金山打字 ...
- Canvas 最佳实践(性能篇)
Canvas 想必前端同学们都不陌生,它是 HTML5 新增的「画布」元素,允许我们使用 JavaScript 来绘制图形.目前,所有的主流浏览器都支持 Canvas. Canvas 最常见的用途是渲 ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- canvas线条实践之运动的正方形
原理说明: 1.通过rect实现正方形的绘制: 2.save保存canvas面板的保存,restore回复保存的canvas面板到初始状态: 3.translate用于改变canvas坐标的起始位置: ...
- canvas 2d 贴图技术实践
最近在公司内部的技术协会论坛里闲逛的时候,无意中发现了一篇手淘前端大牛岑安两年前写的博文,讲述了canvas的2d贴图技术.看到后觉得相当神奇.于是就自己实现了一下.不过岑安前辈的那篇博文也只是大概讲 ...
- Unity3D实践系列10, Canvas画布的创建和使用
Canvas是所有ui元素的父物体. 当添加一个Button类型的GameObject后,在"Hierarch"窗口中自动添加了一个Canvas,以及EventSystem. 在C ...
- Canvas学习实践:一款简单的动画游戏
最近学习了下Canvas绘图...突发奇想就有了下面这款简单的小游戏,纯属娱乐~ 废话不多说,直接上代码: <!DOCTYPE html> <html lang="zh&q ...
随机推荐
- [Infopath]使用jquery给infopath表单的的field赋值。 how to set value to Infopath field by Jquery
客户有个需求,需要在infopath表单中嵌入一段我们自己的东西,计算后要更新infopath某一个field. 1. 怎么去获取到那个field 由于infopath生产的html非常的复杂,嵌套太 ...
- Googlehack之Github hack
site:aircrk.com smtpsite:aircrk.com smtp @mail.comsite:aircrk.com root passwordsite:aircrk.com smtp ...
- Android github 快速实现多人协作
前言:最近要做github多人协作,也就是多人开发.搜索了一些资料,千篇一律,而且操作麻烦.今天就整理一下,github多人协作的简单实现方法. 下面的教程不会出现:公钥.组织.team.pull r ...
- 自动显示隐藏布局的listView
借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果. 1.自动显示 ...
- OC 单例模式
OC 单例模式 概念 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约 ...
- mysql 基本
mysql -u root -p 输入密码进入数据库 show database; 查询当前库 use databasename 切换到某个库 show tables; 列出当前数据库的表 desc ...
- Spring 4 集成Apache CXF开发JAX-RS Web Service
什么是JAX-RS 在JSR-311规范中定义,即Java API for RESTful Web Services,一套Java API,用于开发 RESTful风格的Webservice. 工程概 ...
- iPhone 6 被盗记录二【写在315前夕:苹果售后福州直信创邺在没有三包的情况下帮小偷翻新、助力小偷换机销赃!无视王法。让人震惊,痛心,憎恨!消费者很受伤很无奈】
投诉公司: 北京直信创邺数码科技有限公司 标题: 写在315前夕:苹果售后在没有三包的情况下帮小偷翻新.助力小偷换机销赃!无视王法.让人震惊,痛心,憎恨!消费者很受伤很无奈 期望: 还我手机,或者赔 ...
- Windows on Device 项目实践 1 - PWM调光灯制作
在前一篇文章<Wintel物联网平台-Windows IoT新手入门指南>中,我们讲解了Windows on Device硬件准备和软件开发环境的搭建,以及Hello Blinky项目的演 ...
- 在Ubuntu上单机安装Hadoop
最近大数据比较火,所以也想学习一下,所以在虚拟机安装Ubuntu Server,然后安装Hadoop. 以下是安装步骤: 1. 安装Java 如果是新机器,默认没有安装java,运行java –ver ...