• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 利用HTML5 Canvas制作一个简单的打飞机游戏_html5教程技巧

利用HTML5 Canvas制作一个简单的打飞机游戏_html5教程技巧

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5,Canvas等相关知识,匿名希望在学习及工作中可以帮助到您
之前在当耐特的DEMO里看到个打飞机的游戏,然后就把他的图片和音频扒了了下来。。。。自己凭着玩的心情重新写了一个。仅供娱乐哈。。。。。。我没有用框架,所有js都是自己写的。。。。。。所以就可以来当个简单的教程,对那些刚玩canvas的,或许能有些帮助,楼主玩canvas也不是很久,技术不是很好,请见谅哈。

  闲话不多说,先上DEMO撒:飞机游戏 楼主写这个人纯碎娱乐,没想着写成多正式的游戏哈。

  步入主题啦:打飞机游戏文件有index.html入口文件,allSprite.js精灵的逻辑处理文件,loading.js加载处理文件以及data.js(初始化的一些数据)。

  首先,正常的游戏基本上都需要一个loading,loading页面就是用来预加载数据的,包括精灵表图片,音频等,因为这是个小游戏,要加载的就只有一些音频和图片。里面的加载代码主要就下面这些,其他是制作loading动画的,那个比较简单,就不贴了,如果有兴趣的直接在DEMO里看控制台就行了:

  1. loadImg:function(datas){
  2. var _this = this;
  3. var dataIndex = 0;
  4. li();
  5. function li(){
  6. if(datas[dataIndex].indexOf("mp3")>=0){
  7. var audio = document.createElement("audio");
  8. document.body.appendChild(audio);
  9. audio.preload = "auto";
  10. audio.src = datas[dataIndex];
  11. audio.oncanplaythrough = function(){
  12. this.oncanplaythrough = null;
  13. dataIndex++;
  14. if(dataIndex===datas.length){
  15. _this.percent = 100;
  16. }else {
  17. _this.percent = parseInt(dataIndex/datas.length*100);
  18. li.call(_this);
  19. }
  20. }
  21. }else {
  22. preLoadImg(datas[dataIndex] , function(){
  23. dataIndex++;
  24. if(dataIndex===datas.length){
  25. _this.percent = 100;
  26. } else {
  27. _this.percent = parseInt(dataIndex/datas.length*100);
  28. li.call(_this);
  29. }
  30. })
  31. }
  32. }
  33. },
  34. //再贴出preLoadImg的方法
  35. function preLoadImg(src , callback){
  36. var img = new Image();
  37. img.src = src;
  38. if(img.complete){
  39. callback.call(img);
  40. }else {
  41. img.onload = function(){
  42. callback.call(img);
  43. }
  44. }
  45. }


我先在data.js里面用一个数组保存文件的链接,然后判断这些链接是图片还是音频,如果是图片就用preLoadImg加载,预加载图片的代码很简单,就是new一个图片对象,然后把链接赋给它,加载完后再回调。音频的加载则是通过生成一个HTML5的audio dom对象,把链接赋给它,audio有一个事件“canplaythrough”,浏览器预计能够在不停下来进行缓冲的情况下持续播放指定的音频/视频时,会发生 canplaythrough 事件,也就是说当canplaythrough被调用时,音频就已经被加载的差不多了,可以进行下一个音频的加载了。就这样当把所有东西都加载完后,再进行回调,开始游戏。

  游戏开始了,一个游戏,会需要很多的对象,所以我就统一写成了一个精灵对象,不同对象之间的每一帧的运动情况直接用behavior来分别编写就行了。

  1. W.Sprite = function(name , painter , behaviors , args){
  2. if(name !== undefined) this.name = name;
  3. if(painter !== undefined) this.painter = painter;
  4. this.top = 0;
  5. this.left = 0;
  6. this.width = 0;
  7. this.height = 0;
  8. this.velocityX = 3;
  9. this.velocityY = 2;
  10. this.visible = true;
  11. this.animating = false;
  12. this.behaviors = behaviors;
  13. this.rotateAngle

您可能想查找下面的文章:

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2018-12-03实现一个HTML5音乐播放器的实例
  • 2018-12-03H5中History模式的使用详解
  • 2017-08-06HTML5中的nav标签学习笔记
  • 2017-08-06html5 svg 中元素点击事件添加方法
  • 2018-12-03HTML5新增的结构元素有哪些?HTML5新增的结构元素的用法(推荐)
  • 2018-12-03HTML5+JS实现俄罗斯方块原理及具体步骤_html5教程技巧
  • 2018-12-03HTML5和CSS3实现3D展示商品信息的代码
  • 2018-12-03畅谈HTML5 到底是什么?
  • 2017-08-06html5跨域通讯之postMessage的用法总结
  • 2017-08-06HTML5语音识别标签写法附图

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 浏览 GitHub 项目的目录结构时,点击一个目录或文件链接是如何做到局部刷新,URL 同时被更新,这是什么原理?
    • HTML5中的视频元素
    • HTML5 Canvas平移,放缩,旋转图文代码详情
    • 推荐10款飘落动画特效(收藏)
    • HTML5—浏览器支持问题
    • HTML5中判断用户是否正在浏览页面的方法
    • CSS3 画基本图形,圆形、椭圆形、三角形等
    • 如何使用canvas实现图片马赛克
    • HTML5中对title属性的定义与规定
    • 什么是响应式网站设计?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有