HTML5 Canvas游戏开发(一)基础知识
一、绘制基本图形
在每次用canvas画布时,都有几步是“套路”
1.在HTML中创建Canvas画布:
<canvas id="mycanvas" width="960px" height="580px">
浏览器不支持canvas <!-- 如果不支持会显示这段文字 -->
</canvas>
2.获取画布标签,并得到一个2D对象:
var c = document.getElementById('mycanvas'); //获取标签
var ctx = c.getContext("2d"); //返回一个用来绘制环境类型的环境,返回一个2D对象 ,该对象实现了一个画布使用的大多数方法。
1、绘制线条:
ctx.lineWidth = 10; //设置线条宽度
ctx.strokeStyle = "red"; //设置线条的颜色
ctx.beginPath(); //创建一个新的路径
ctx.moveTo(10,10); //将画笔光标位置移动到坐标(10,10)处
ctx.lineTo(150,10); //移动画笔到坐标(150,50)处
ctx.stroke(); //开始绘制定义好的路径
通过ctx.lineCap="butt"可以设置线条的形状。有三个可取值:butt、round、square。
2、绘制空心矩形:
md5.strokeRect(100,100,200,240); //绘制空心矩形的函数,四个参数分别表示起点X、Y坐标、矩形长、矩形宽
3、绘制实心矩形:
方法一:使用fillRext()函数。在绘制实心矩形时,可使用fillStyle设置图形的颜色。
方法二:
md5.rect(10,10,70,40);
md5.fill();
4、画圆:
使用arc()函数可以画一个圆弧。有六个参数:圆弧中心X、Y坐标、圆弧半径、起始角度、终
止角度、是否逆时针。可以调用fill()函数画一个实心圆。
5、画圆角矩形:
用arcTo函数可以画圆角矩形。有五个参数:P1的X、Y和P2的X、Y、圆弧的半径radius。
6、擦除Canvas画板:
clearRect()函数。四个参数:X、Y、长度、宽度。
7、绘制复杂:二维贝塞尔曲线、三维贝塞尔曲线。
8、利用clip()函数可在指定区域绘图。
9、绘制自定义图形。
二、绘制文本
1、cxt.font:设置字体样式。
ctx.font = "30px Arial"; //设置文字大小和字体样式、字体大小、斜体效果
2、cxt.strokeText():设置文字内容。空心文字!有四个参数:文本字符串,坐标X、坐标Y、文本宽 。最后一个参数可以省去,省去时文本宽度自动设定为整个文本的宽度。
ctx.strokeText("Hello World",100,50); //设置文字内容
3、cxt.fillText():设置文字内容。实心文字!参数同strokeText();
4、ctx.textAlign=" ";设置文字对齐方式:center、left、right。
5、ctx.textBaseline=" "; 设置文字纵向对齐方式:top、middle、bottom、ideographic等。
三、图片操作
1、利用drawImage()函数绘制图片,该函数有三种原型:
drawImage(image,dx,dy);
drawImage(image,dx,dy,dw,dh);
drawImage(image,sx,sy,sw,sh,dx,dydw,dh);
第一参数都是要绘制的对象。
绘制图像方法一:
在HTML添加如下代码:
<img id="face" src="1.jpg" alt="the face" width="240px" height="240px">
JavaScript代码如下:
var img=document.getElementById("face");
image.onload =function(){
ctx.drawImage(image,10,10);
}
绘制图像方法二:
var image = new Image();
image.src = "1.jpg";
image.onload =function(){
ctx.drawImage(image,10,10);
ctx.drawImage(image,260,10,100,100);
ctx.drawImage(image,50,50,100,100,260,130,100,100);
}
一定要添加图片的onload事件监听!
第一个函数从(10,10)开始绘制整张图片。
第二个函数从(260,10)绘制整张图片到长100、宽100的矩形区域内。
第三个函数表示截取图片从(50,50)到(100,100)的部分,从坐标(260,130)开始绘制,放到长100、宽100的矩形区域内。
2、利用getImageData和putImageData绘制图片。
3、利用createImageData新建像素。
HTML5 Canvas游戏开发(一)基础知识的更多相关文章
- HTML5 Canvas游戏开发实战 PDF扫描版
HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...
- HTML5 Canvas游戏开发(三)lufylegend开源库件(上)
lufylegend可以解决HTML5开发游戏中会遇到的一些问题: 1.各种浏览器对于JavaScript和HTML的解析是不一致的. 2.手机浏览器和PC浏览器的区别. 3.JavaScript并非 ...
- Unity游戏开发面试基础知识
面试第一次知识总结: 一.Unity基本操作 1.unity提供哪几种光源? 点光源.平行光.聚光灯.区域光. 2.物体发生碰撞的必要条件什么? 两个物体必须有碰撞体Collider组件,一个物体上必 ...
- 【Unity3D游戏开发】基础知识之Tags和Layers (三二)[转]
Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...
- HTML5 Canvas游戏开发(四)lufylegend开源库件(下)
一.文本 LTextField对象是lufylegend库件中专门用于显示文本信息的一个对象. 1.文本属性 创建的文本框对象不会自动加入可视化对象列表中.只有手动调用addChild()方法才能使它 ...
- HTML5 Canvas游戏开发(二)高级功能
一.变形 1.放大和缩小 scale(X,Y)函数. 当使用该函数时,其起始坐标值也被放大或缩小.当X.Y为负值时,可以实现翻转. 2.平移变换 translate(X,Y)函数. 表示水平方向向左移 ...
- 游戏开发3D基础知识
概念学习: 向量 向量简介 我们将所有彼此平行的向量进行平移,使其起点与坐标原点重合,当某一向量的起始端与坐标原点重合,我们成该向量处于标准位置.这样,我们就可用向量的终点坐标来描述一个处于标准位置的 ...
- HTML5游戏开发技术基础整理
随着HTML5标准终于敲定.HTML5将有望成为游戏开发领域的的热门平台. HTML5游戏能够执行于包含iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是眼下跨平台应用开发的最佳实 ...
- html5游戏开发-零基础开发《圣诞老人送礼物》小游戏
开言: 以前lufy前辈写过叫“ HTML5游戏开发-零基础开发RPG游戏”的系列文章,在那里面我学习了他的引擎以及了解了游戏脚本.自从看了那几篇文章,我便对游戏开发有了基本的认识.今天我也以零基础为 ...
随机推荐
- Qt ------ QTabWidget
下图: 1.长方形的 objectName 可写可不写,不写就作用于所有 QTabWidget:椭圆形的 QTabWidget#tabWidget 要么四个都要写,要么四个都不写 2.下图的 CSS ...
- zabbix添加cpu使用率图形监控
zabbix版本: 3.2.5 zabbix 自带的windows模板中没有监控cpu使用率的,可以在模板里自己添加 1. 配置 ---> 模板---> Template OS Windo ...
- Android图片压缩工具MCompressor
这是一个简单的图片压缩工具(MCompressor),可自定义压缩的格式和质量,以及压缩后存储的文件路径,可决定对多大的文件进行压缩. 使用方法 build.gradle文件 Step 1. Add ...
- eclipse常用快捷键大全 (转)
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. ...
- 排序构造 GYM 101149 F - The Weakest Sith
题目链接:http://codeforces.com/gym/101149/my 题目大意:给你n个人,他们有成绩a,b,c.一个人如果两门课比另外一个人高,那么这个人就比那个人厉害.问,是否存在一个 ...
- ZOJ 3787 Access System 水
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3787 思路:结构体 时间转化为秒记录下最小并且排序就好了 /** ...
- Gmail登录(2017.10)
本文地址:http://www.cnblogs.com/veinyin/p/7646382.html 由于众所周知的原因,我们使用 Gmail 查看邮件时会有些麻烦,有时梯子不够用甚至不能查看. 比 ...
- js关闭当前页面跳转新页面
页面代码: <p class="info"><span style="font-weight: bold">所属项目:</span ...
- composer 上提交自己的包
先在github上复制自己的地址在 https://packagist.org/packages/submit ->check->submit
- javascript中的数组去重
1.方法一:双层循环,外层循环元素,内层循环做比较,若相同则跳过,不同则加入结果集中,获取没重复的最右侧的值放入数组中 Array.prototype.distinct = function(){ v ...