实例介绍
【实例简介】
【实例截图】
【核心代码】
(function(){ var Game=window.Game=Class.extend({ init:function(id,resourseUrl){ this.resourseUrl=resourseUrl; //获得画布ctx对象 this.canvas=document.getElementById(id); this.ctx=this.canvas.getContext("2d"); //图片路径对象 this.RobjectTxt=null; //图片对象json this.Robject={}; //帧编号 this.f=0; this.actors=[]; //游戏帧编号 this.gt = 0; //鱼数组 this.fishArr=[]; this.senceNumber=0; //子弹数组 this.arrBullet=[]; //炮弹余量 this.bulletCount=10; //炮弹信号量 this.a = 0; //总分数 this.score=0; //背景音乐 this.bg_music=new Audio(); //加载资源 this.loadResource(); }, loadResource:function(){ var self=this; //加载图片累加器 var count=0; //设置页面初始图片加载文字 self.ctx.font="28px 微软雅黑"; self.ctx.textAlign="center"; self.ctx.fillText("图片正在加载中.....",300,self.canvas.height*(1-0.618)); //原生js Ajax请求 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){ //获得图片资源路径txt文件 self.RobjectTxt=JSON.parse(xhr.responseText); //图片总数 var imageAmount=_.size(self.RobjectTxt); //遍历图片资源路径txt文件,将图片对象设置完src属性并放入图片对象json中 for(var k in self.RobjectTxt){ self.Robject[k]=new Image(); self.Robject[k].src=self.RobjectTxt[k]; //监听图片加载事件 self.Robject[k].onload=function(){ count ; //在画布上显示图片加载进度 self.ctx.clearRect(0, 0, 800, 600); self.ctx.font="24px 微软雅黑"; self.ctx.textAlign="center"; self.ctx.fillStyle="white"; self.ctx.fillText("图片已经加载到" count "/" imageAmount,300,self.canvas.height*(1-0.618)); //判断是否加载完毕 if(count==imageAmount){ //开始游戏 self.start(); } } } } } } xhr.open("get",this.resourseUrl,true); xhr.send(null); }, start:function(){ var self=this; //new出场景实例 场景管理所有实例上 this.sence=new Sence(); this.sence.changeSense(self.senceNumber); this.timer=setInterval(function(){ self.f ; self.ctx.clearRect(0, 0, 800, 600); //场景管理所有实例update和render方法 self.sence.show(); self.ctx.font="26px 微软雅黑"; self.ctx.textAlign="left"; self.ctx.fillText("帧编号: " self.f, 20, 20); if(g.senceNumber==1){ g.gt = 0.04; } var h = parseInt(g.gt / 360); var m = parseInt((g.gt - parseInt(g.gt / 360) *360) / 60); var mm = parseInt(g.gt - h * 360 - m * 60); h = h < 10 ? "0" h : h ; m = m < 10 ? "0" m : m ; mm = mm < 10 ? "0" mm : mm ; g.ctx.fillText("游戏时间: " h " : " m " : " mm, 250, 70); }, 40); var self = this; } }) })() //计算随机数 function rnd(m,n){ return parseInt(Math.random()*(n-m) m); }
好例子网口号:伸出你的我的手 — 分享!
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)