说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

开源HTML5游戏引擎Frozen背后的技术

HTML文档下载 WORD文档下载 PDF文档下载
Frozen是一款开源的HTML5游戏引擎,它诞生的目的就是为了将构建现代Web App中使用的技术,应用到游戏开发当中。那在实现这一目的时,有哪些技术在Frozen背后支持着呢?文中就为大家揭晓这些技术及它们所起的作用。

Frozen是一款开源的HTML5游戏引擎,通过工具和模块化实现了其简单易用和快速开发的优点,而且大多的主流浏览器皆支持这一游戏引擎。它诞生的目的就是为了将构建现代Web App中使用的技术,应用到游戏开发当中,比如AMD模块、依赖管理、构建进程以及项目脚手架。


Frozen背后的技术

那么,Frozen在实现这一目的的同时,存在其背后的技术又有哪些?下面要介绍的就是这些技术及它们在构建Frozen时所起到的作用:

  • Node.js和npm:作用于构建进程和开发工作流的依赖管理。
  • Grunt:开发工作流的task runner,允许单一入口点进行开发配置。
  • Volo:负责客户端的依赖管理和项目脚手架工具。
  • Lo-Dash:库内所使用的低级工具库。
  • Hammer.js:多点触控库,用于鼠标/触摸/指针事件标准化和手势。
  • dcl:用于生成构造函数和提供AOP的简便方法。
  • Box2d:用于游戏中的物理计算。
  • Dojo:用于AMD载入器和一些库内的公共模块,Dojo构建进程是用来构建一个单独的JS文件。
  • JSDoc:生成代码文档。
  • Jasmine:使用Jasmine行为驱动,拥有灵巧而明确的语法可以让你轻松的编写测试代码。
  • AMD:所有的模块都是使用AMD编写,且单层包括一个AMD模块加载器。

代码示例:

GameCore:

require(['frozen/GameCore'], function(GameCore){  // game state  var x = 0;  var y = 0;  //setup a GameCore instance  var game = new GameCore({    canvasId: 'canvas',    draw: function(context){      context.clearRect(0, 0, this.width, this.height);      context.fillRect(x, y, 50, 50);    },    update: function(millis){      x += 1;      y += 1;    }  });  //launch the game!  game.run();});
InputManager:

require(['frozen/GameCore', 'dojo/keys'], function(GameCore, keys){  var x = 100;  var y = 100;  var speed = 2.5;  //setup a GameCore instance  var game = new GameCore({    canvasId: 'canvas',    draw: function(context){      context.clearRect(0, 0, this.width, this.height);      context.fillRect(x, y, 50, 50);    },    initInput: function(){      //tells the input manager to listen for key events      this.inputManager.addKeyAction(keys.LEFT_ARROW);      this.inputManager.addKeyAction(keys.RIGHT_ARROW);      this.inputManager.addKeyAction(keys.UP_ARROW);      this.inputManager.addKeyAction(keys.DOWN_ARROW);    },    update: function(millis){      //just an example showing how to check for presses, could be done more effeciently      if(this.inputManager.keyActions[keys.LEFT_ARROW].isPressed()){        x-= speed;      }      if(this.inputManager.keyActions[keys.RIGHT_ARROW].isPressed()){        x+= speed;      }      if(this.inputManager.keyActions[keys.UP_ARROW].isPressed()){        y-= speed;      }      if(this.inputManager.keyActions[keys.DOWN_ARROW].isPressed()){        y+= speed;      }    }  });  //launch the game!  game.run();});
ResourceManager:

require(['frozen/GameCore', 'frozen/ResourceManager'], function(GameCore, ResourceManager){  var x = 0;  var y = 0;  var speed = 1;  //setup a ResourceManager to use in the game  var rm = new ResourceManager();  var backImg = rm.loadImage('images/background.png');  var nyan = rm.loadImage('images/nyan.png');  //setup a GameCore instance  var game = new GameCore({    canvasId: 'canvas',    resourceManager: rm,    draw: function(context){      context.drawImage(backImg, 0, 0, this.width, this.height);      context.drawImage(nyan, x, y);    },    update: function(millis){      x += speed;      y += speed;    }  });  //launch the game!  game.run();});
传送门:Frozen官网、mobilehub主页

看Java技术基础的eBay如何评价他们的Node.js首次尝鲜 Jolla发布首款Sailfish系统手机 无缝兼容Android应用 NPD:全球智能手机出货量2013年将首次超过功能手机 聚合数据左磊:不走寻常路 做国内最好的数据聚合平台 从程序员到软件商 需要注意些什么? 共享软件海外营销策略与实战(上海站) 直接拿来用!最火的Android开源项目(完结篇) 一步加入云生态系统 参加第五届中国云计算大会的十大理由 传苹果iOS7将深度整合Flickr 用户受益最大 Chrome 27来了:页面加载快5% 可同步数据到Google Drive 微软发布新一代游戏主机Xbox One 搭配全新Kinect 2.0体感系统 Unity游戏引擎向iOS与Android开发者免费 Twitter获“下拉刷新”专利 开发者仍可自由使用 复杂产品的响应式设计【流程篇】 使用Javassist库为Bytecode Instrumentation开发JVM Agent 内容解析创业公司Stremor推出4款API 2013中国云计算榜单之三:174家云应用服务商,繁花似锦! 盘点各大云服务提供商:麦当劳=AWS,汉堡王=? BlackBerry Jam亚洲开发者大会9月将在香港开幕 把服务器搬进来:Splashtop在中国搭建Bridging Cloud Web框架全对比第五期 新增Windows环境 前Tumblr首席开发者回忆录:一个人也能开发出好产品 测试者和开发者,为何我们不能友好地相处? 讲师秀之11:何刚谈京东的云机遇 讲师秀之10:武汉大学张焕国教授,可信计算是云计算之成败关键 【上海直播】Windows Azure+世纪互联:中国云计算“烈火烹油” 最新版Chrome浏览器推出全新语音搜索功能 惠普第二财季净利润同比下滑32% PC和服务器销售不佳 讲师秀之11:网易汪源的成长故事 PPT集萃(三):六位国内技术大牛分享巨型平台的打造与应用 聚焦全球移动市场:创新以色列 科技巨头的倾慕之地 jbuilder8 & sqlserver2000 数据库连接问题 编译例子代码出错 如何把动态生成的表里的内容保存下来? 请问如何修改weblogic服务检测信息? sql语句问题 在线听mp3,怎样实现歌曲连续播放? 这么常见的问题为什么没人回答?(EJB--分布式数据库) Zez、大家都来帮我看看,还没解决呢!?!??!?!? 如何跟踪应用程序在数据库中的执行? c#中,有没有“浏览控件”??? 如何在9x和NT系统下不通过额外的软件隐藏驱动器和文件夹? 可以这样理解Container吗? datagrid分页问题 求助?Microsoft Visual Studio .NET 2003 开发软件问题? dbgrid的数据表中怎样实现多行记录的删除? windows 2000 网络问题 一个循环查询的存储过程问题 数据转换的中文乱码问题 jive安装数据库配置问题? 哪里错了?好像和游标有关系。 我的ComboBox用的是Drop List模式,为什么会出现List Box拉不下来的情况? 如何将exe的安装文件转成msi格式 关于sql语句出错信息 gei fen 用过winrunner的高手请进,100征求解答 一个问题 如何将以pdf为扩展名的文件里的文字转换成可以编辑的文字 为什么中文可以换行显示,英文不可以呢? 全局函数放在那里 大家聊聊远程控制的优缺点!!!! 怎样用jsp做广播通知?--在线等 如何用不是SA的账户去激活SA级的作业? 关于execl向数据库复制的问题 >一起学习:VFP右键功能!< Tdatabase组件的应用 请问这个检索的SQL语句怎么写? 这样是否就一定安全了,高手进 为什么直接删除不行 asp.net问题,马上给分 在线请教各位一个简单的问题--请问oracle8哪里有的下栽,急!!!!!!! 谁给我Beyond 2003演唱会下载地址! 为什么同一存储文件的程序在win2000个人版下出现:"存储文件时的共享违例"但是在win2000 server下没有,请教各位大师 用什么程序,把用户的安全性调到最低(可以出现警告对话框)??? 在线等待,马上揭贴 谁知到哪里有下载Jbuilder啊。。 如何在Win2000下注册服务程序呢?分不够再加 请问:如何解决“JDBC 服务器”配置不受支持的问题。 万分火急!请大侠指教(100分立即给) 如何在窗体上动态加载图标? MM明天生日放分庆祝(一) 如何进入Java的门? APS.NET下Excel调用:如何让服务器端只运行一个Excel实例?如何结束Excel进程? Can you lease advise i am a boy 我搞不懂英语用法的 位置 告诉我 语法书里那里有 哪个讲解i am a boy 我搞不懂英语用法的 位置 告诉我 语法书里那里有 位置的讲解 是 动词句型吗? bi qie mie san jie na在蒙古语中是什么意思 a chinese government building的中文 I'll never no regret to choose you,becayse you are my all 有暑假打算去北京新东方学外语的吗 select的 名词与形容词,fluent的名词与动词,approve的名词与形容词,nature的形容词与动词要简洁! 2004哪个中国国家领导人逝世? 为什么中央领导人去世后,遗体都要放在青松翠柏丛中?有什么象征意义吗? lifeline .是什么意思?谢谢阿 , 我刚刚学了定于从句,需要很多定于从句的练习,附加答案,谢谢最好要简单一点的 女子给骗子汇钱逼停出租车 的哥及时中杭州国际人才交流与合作大会明天开幕 多项违纪 孙杨被处停赛、停训、暂停一浙江杭州等地连续雾霾 “最美马拉松”“海龟”与“土鳖”结合 浙江发展关键金华房地产投资增速连续七个月居全省首张高丽在上海浙江调研:东部地区要带头杭州欲从钱塘江引风进城吹走灰霾“国家记忆”美国档案馆二战缅印战场影浙江省政协公开征集2014年重点履职日空自航空展开幕 蓝色冲击波进行飞行资讯 | 如何把一部“炮灰”电影做到资讯 | 05超女三甲启动芒果TV 告诉你五个方法,一眼辨别出烂片解析卫视跨年战:TFBOYS、冰晨恋成年人必看10大职场技法最悲催首富、最奇葩公告、最慷慨同学,重磅!中国军方大动作 意味着什么?iPhone 7 Plus的规格、功为什么程序猿喜欢在深夜工作?原因万万100个人里面只有3个人能看出来,你25岁上下的你,现在混得怎么样?豆瓣
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘