CreateJs-EaselJS精灵Sprite类和简明动画

一、EaselJS中Sprite类

EaselJS精灵Sprite类是用spritesheet实例显示一个帧或帧序列(即动画)。精灵片是一系列的图像(通常是动画帧)合并成一个单一的图像。例如,一个动画由8个100x100图像可以组合成一个400X200精灵表。

sprite结构:

Sprite ( spriteSheet  frameOrAnimation )

参数:

spritesheet,这包括源图像,帧的尺寸,和帧数据。

[frameOrAnimation] String | Number optional

最初播放的帧数或动画。

实例:

// 实例化  createjs.Sprite类,传入精灵spriteSheet参数

var instance = new createjs.Sprite(spriteSheet);

// 使用gotoAndPlay和gotoAndStop方法开启和结束动画

instance.gotoAndPlay("frameName");

instance.gotoAndStop("frameName");

重点:gotoAndPlay()和gotoAndStop()这两个方法很重要,就是唤起和结束精灵帧动画的方法。

二、EaselJS中Ticker类动画机制

EaselJS简明教程动画,动画是将静止的画面变为动态的艺术,由静止到动态的实现,主要依靠人眼的视觉残留效应。

通常来说动画分为两种:逐帧动画和补间动画

1.逐帧动画

逐帧动画把动画(例如人物动作)进行分解,然后绘制出连续的、具有代表性的动作,连续播放形成动画,逐帧动画适用于复杂的不连续的动画。

实现逐帧动画主要需要两个东西,动作关键帧和动起来的机制。

关键帧:

var data = {

images: ["images/runningGrant.png"],

frames: {width:50, height:50},

animations: {run:[0,4], jump:[5,8,"run"]}

};

var spriteSheet = new createjs.SpriteSheet(data);

var animation = new createjs.Sprite(spriteSheet, "run");

“动画”机制:

使动画动起来的机制,这里使用EaselJS的另一个类Ticker。Ticker的使用貌似下面代码

createjs.Ticker.addEventListener("tick", tick);

function tick(evt) {

//some code

}

Ticker的几个关键方法,setFPS、getFPS设置和获取帧频,setInterval、getInterval设置和获取时间间隔,setPaused、getPaused设置和获取暂停等,这些都是静态方法。

逐帧小demo:

扫码欣赏:

2.补间动画

补间动画,指我们给定动作的初始状态和结束状态,然后动画系统(例如动画软件)自动补齐中间状态,从而形成动画,补间动画适用于物体的移动、状态的改变等简单的动画。

三、实例代码

下面就让我们来做一个完整的实例吧!

创建Sprite类,传入精灵spriteSheet参数

逐帧动画,奔跑的小人

补间动画,让刚刚那个原地跑步的人,向前方跑动,单击时表示跳起

再加上控制小人是否运动的按钮

html结构:

您的浏览器不支持canvas,请使用现代浏览器。

CSS样式:

#canvas{background: #ffffff;}

#btn{width: 80px;height: 40px; margin-left: 440px;position: absolute;bottom: 5%;left: 50%;margin-left: -40px; border: none; border-radius: 5px;background: #ccc;}

JS:

引入easeljs文件

注意:为了保证更好的运行速度,请使用EaselJS 0.7.0及以上的版本。

var w = document.documentElement.clientWidth,

h = document.documentElement.clientHeight;

var  stage=new createjs.Stage("canvas"),

container=new createjs.Container(),

// 定义SpriteSheet 参数

data={

/*定义动画*/

"animations":{

// start, end, next, speed

"run": [0, 25, "run",1.5],

//start,end,next,speed开始帧,结束帧,下一个动作,运行速度

"jump": [26, 63, "run",1.5]

},

/*定义图像路径,使用图像或图像的url列表*/

"images": ["images/runningGrant.png"],

/*定义框架:

简单的方法来定义框架,只需要连续帧大小(框架的大小就是单个帧的图片大小)*/

"frames":{

//单个帧的高度,宽度,就是png图片里面那么多个帧一个帧的大小

"height": 292.5,

"width":165.75,

//相对于原始偏移的位置

"regX": 0,

"regY": 0,

//帧数

"count": 64

}

};

//适配用

stage.canvas.width = w;;

stage.canvas.height = h;

//实例精灵动画集

var move = new createjs.SpriteSheet(data);

//SpriteSheet类设置帧和动画,里面的run为开始的动画

var grant = new createjs.Sprite(move,"run");

//设置在舞台中的位置

grant.x=20;

grant.y=120;

// 把动画放到舞台上,创建一个间隔事件侦听,进行动画

container.addChild(grant);

stage.addChild(container);

createjs.Ticker.setFPS(20);

createjs.Ticker.addEventListener("tick",tick);

//speed用来做加速度

var speed=1;

function tick(){

if(!createjs.Ticker.getPaused()){

grant.x+=3*speed;

stage.update(); //更新舞台

speed+=.01;

(grant.x>stage.canvas.width) && (grant.x=0,speed=1)

}

}

//侦听鼠标事件

stage.addEventListener("stagemousedown",handleClick);

function handleClick(){

grant.gotoAndPlay("jump");

}

//设置按钮暂停

var btn=document.getElementById("btn");

btn.addEventListener("click",togglePause);

function togglePause(){

//grant.gotoAndStop();

//其实实现暂停和运动就是false和true切换

var paused = !createjs.Ticker.getPaused();

createjs.Ticker.setPaused(paused);

btn.value = paused ? "运动play" : "暂停pause";

}

stage.update(); //更新舞台

DEMO演示:

html5 精灵动画,H5案例分享:CreateJs-EaselJS精灵Sprite类和简明动画相关推荐

  1. H5案例分享—你的数学是语文老师教的吗?

    教育类H5游戏已经被广泛应用,很多教育软件都采用H5游戏形式向玩家传递知识,金豆微游戏为大家倾情奉献H5数学游戏,测一测你的数学能力有多高,众多的数学算术题,你能答对几题呢,赶紧来挑战一下吧! 游戏需 ...

  2. html5源码 母亲节,母亲节H5:非常有创意的5款母亲节H5案例分享

    节日类 有些事情是无法用言语表达的,就比如对母亲的爱,我相信很少有人会经常对母亲说:我爱你,这也是因为国人太过于腼腆的原因.既然没办法用言语来表示对母亲的爱,或许下面这些母亲节H5案例是一个不错的表达 ...

  3. 移动端 html5领奖页面,H5案例|穿上领奖服,见证我的荣耀时刻

    原标题:H5案例|穿上领奖服,见证我的荣耀时刻 H5三大新风尚:人脸融合.重力感应.场景布置.今天的H5案例来自最新的人脸融合技术,更多精彩案例关注无非创意微信公众号:wufaecy 一.穿上领奖服, ...

  4. H5案例分享:html5移动开发细微之美

    html5移动开发细微之美 1.H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=dev ...

  5. ae制h5文字动画_H5案例分享:CSS3 Animation动画

    CSS3 Animation动画 一.@keyframes CSS3中的Animation动画主要的组件是@keyframes,@keyframes这个规则是用来创建动画的.将@keyframes当作 ...

  6. html定位的实例,H5案例分享:基于浏览器的HTML5地理定位

    基于浏览器的HTML5地理定位 地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML ...

  7. html5页面适配方法,H5案例分享:HTML5移动页面适配方法

    HTML5移动页面适配方法 之前做过PC页面时考虑最多的是兼容,这是因为浏览器之间的差异引起的.而移动端是基本没有"兼容"的问题了,全是CSS3,是不是很开心,但是开心早了,因为适 ...

  8. html5 360 重力 感应,H5案例分享:html5重力感应事件

    html5重力感应事件 一.手机重力感应图形分析 1.设备围绕z轴的旋转角度为α,α角度的取值范围在[0,360). 设备在初始位置,与地球(XYZ)和身体(XYZ)某个位置对齐. 设备围绕z轴的旋转 ...

  9. html5 调用本地街景,H5案例分享:在移动端调用腾讯街景

    在移动端调用腾讯街景 腾讯地图街景组件可以通过多种方式调起,来展示3D街景信息. 腾讯街景API,是构建在v2版本上的全新应用接口,对于目的地,可以让用户足不出户,得到更直观.更真切 的身临其境的体验 ...

最新文章

  1. rem布局在部分手机上显示不正常问题
  2. [转]numpy性能优化
  3. C++ 模板中定义友元
  4. mysql ( )连接_MySQL中concat函数(连接字符串)
  5. php 模数 指数 公钥生成_php实现JWT认证
  6. kafka相关知识点总结
  7. java增删改查代码_低代码开发平台
  8. 壳管式热交换器行业调研报告 - 市场现状分析与发展前景预测
  9. 从Python字符串中剥离字母数字字符以外的所有内容
  10. XShell安装配置教程
  11. MySQL 安装 5.0
  12. Android UI 测试指南之 Espresso
  13. 【日常问题解决】docker 映射端口出错
  14. 计算机打印步骤,如何将打印机连接到计算机将打印机连接到计算机的步骤[图形教程]...
  15. UR机器人(14)-解决故障
  16. FFmpeg 集成 x265 编译及解码
  17. 数据结构——有序链表的合并,链表实现一元多项式相加
  18. Mendix低代码平台,唯快不破
  19. 域名里gTLD、new gTLD、ccTLD的含义之间的关系
  20. win10无法连接校园网问题

热门文章

  1. 怎样做研究(五) 刘挺
  2. 原来“李”是这样的蜂糖李
  3. 从0开始编程学习历程Day1
  4. el-input 使用 回车键会刷新页面的问题
  5. LaTeX写UESTC毕业论文遇到的问题集锦
  6. 北伐日记 Vol.17-治病救人
  7. C++作业之参加宴会问题
  8. Adjustable/foldable Weight workout Bench for weight lifti 8 Adjustable Angles strength training Weig
  9. MCMC模型原理解读
  10. C++数组对角线求和