《HTML5 CANVAS基础教程》读书笔记

时间:2023-01-05 22:49:18

一、HTML5简介

1.HTML5新特性

  1)结构元素:section,header,hgroup,footer,nav,article,aside,

  2)内容元素:figure,figcaption,mark,time

  3) 表单:浏览器端验证、输入类型、输入属性

  4)媒体元素:audio元素、video元素、canvas元素

2.其它和H5相关的新技术

  1)CSS3

  2)web fonts

  3) Geolocation API

  4) SVG

  5) web storage

  6) web workers

  7) WebSocket

三、Canvas基础知识

1.常用方法:

  1)fillRecct():绘制方块

  2)strokeRect():绘制方块(边框)

  3)绘制线条:beginPath、moveTo、lineTo、closePath、stroke

  4)fill():填充(与stroke对应)

  5)arc(): 画圆

  6)fillStyle()【strokeStyle()】:填充颜色

  7) lineWidth:线宽

  8)fillText【strokeText】:绘制文本(font属性用来设置字号和字体)

  9)clearRect():清除

2.小技巧:

  1)重设画布的长宽,可以清除画布上的所有内容(包括样式和颜色),据说这种效率更高哦~

  2)画布全屏显示(参考P69页)

  3)画布大小根据浏览器变动而变动(参考P71页)

四、canvas高级功能

1.保存和恢复绘图状态:context.save()、restore(),2个方法对状态的储存方式,是一个堆栈。

2.平移:context.translate(),平移的是坐标原点,而不是绘制对象

3.缩放:context.scale(),缩放也是对代码之后的对象起效果,而且对上面的原点坐标的平移也同样有效

4.旋转:context.rotate(),旋转是围绕着原点坐标转的,所以经常和translate方法一起使用

5.变换矩阵:transform()、setTransform,前者是在原来矩阵上应用一个相乘的效果,后者是直接设定对应的值。

6.透明:全局阿尔法值context.globalAlpha = 0.5

7.合成操作:对源和目标,两者的组合方式有多种选择(详见P87),有可能可以实现类似擦除、滤镜的效果。

8.阴影:shadowBlur、shadowColor、shadowOffsetX、shadowOffsetY

9.渐变:线性渐变(createLInearGradient)、放射渐变(createRadialGradient)

10.贝赛尔曲线:二次(quadraticCurveTo)、三次(bezierCurveTo)方法

11.将画布导出为图像:toDataURL(),可以通过生成URL直接在浏览器中查看

五、处理图像和视频

1.加载方法:context.drawImage(image,x,y);

2.调整大小的用法:drawImage(image,x,y,width,height);

3.加上裁剪的用法:drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh),具体用法参考P107

4.绘制的图像可以带上上一章学的各种特效:阴影、平移、变形等

5.访问像素值:context.getImageData(),计算得到像素值RGB数值的公式(P115)

6.从零绘制图像:createImageData(),putImageData(imageData,0,0)

7.利用ImageData的方法,可以实现马赛克效果、反转颜色、灰度、像素化的效果

8.处理视频:通过设置定时器和视频的帧数同步,取出视频的每一帧来应用到画布上,还可以加特效

六、制作动画

1.创建动画循环:更新对象、清除对象、绘制对象

2.使用函数来创建对象,来记忆绘制对象的形状

3.运动和改变方向,要使用三角函数、弧度的算法来实现

4.反弹是通过计算画布大小的方式实现

七、实现高级动画

1.准备工作:高中物理常识+牛顿运动定律(F = ma)

2.加速度实现:速度 += 加速度

3.摩擦力实现(模拟):速度 *= 摩擦系数

4.检测碰撞:正方形和小球有不同的计算公式

5.动量守恒定律,使得碰撞效果更逼真(不要深究公式)

八、太空保龄球游戏

1.使用HTML元素设计UI界面(要位于画布的前面,比较方便显示),使用CSS将UI界面移动到canvas元素上方

九、躲避小行星游戏

1.使用键盘输入控制游戏

2.利用save方法来保存火箭喷射火焰效果

3.假造横向卷轴的效果

4.给游戏增加难度(不断优化游戏)

5.给游戏添加声音

十、未来的Canvas

1.canvas与SVG区别:一个是位图、一个是矢量图,SVG在编辑和绘制形状方面比较好,而canvas在编辑像素级的东西(处理图像和视频)比较好。

2.canvas与flash:选择一款像FLASH那样好用的编辑器,canvas有性能问题,还好有几种解决方法(P236)

3.三维图形:canvas使用WebGL技术来建立三维图形。三维图形对专业要求比较高,可以利用框架来降低学习门槛

4.WebSocket技术:实现多人通信、游戏

《HTML5 CANVAS基础教程》读书笔记的更多相关文章

  1. SQL Server2012 T-SQL基础教程--读书笔记(1-4章)

    SQL Server2012 T-SQL基础教程--读书笔记(1-4章) SqlServer T-SQL 示例数据库:点我 Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的 ...

  2. SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

    SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...

  3. SQL Server2012 T-SQL基础教程--读书笔记(5-7章)

    SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5. ...

  4. 【索引】Objective-C基础教程-读书笔记

    第1章 启程 http://www.cnblogs.com/duxiuxing/p/5492219.html 第2章 对C的扩展 第3章  面向对象编程的基础知识 第4章 继承 第5章 复合 第6章 ...

  5. SQL基础教程读书笔记-1

    查询基础 2.2 算数运算符和比较运算符 2.2.1算数运算符 + - * / 需要注意NULL 5 + NULL 10 - NULL 1 * NULL 4 / NULL NULL / 9 NULL ...

  6. 《Python基础教程读书笔记》

    第1章 快速构造:基础知识 1.2交互式构造器 不强制分号,一行就是一行.可以加上分号 1.4数字和表达式 加.减.乘.除.整除.求余.指数.取反(-例如-2**2,**的优先级比-大) from _ ...

  7. 【Objective-C基础教程-读书笔记】第1章 启程

    在第1章里面,作者主要以一种站在世界中心呼唤爱的姿态,给读者们打打鸡血洗*,鼓励大家,投入时间学习Objective-C,值得啊! 首先,Objective-C既能用来开发OS X平台上的APP,又 ...

  8. Objective-C基础教程读书笔记(6)

    第6章 源文件组织 到目前为止,我们讨论过的所有项目都是把源代码统统放入main.m文件中.类的main()函数,@interface和@implementation部分都被塞入同一个文件里.这种结构 ...

  9. Objective-C基础教程读书笔记(7)

    第7章 深入了解Xcode Xcode是一个很好用的工具,有很多强大的功能,不过并不是所有的功能都易于发现.如果你打算长期使用这个强大的工具,就肯定要尽可能多了解它.本章将介绍一些Xcode编辑器的使 ...

随机推荐

  1. Hibernate配置文件

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  2. IOS开发之不同版本适配问题2&lpar;&num;ifdef &lowbar;&lowbar;IPHONE&lowbar;7&lowbar;0&rpar;

    继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...

  3. TCPdump抓包命令详解--摘

    http://blog.csdn.net/s_k_yliu/article/details/6665673/ http://starsliao.blog.163.com/blog/static/890 ...

  4. spring&lowbar;150803&lowbar;service

    实体类: package com.spring.model; public class DogPet { private int id; private String name; private in ...

  5. tomcat启动很慢的原因

    启动后tomcat显示的代码如下: 2014-4-3 10:50:15 org.apache.catalina.core.AprLifecycleListener init 信息: The APR b ...

  6. 吴恩达深度学习笔记(deeplearning&period;ai)之卷积神经网络(一)

    Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十分方便,便于指出过滤器的位置. ...

  7. 多线程之:MESI-CPU缓存一致性协议

    MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用 ...

  8. 电子产品使用感受之----AirPods的一天使用体验分享

    2019.03.29 晚上8点50分更新: 3月28日我的新款AirPods终于到货了,作为一代产品使用2年的用户,终于可以说说这枚新品的一天使用感受了: 我们会从以下几个方面来进行阐述: 外观 技术 ...

  9. 安装pip、numpy、sklearn

    1)pip安装:https://pip.pypa.io/en/stable/installing/To install pip, securely download get-pip.py. [1]:c ...

  10. 基于jquery的ui选择之路

    选定: 主框架:jqueryUi tree:ztree grid:jqGrid layout:jquery.layout 原由: 还有其他demo,ajax实现等参看连接: 正在做的一个项目选择jqu ...