蘑菇与熊游戏开发第二回(让蘑菇动起来)

开发 前端 游戏开发
定义蘑菇实例:由于在画布上的物体全部都有3个共同的属性:x、y坐标,素材image。所以我们定义一个公用的游戏物体。为了方便拓展,定义一个公用的蘑菇。

上回分析了游戏,在这一回我们将让蘑菇跟随鼠标动起来~

达到这个效果:http://www.html5china.com/html5games/mogu/index1.html

一、写html代码

  1. <body>         
  2.     <div id="container" style="border:1px solid; cursor:none; width:480px; height:320px;">         
  3.         <canvas id="canvas" width="480" height="320" >         
  4.         </canvas>         
  5.     </div>         
  6. </body>    

用ID为container 的DIV来获取鼠标移动画面的事件

canvas用来绘图

二、定义全局变量

  1. //全局变量             
  2. var backgroundForestImg = new Image();//森林背景图             
  3. var mushroomImg = new Image();//蘑菇图             
  4. var ctx;//2d画布             
  5. var screenWidth;//画布宽度             
  6. var screenHeight;//画布高度    

赋予全局变量值

  1. mushroomImg.src = "images/mushroom.png";//蘑菇             
  2. backgroundForestImg.src = "images/forest1.jpg";//森林背景图             
  3. ctx = document.getElementById('canvas').getContext('2d');             
  4. screenWidth = parseInt($("#canvas").attr("width"));             
  5. screenHeight = parseInt($("#canvas").attr("height"));     

三、定义蘑菇实例

由于在画布上的物体全部都有3个共同的属性:x、y坐标,素材image

所以我们定义一个公用的游戏物体

  1. //公用 定义一个游戏物体戏对象          
  2. function GameObject()          
  3. {          
  4.     this.x = 0;//x 坐标         
  5.     this.y = 0;//y 坐标         
  6.     this.image = null//图片         
  7. }        

为了方便拓展,定义一个公用的蘑菇

  1. //定义公用蘑菇Mushroom 继承游戏对象GameObject          
  2. function Mushroom() {};          
  3. Mushroom.prototype = new GameObject();//游戏对象GameObject    

定义一个我们使用到的具体蘑菇

  1. //蘑菇实例          
  2. var mushroom = new Mushroom();      

初始化蘑菇的位置和图片

  1. mushroom.image = mushroomImg;             
  2. mushroom.x = parseInt(screenWidth/2);             
  3. mushroom.y = screenHeight - 40;      

四、用canvas把蘑菇绘制出来

  1. //循环描绘物体          
  2. function gameLoop()          
  3. {          
  4.     //清除屏幕          
  5.     ctx.clearRect(0, 0, screenWidth, screenHeight);          
  6.     ctx.save();          
  7.     //绘制背景          
  8.     ctx.drawImage(backgroundForestImg, 0, 0);          
  9.     //绘制蘑菇          
  10.     ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);          
  11.     ctx.restore();          
  12.     }       

好了,到这里蘑菇也定义了,背景图也定义了,绘图也定义了,下面就开始整合上面的代码写一个完整的把蘑菇和背景描述在画布上

  1. <!DOCTYPE>     
  2. <html>     
  3. <head>     
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     
  5. <title>蘑菇动起来-html5中文网</title>     
  6. <!-- 要记得引用jquery-1.4.2.js -->   
  7. <script type="text/javascript" src="./js/jquery-1.4.2.js"></script>     
  8. <script type="text/javascript" >     
  9.     //全局变量      
  10.     var backgroundForestImg = new Image();//森林背景图      
  11.     var mushroomImg = new Image();//蘑菇      
  12.     var ctx;//2d画布      
  13.     var screenWidth;//画布宽度      
  14.     var screenHeight;//画布高度      
  15.           
  16.     //公用 定义一个游戏物体戏对象      
  17.     function GameObject()      
  18.     {      
  19.         this.x = 0;      
  20.         this.y = 0;      
  21.         this.image = null;      
  22.     }      
  23.           
  24.     //定义蘑菇Mushroom 继承游戏对象GameObject      
  25.     function Mushroom() {};      
  26.     Mushroom.prototype = new GameObject();//游戏对象GameObject      
  27.           
  28.     //蘑菇实例      
  29.     var mushroom = new Mushroom();      
  30.     //循环描绘物体      
  31.     function gameLoop()      
  32.     {      
  33.         //清除屏幕      
  34.         ctx.clearRect(0, 0, screenWidth, screenHeight);      
  35.         ctx.save();      
  36.         //绘制背景      
  37.         ctx.drawImage(backgroundForestImg, 0, 0);      
  38.         //绘制蘑菇      
  39.         ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);      
  40.         ctx.restore();      
  41.         }      
  42.     //加载图片      
  43.     function loadImages()      
  44.     {      
  45.         mushroomImg.src = "images/mushroom.png";//蘑菇      
  46.         backgroundForestImg.src = "images/forest1.jpg";//森林背景图      
  47.     }         
  48.     //初始化      
  49.     $(window).ready(function(){       
  50.         loadImages();              
  51.         ctx = document.getElementById('canvas').getContext('2d'); //获取2d画布         
  52.         screenWidth = parseInt($("#canvas").attr("width")); //画布宽度    
  53.         screenHeight = parseInt($("#canvas").attr("height"));      
  54.         mushroom.image = mushroomImg;      
  55.         mushroom.x = parseInt(screenWidth/2);// 蘑菇X坐标     
  56.         mushroom.y = screenHeight - 40;//蘑菇Y坐标       
  57.         setInterval(gameLoop, 10);      
  58.     });      
  59.     
  60.      
  61. </script>     
  62. </head>     
  63.      
  64. <body>     
  65.     <div id="container" style="border:1px solid; cursor:none; width:480px; height:320px;">     
  66.         <canvas id="canvas" width="480" height="320" >     
  67.         </canvas>     
  68.     </div>     
  69.        </body>     
  70. </html>    

蘑菇图片下载地址:http://www.html5china.com/html5games/mogu/images/mushroom.png

背景图片下载地址:http://www.html5china.com/html5games/mogu/images/forest1.jpg

你试着在支持html5的浏览器上运行上面代码试看~是不是蘑菇描绘出来了~

假如你能看到效果了,那祝贺你~你有了个很好的开端~

上面的步骤只是将蘑菇和场景绘出来了,那么接下来我们让他随鼠标动起来~

给DIV#container添加放上鼠标的事件

当鼠标放在DIV#container上面时,蘑菇的X轴坐标等与鼠标的X轴坐标

  1. //事件处理      
  2. function addEventHandlers()      
  3. {      
  4.     //鼠标移动则蘑菇跟着移动      
  5.     $("#container").mousemove(function(e){      
  6.         mushroom.x = e.pageX - (mushroom.image.width/2);      
  7.     });       
  8.           
  9. }    

我们只要在刚才的演示代码中的 $(window).ready(function(){ }); 里面加上addEventHandlers();就可以了,如下

  1. //初始化      
  2. $(window).ready(function(){     
  3.     addEventHandlers();//加上事件   
  4.     loadImages();         
  5.     ctx = document.getElementById('canvas').getContext('2d'); //获取2d画布         
  6.     mushroom.image = mushroomImg;      
  7.     screenWidth = parseInt($("#canvas").attr("width"));      
  8.     screenHeight = parseInt($("#canvas").attr("height"));      
  9.     mushroom.x = parseInt(screenWidth/2);      
  10.     mushroom.y = screenHeight - 40;       
  11.     setInterval(gameLoop, 10);      
  12. });    

你再运行代码试下,是不是蘑菇跟着鼠标动起来了~

第二回就讲到这了,第三回讲怎么绘制一只熊并让他滚动起来~

原文链接:http://www.html5china.com/course/20110101_898.html

【编辑推荐】

  1. 蘑菇与熊游戏开发***回(游戏分析)
  2. 蘑菇与熊游戏开发第三回(让熊动起来)
  3. 蘑菇与熊游戏开发第四回(熊碰撞边界处理)
  4. 蘑菇与熊游戏开发第五回(熊碰撞蘑菇处理)
  5. 蘑菇与熊游戏开发第六回(绘制奖品)
  6. 蘑菇与熊游戏开发第七回(熊碰到奖品处理)
  7. 蘑菇与熊游戏开发第八回(完善游戏)
责任编辑:张伟 来源: HTML5China
相关推荐

2012-05-21 10:53:30

HTML5

2012-05-21 13:18:12

HTML5

2012-05-21 14:08:21

HTML5

2012-05-21 13:11:51

HTML5

2012-05-21 10:40:13

HTML5

2012-05-21 13:32:45

HTML5

2012-05-21 13:25:49

HTML5

2012-09-03 09:21:51

2010-09-08 09:48:56

Gif播放教程Android

2020-06-04 15:24:33

微信苹果虚拟支付

2009-06-19 11:18:51

Factory BeaSpring配置

2022-06-07 09:00:32

PythonAI静态图片

2020-11-16 11:50:21

Python代码命令

2013-05-27 15:35:18

用友UAP移动应用移动平台

2019-05-21 14:18:09

PygamePython编程语言

2021-09-26 09:23:01

GC算法垃圾

2011-06-01 14:51:54

jQuery

2018-07-26 13:53:27

2010-05-21 11:03:51

统一通信系统

2011-09-15 17:36:29

Android应用Call Cartoo动画
点赞
收藏

51CTO技术栈公众号