HTML5 Canvas游戏开发(二)高级功能
一、变形
1、放大和缩小
scale(X,Y)函数。
当使用该函数时,其起始坐标值也被放大或缩小。当X、Y为负值时,可以实现翻转。
2、平移变换
translate(X,Y)函数。
表示水平方向向左移动,竖直方向向下移动。
3、旋转变换
rotate(角度)函数。
旋转一定角度,是以canvas的起始坐标坐标(0,0)为中心旋转。可使用translate修改canvas的中心。
4、setTransfrom函数实现倾斜效果
可使用transfrom()函数代替上述三种函数的功能。
二、图形的渲染
1、线性渐变
使用createLinearGradient函数和addColorStop函数可以实现线性渐变。
createLinearGradient(x1,y1,x2,y2)
其中四个参数分别是渐变的出发点坐标(x1,y1)与终点坐标(x2,y2)。
addColorStop(position,color)
其中position表示从0.0到1.0之间的数值,表示渐变中颜色地点的相对低位;color参数表示渐变的颜色。
var grd = ctx.createLinearGradient(0,0,200,0); 线性渐变
grd.addColorStop(0.2,"#00ff00");
grd.addColorStop(0.8,"#ff0000");
ctx.fillStyle = grd;
ctx.fillRect(0,0,200,100);
2、径向渐变
通过createRadialGradient函数和addColorStop函数实现径向渐变功能。
createRadialGradient(x0,y0,r0,x1,y1,r1)
其中,参数x0,y0表示开始圆的圆心坐标,r0为开始圆的直径;x1,y1为结束圆的圆心坐标,r0为结束圆的半径。
var grd = ctx.createRadialGradient(100,100,10,100,100,50); 径向渐变
grd.addColorStop(0,"#00ff00");
grd.addColorStop(1,"#ff0000");
ctx.fillStyle = grd;
ctx.fillRect(0,0,200,200);
3、颜色合成
globalCompositeOperation属性说明绘制到画布上的颜色如何与画布上的已有颜色组合起来。
ctx.fillStyle = "#00ff00"; //颜色合成
ctx.fillRect(10,10,50,50);
ctx.globalCompositeOperation = "source-over";
ctx.beginPath();
ctx.fillStyle = "#ff0000";
ctx.arc(50,50,30,0,2*Math.PI);
ctx.fill();
4、颜色反转
指的是对图形的每个像素进行颜色取反。
5、灰度控制
将图片变成灰色。
6、阴影效果
阴影的颜色可以通过shadowColor属性来指定。并且可以通过shadowOffsetX和shadowOffsetY属性来改变。应用到阴影边缘的羽化量可以通过shadowBlur属性来设置。
ctx.shadowColor="#ff0000";
ctx.shadowBlur=100;
ctx.shadowOffsetX=20;
ctx.shadowOffsetY=30;
var image = new Image()
image.src = "1.jpg";
image.onload = function(){
ctx.drawImage(image,0,0);
}
下面讲述一个小案例的实现:一个画板。
代码连接如下:http://www.oschina.net/code/snippet_2685955_55850
当鼠标按下时调用down函数,将按下标记置为true。并且获取当前鼠标的位置。
当鼠标移动时调用draw函数。判断当按下标记为true时,获取新的鼠标位置,并开始画图。
当鼠标弹起时调用up函数。将按下标记置为false。

HTML5 Canvas游戏开发(二)高级功能的更多相关文章
- HTML5 Canvas游戏开发实战 PDF扫描版
HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...
- HTML5 Canvas游戏开发(三)lufylegend开源库件(上)
lufylegend可以解决HTML5开发游戏中会遇到的一些问题: 1.各种浏览器对于JavaScript和HTML的解析是不一致的. 2.手机浏览器和PC浏览器的区别. 3.JavaScript并非 ...
- HTML5 Canvas游戏开发(四)lufylegend开源库件(下)
一.文本 LTextField对象是lufylegend库件中专门用于显示文本信息的一个对象. 1.文本属性 创建的文本框对象不会自动加入可视化对象列表中.只有手动调用addChild()方法才能使它 ...
- HTML5 Canvas游戏开发(一)基础知识
一.绘制基本图形 在每次用canvas画布时,都有几步是“套路” 1.在HTML中创建Canvas画布: <canvas id="mycanvas" width=" ...
- HTML5+Canvas+jQuery调用手机拍照功能实现图片上传(二)
上一篇仅仅讲到前台操作,这篇专门涉及到Java后台处理.前台通过Ajax提交将Base64编码过的图片数据信息传到Java后台,然后Java这边进行接收处理.通过对图片数据信息进行Base64解码,之 ...
- HTML5物理游戏开发 - 越野山地自行车(三)粉碎自行车
自上一章公布到如今已时隔四月,实在对不住大家.让大家久等了~话说不是我不关注我的博客,而是事情一多起来写博客的时间就少了. 待到今日有空了,回头看了看自己曾经写的文章,猛得发现已经四个月不曾写文章了. ...
- Html5 Egret游戏开发 成语大挑战(一)开篇
最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力 ...
- Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架
Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...
- 使用Selenium和openCV对HTML5 canvas游戏进行自动化功能测试(一)
上一篇讲了HTML5 canvas游戏的基本工作原理,接下来讲如何进行自动化功能测试. Selenium是一个跨平台的跨浏览器的对网页进行自动化测试的工具.从Selenium 2.0开始Seleniu ...
随机推荐
- 项目Header组件的开发注意事项
npm install stylus --save npm install stylus-loader --save 移动端一般采用rem布局方式 Header组件里iconfont的使用和代码优化: ...
- WAV MP3 Converter-强大的音频转换软件-特别版
From:http://www.cnblogs.com/killerlegend/p/3873909.html Author:KillerLegend Date:2014.7.28 WAV MP3 C ...
- 通过网络仓库建立本地的yum仓库
[root@kazihuo ~]# yum -y install createrepo yum-utils [root@kazihuo ~]# yum -y install https://mirro ...
- hive架构原理简析-mapreduce部分
整个处理流程包括主要包括,语法解析(抽象语法树,AST,采用antlr),语义分析(sematic Analyzer生成查询块),逻辑计划生成(OP tree),逻辑计划优化,物理计划生成(Task ...
- HDU 1719 Friend 规律题
解题报告:规定数字1和数字2是Friend number,然后规定,若a和b是Friend number,那么a*b+a+b也是Friend number,输入一个数,让你判断这个数是否是Friend ...
- 【leetcode 简单】 第六十六题 用栈实现队列
使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部. pop() -- 从队列首部移除元素. peek() -- 返回队列首部的元素. empty() -- 返回队列是否为空. ...
- oracle常见错误对应代码与含义
本篇文章是对oracle错误代码进行了详细的总结与分析,需要的朋友参考下 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会 ...
- Ubuntu 14.04 Nvidia显卡驱动安装及设置
更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成显卡进入系统 将显示器连接到集显的VGI口, 并在BIOS中设置用集显 ...
- 差分约束系统+(矩阵)思维(H - THE MATRIX PROBLEM HDU - 3666 )
题目链接:https://cn.vjudge.net/contest/276233#problem/H 题目大意:对于给定的矩阵 每一行除以ai 每一列除以bi 之后 数组的所有元素都还在那个L- ...
- Electron build 无法下载 winCodeSign 等资源
将 7z 文件下载到 以下 cache 目录并解压 macOS: ~/Library/Caches/electron-builder Linux: ~/.cache/electron-builder ...