当前位置:首页 > 学习资源 > 讲师博文 > 使用HTML5的canvas标签进行图形绘制、动画和游戏开发的方法和技巧

使用HTML5的canvas标签进行图形绘制、动画和游戏开发的方法和技巧 时间:2024-01-16      来源:华清远见

一、基本使用

canvas基本使用

宽、高通过属性调整

  注意: 利用样式调整宽高,内部图像的尺寸不会成比例缩放,不是真实的像素比例

  

 

线条的绘制                                                                       

  (x-距离画布左上角的水平位置, y-距离画布左上角的垂直位置)

步骤1(必须):指定绘制起始位置moveTo(x,y)

步骤2(必须):指定绘制的结束位置lineTo(x,y)直线

步骤3:控制笔触的颜色strokeStyle=''

步骤4:修改线条的宽度lineWidth=number

步骤5:设置线条结束端点的样式lineCap='butt/round/square'

步骤6(必须):执行绘制操作stroke()




 

线条绘制图形                                                                    

1-多个lineTo                                                                         

   lineTo()创建一个结束点,多个lineTo绘制时,会由前一个lineTo()结束位置作为下一个线的起始 点,开始绘制到当前结束点的一条直线



2-多个moveTo

   设置多个moveTo作为形状的最初起始点

   

闭合空间closePath()                                                 

   closePath()-创建从当前点到开始点的路径

  绘制线时,调用开始路径函数beginPath()、结束路径函数closePath(),可以使得路径变为闭合图 形

  每一组开始路径函数beginPath()、结束路径函数closePath()内部绘制时需要重新设置最初起始 点、添加stroke()执行绘制操作、单独设置绘制笔触颜色strokeStyle

   lineWidth——只设置一个会影响所有,也可单独设置



填充空间fill()                                                           

  填充当前的图像(路径)

  默认颜色是黑色

  如果路径未关闭,那么 fill() 方法会从路径结束点到开始点之间添加一条线,以关闭该路径 ,然后填 充该路径。

  

填充样式fillStyle='color'颜色



fillStyle=gradient渐变函数

  createLinearGradient线性渐变函数(渐变开始x坐标,渐变开始y坐标,渐变结束x坐标,渐变 结束y坐标)

  createRadialGradient放射性渐变函数(渐变开始圆的x坐标,渐变开始圆的y坐标, 开始圆的半 径,渐变结束圆的x坐标,渐变结束圆的y坐标, 结束圆的半径)

  使用该对象作为 strokeStyle或 fillStyle属性的值

   用于填充 矩形、圆形、线条、文本

  使用 addColorStop(位于gradient 对象中的位置0-1,'颜色')方法规定不同位置的渐变颜色,向一个 渐变添加一个颜色停止。

  

fillStyle=pattern对象

  通过 createPattern(image贴图的图像,repetitionStyle贴图方式)返回一个Canvas 的Pattern对象, 用于使用图像来填充绘图

·  repetitionStyle贴图方式

○    repeat——各个方向,默认值

○    repeat-x——只在x方向

○    repeat-y——只在y方向

○    no-repeat——不贴图,只使用一次

  注意: 在canvas里使用图像,需要在页面加载完成函数里使用



二、图形绘制

矩形绘制rect

  使用方法context.react(x-矩形左上角x坐标, y-矩形左上角y坐标, width-矩形的宽度,  height-矩形 的高度)

空心矩形rect+stroke/strokeRect



实心矩形rect+fill/fillRect


画布擦除clearRect                                                   

   context.clearRect(x-要清除的矩形左上角的x坐标,y-要清除的,width-要清除的矩形的宽度,height- 要清除的矩形的高度)

   

圆形绘制arc                                                               

   context.arc(圆的中心x坐标,圆的中心y坐标,圆的半径,起始弧度,结束弧度,绘制方向)    弧度的计算=角度数*( Math.PI/180° )

  绘制的方向:  false-顺时针, true-逆时针

  0度代表水平向右


扇形绘制(直线+弧长)

三、文本绘制

两种方式fillText/strokeText

  fillText ——绘制实心文本

  strokeText ——绘制空心文本

颜色设置fillStyle/strokeStyle

  ctx.fillStyle = 'color' ——填充文本颜色

  ctx.strokeStyle = 'color' ——空心文本颜色

  字体大小、类型设置font

  ctx.font = 'font-size font-family' ;

   font-size为字体大小,如:  32px;

   font-family为字体类型,如:  MircrosoftYaHei;

文本水平对齐方式textAlign

  ctx.textAlign = 'start(默认) || left || center || right || end';  

   start、 left、center、 right、end为textAlign的取值, 默认是start。

   start和left效果一样,将文本内容左对齐于文本绘制的起始位置;

   center将文本内容在文本绘制的起始位置两侧各占一半;

   end和right效果一样,将文本内容右对齐于文本绘制的起始位置;

○   文本绘制的起始位置指的是fillText或strokeText中的x位置

  文本在垂直方向上的位置由fillText或strokeText中的y来控制;

 

文本基线对齐方式textBaseline

context.textBaseline="top" || "hanging" || "middle" || "alphabetic" ||

"ideographic" || "bottom";

○   注意: 设置基线要在设置文字内容和位置之前,否则设置基线失效

 

文本方向direction

  ctx.direction = “ltr” || "rtl" || “inherit”; 

   ltr

文本方向从左向右。

   rtl

文本方向从右向左。

  inherit 默认

根据情况继承 元素或者 Document

 

预测量文本宽度measureText                                       

四、图片绘制                                                 

语法:

   ctx.drawImage(image, dx, dy);

   ctx.drawImage(image, dx,dy, dWidth, dHeight);

   ctx.drawImage(image, sx, sy, sWidth,sHeight, dx, dy, dWidth, dHeight);

解释:                                                                                

   image :img标签

   dx,dy: 绘制图片的坐标位置

   dWidth, dHeight: 绘制图片的宽度和高度

·  sx, sy: 图片内部的坐标,用于截取图片

   sWidth,sHeight: 截取图片的宽高

五、画布的requestAnimation

  它是一个专门为实现高性能的帧动画

  是浏览器用于定时循环操作的一个接口,类似于setTimeout,主要用途是按帧对网页进行重绘,让 各种网页动画效果(DOM动画、 Canvas动画、 SVG动画、 WebGL动画)能够有一个统一的刷新机

制,从而节省系统资源,提高系统性能,改善视觉效果。

  格式:

requestAnimationFrame (回调函数)

回调函数A(获取到浏览器每次刷新的时长){

获取到每一帧的间隔intervalTime = 获取到浏览器每次刷新的时长 -   上一帧时间

上一帧的时间 = 获取到浏览器每次刷新的时间

六、如何使用Canvas制作游戏开发的方法和

技巧

1-准备工作

   文本编辑器,如 Visual Studio Code。

  一个 Web 服务器。

  一些游戏素材,如图片、声音等。

  一个 Canvas 游戏框架,如 Phaser、CreateJS、 PixiJS 等。

2-创建HTML页面

  注意:引入 Canvas 游戏框架

3-添加事件监听器

监听玩家的键盘输入,使其能够控制玩家移动。

监听玩家与敌人的碰撞。

监听游戏结束,使其能够重新开始游戏

 

4-优化处理

避免频繁的重绘

通过缓存来避免重复绘制

 

 

5-实现游戏逻辑

通过面向对象的方式,定义游戏的各种元素

定义游戏的规则

通过requestAnimation方法来实现游戏的主循环

 

6-动画效果的植入

  添加背景音乐、交互音效

   图形效果的改变:位置、大小、透明度

  通过css3动画属性,来实现动画效果

上一篇:C语言的include没你想的那么简单

下一篇:以后想从事嵌入式软件,应该掌握什么知识?

戳我查看嵌入式每月就业风云榜

点我了解华清远见高校学霸学习秘籍

猜你关心企业是如何评价华清学员的

干货分享
相关新闻
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2024 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部