-
HTML5游戏开发引擎,初识CreateJS
v准备工作
1.进入createjs首页:
首页有几个tab页,有EASEJS、TweenJS、SoundJS、PrloadJS、ZOE五种.(最新的官网好像没有ZOE的tab页了,不过在http://createjs.com/downloads下载页面的最下面还是可以找到下载的。)
- EASEJS:用来处理HTML5的canvas
- TWEENJS:用来处理HTML5的动画调整和javascript属性
- SOUNDJS:用来帮助简化处理音频相关的API
- PRELOADJS:管理和协调程序加载项的类库
- ZOE:将SWF动画导出为EaseIJS的sprite的工具
2.首页解析:
3.进入下载页:http://createjs.com/downloads
因为这篇博客主要介绍HTML5游戏开发的引擎canvas,所以我们下载EASEJS就可以了。
4.帮助文档:
帮助文档里有很多类的介绍,还有对应类的方法、属性、事件的介绍。不过是英文版本的,暂时还没有找到比较好的中文的版本。ps:如果英文比较差的园友,那就只能用web工具强硬翻译了。具体web工具翻译页面的方法可以看我之前的一篇博客:谷歌/微软/必应web页面免费翻译插件
5.引入主要JS:
这个文件是我们需要引入的js文件。
回到顶部
v简单demo
1.html代码:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>First Canvas for CNBlogs</title> <script src="EaselJS-0.8.1/lib/easeljs-0.8.1.min.js"></script> </head> <body> <canvas id="canvas" width="500" height="500"></canvas> <script src="Scripts/Index.js"></script> </body> </html>
2.js代码:
var canvas; var stage; var txt; var count = 0; window.onload = function () { canvas = document.getElementById("canvas"); // 创建一个舞台对象 stage = new createjs.Stage(canvas); txt = new createjs.Text("Hello CNBlogs->", "20px Arial", "#ff7700"); stage.addChild(txt); createjs.Ticker.addEventListener("tick", tick); } function tick(e) { count++; txt.text = "Hello CNBlogs->" + count + "☺"; stage.update(); }
3.运行效果:
回到顶部
v鼠标经过特效
1.html代码:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>First Canvas for CNBlogs</title> <script src="EaselJS-0.8.1/lib/easeljs-0.8.1.min.js"></script> </head> <body> <canvas id="canvas" style="border:1px #000 solid;" width="1000" height="500"></canvas> <script src="Scripts/Flash.js"></script> </body> </html>
2.js代码:
var canvas; var stage; var img = new Image(); var sprite; window.onload = function () { canvas = document.getElementById("canvas"); // 创建一个舞台对象 stage = new createjs.Stage(canvas); stage.addEventListener("stagemousedown", clickCanvas); stage.addEventListener("stagemousemove", moveCanvas); var data = { images: ["cnblogsLogo.png"], frames: { width: 20, height: 20, regX: 10, regY: 10 } } // 关于EaselJS的一些属性或者方法大家可以根据对应的api文档熟悉熟悉。 //例如Sprite可以在这里找到 // file:.../EaselJS-0.8.1/docs/EaselJS_docs-0.8.1/classes/Sprite.html sprite = new createjs.Sprite(new createjs.SpriteSheet(data)); createjs.Ticker.setFPS(20); createjs.Ticker.addEventListener("tick", tick); } function tick(e) { var t = stage.getNumChildren(); for (var i = t-1; i >0; i--) { var st = stage.getChildAt(i); // 设置单位帧的位置 st.vY += 2; st.vX += 1; st.x += st.vX; st.y += st.vY; // 设置大小变形 st.scaleX = st.scaleY = st.scaleX + st.vS; // 设置透明度 st.alpha += st.vA; if (st.alpha <= 0 || st.y > canvas.height) { // 如果超标则移除当前的 stage.removeChildAt(i); } } // 每做一次操作,需要对舞台一次更新 stage.update(e); } function clickCanvas(e) { // 设置鼠标点击出现的图案多 addS(Math.random() * 200 + 100, stage.mouseX, stage.mouseY, 2); } function moveCanvas(e) { // 设置鼠标经过出现的图案少 addS(Math.random() * 2 + 10, stage.mouseX, stage.mouseY, 1); } // addS方法中所有小数或者随机数都是可以根据具体需求随意设置的, function addS(count,x,y,speed) { for (var i = 0; i < count; i++) { // 关于sprite.clone方法文档的介绍是,返回的是序列的实例, // 所以每个实例对象都可以用这个方法控制 var sp = sprite.clone(); // 设置图标出现位置 sp.x = x; sp.y = y; // 利用随机数控制图标随机亮度 sp.alpha = Math.random() * 0.5 + 0.5; // 设置大小 sp.scaleX = sp.scaleY = Math.random() + 0.3; // 设置曲线 var a = Math.PI * 2 * Math.random(); //设置速度 var v = (Math.random() - 0.5) * 30 * speed; sp.vX = Math.cos(a) * v; sp.vY = Math.sin(a) * v; sp.vS = (Math.random() - 0.5) * 0.2; // scale sp.vA = -Math.random() * 0.05 - 0.01;// alpha stage.addChild(sp); } }
3.运行效果:
4.源码下载:
https://github.com/toutouge/WebProject/tree/master/FirstEaselJSCanvas
回到顶部
v博客总结
对于HTML5优秀的JS类库或者是引擎框架还有很多,如果你有什么好的可以拿出来分享一下。
作 者:请叫我头头哥
出 处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式