第19/90步《前端篇》第3章 编写一个简单的HTML5小游戏:完成交互功能 第10课

167 阅读2分钟

今天学习《前端篇》第3章完成交互功能的第10课,控制游戏音效,添加单击音效和背景音乐。

学习目标

  • 学习使用<audio>标签;
  • 学习使用JS播放声音;
  • 添加循环背景音乐;
  • 创建背景音乐状态切换按钮;
  • 处理自定义图片按钮的互动;
  • 学习使用条件运算符。

主要知识点/技能点

  • 一般会在HTML5页面上添加一个来播放音频,audio 组件允许有多个 source 元素,每个 source 可以链接不同类型的音频文件,浏览器将使用第一个识别的格式。

  • ogg、mp3、wav是三种常见的音频格式,没有一个浏览器是同时支持三种格式的,如果想让标签表现正常,至少需要定义两个source。

  • HTML5 DOM API有一个 canPlayType 方法,它返回浏览器是否能播放指定类型的音频/视频文件,用这个方法可以实现<source>标签实现的功能。canPlayType返回三种值:"probably"、"maybe"、""(空字符串)。

  • 静音按钮需要有两个状态:一个为常态,单击后音乐停止;另一种是静音态,单击后音乐恢复播放。

  • 可以在这个游戏资源网站上查找、下载背景音乐素材:opengameart.org/

  • 可以从这个游戏资源网站上查找、下载图标,网址为:www.flaticon.com/

  • Audio对象并没有playing或isPlaying这样的属性,但我们可以通过另外两个属性组合判断,如果 currentTime 大于 0,并且 paused 为 false,可以认为音频在播放。

  • 在 HTML开发中,createElement 方法通过指定元素名称创建一个元素,其调用语法为:

     document.createElement(nodeName)
    
  • 浏览器标签栏的图标可以由下面代码控制:

     <link rel="shortcut icon" href="favicon.ico">
    
  • 事实上当绘制对象只有一个时,也可以直接使用 drawImage 绘制,不需要创建离屏画布。

  • 当在画布上判断点击了哪个对象时,我们可以在监听后依据单击点的位置判断单击的是哪一个对象。

  • 条件运算符? : ,有时也叫三元运算符或三目运算符,其标准语法为:

     let result = expression ? sentence1 : sentence2
    

    如果expression为true,执行sentence1,否则执行sentence2。

实践疑难点

有时候HTML5页面中的Canvas缩放,会影响单击位置的判断,这时候要注意重设画布的原始大小。

小结

阶段性运行截图:

image-20230105100013707.png