前言

在上一章phaser学习总结之phaser入门教程中,我们已经初步入门了phaser,并通过一个案例了解了phaser,现在我们需要对phaser中的对象进行讲解,本章需要讲解的是tween,即phaser中的补间动画,一起来学习一下吧!

参数详解

(1):from和to方法

语法:

from(properties [, duration] [, ease] [, autoStart] [, delay] [, repeat] [, yoyo])

To(properties [, duration] [, ease] [, autoStart] [, delay] [, repeat] [, yoyo])

参数:

properties:

类型:object

默认值:无

描述:包含要补间的属性的对象,例如Sprite.xSound.volume。作为JavaScript对象提供。

duration:

类型:number

默认值:1000

描述:此补间的持续时间(以毫秒为单位)。或者,如果Tween.frameBased为true,则表示应该经过的帧数

ease:

类型:function|string

默认值:null

描述:缓动功能。如果未设置,则默认为Phaser.Easing.Default,默认为Phaser.Easing.Linear.None,但可以覆盖

autoStart:

类型:boolean

默认值:false

秒速:是否自动播放,设置为true允许该补间自动开始。否则,调用Tween.start()

delay:

类型:number

默认值:0

描述:此补间开始之前的延迟(以毫秒为单位),默认为0,无延迟

repeat:

类型:number

默认值:0

描述:补间完成后是否应该自动重新启动?如果要使其永久运行,请设置为-1。这只会影响此单个补间,而不会影响任何链接的补间。

yoyo:

类型:boolean

默认值:false

描述:yoyos的补间将自动反转并自动向后播放。悠悠球不会触发Tween.onComplete事件,因此请监听Tween.onLoop

(2)yoyo方法

语法:yoyo(enable [, yoyoDelay] [, index])

参数:

enable:

类型:boolean

默认值:没有

描述:设置为true表示此补间,或设置为false禁用已激活的yoyo

yoyoDelay:

类型:number

默认值:0

描述:这是悠悠球开始之前要暂停的时间(以毫秒为单位)。

index:

类型:number

默认值:0

描述:如果此补间有多个子代,则可以定位到特定子代。如果设置为-1,它将对所有孩子设置yoyo

示例讲解

(1):Tween中from和to的使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tween中from和to方法的使用</title>
</head>
<body>
<script src="../js/phaser.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var config={
width:400,
height:400,
renderer:Phaser.AUTO,
antialias:true,
multiTexture:true,
state:{
preload:preload,
create:create,
update:update,
}
}
var game=new Phaser.Game(config);
function preload(){
game.load.image('pic','../img/phaser1.png');//加载图片
}
var sprite;
function create(){
game.stage.backgroundColor='#2384e7'; //设置背景颜色
sprite=game.add.sprite(game.world.centerX,game.world.centerY,'pic');
sprite.anchor.x=0.5;
sprite.anchor.y=0.5;
//使用tween.from,它会从上面运行到中间
game.add.tween(sprite).from({y:-100},1000,Phaser.Easing.Bounce.Out,true);
//使用tween.to
//game.add.tween(sprite).to({y:-1},2000,Phaser.Easing.Bounce.Out,true);
}
function update(){ }
</script>
</body>
</html>

Tween.from是指定动画开始的状态,Tween.to指定动画结束的状态

(2):Tween中yoyo方法的使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tween中yoyo方法的使用</title>
</head>
<body>
<script src="../js/phaser.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var config={
width:400,
height:400,
renderer:Phaser.AUTO,
antialias:true,
multiTexture:true,
state:{
preload:preload,
create:create,
update:update,
}
}
var game=new Phaser.Game(config);
function preload(){
game.load.image('space','../img/starfield.png',138,15);//加载图片
game.load.image('logo','../img/phaser1.png');//加载图片
}
function create(){
game.add.tileSprite(0,0,800,600,'space');//tile是瓦片的意思
var sprite=game.add.sprite(game.world.centerX,game.world.centerY,'logo');//将图片设置在中心
sprite.anchor.x=0.5;
sprite.anchor.y=0.5;
sprite.alpha=0.5;//设置透明度
var tween=game.add.tween(sprite).to({alpha:1},2000,'Linear',true,0,-1);
tween.yoyo(true,3000);//3s启动yoyo动画 }
function update(){ }
</script>
</body>
</html>

(3):Tween中delay方法的使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tween中delay方法的使用</title>
</head>
<body>
<script src="../js/phaser.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var config={
width:400,
height:400,
renderer:Phaser.AUTO,
antialias:true,
multiTexture:true,
state:{
preload:preload,
create:create,
update:update,
}
}
var game=new Phaser.Game(config);
function preload(){
game.load.image('pic','../img/town.png');//加载图片 }
var text;//显示文字
function create(){
var pic=game.add.image(game.world.centerX,game.world.centerY,'pic');
pic.anchor.x=0.5;
pic.anchor.y=0.5;
pic.alpha=0.1;//设置透明度
var style={font:'20px Arial',fill:'#ff0044',align:'center'};//设置字体,字体颜色,对齐方式
text=game.add.text(100,0,'2秒后显示',style);
var tween=game.add.tween(pic).to({alpha:1},2000,'Linear',true,2000);
//开始的回调方法
tween.onStart.add(started,this);
//结束的回调方法
tween.onComplete.add(completed,this);
}
function started(){
text.text='tween start';//设置文本
}
function completed(){
text.text='tween complete';//设置文本
}
function update(){ }
</script>
</body>
</html>

(4):Tween中loop方法的使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tween中loop方法的使用</title>
</head>
<body>
<script src="../js/phaser.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var config={
width:400,
height:400,
renderer:Phaser.AUTO,
antialias:true,
multiTexture:true,
state:{
preload:preload,
create:create,
update:update,
}
}
var game=new Phaser.Game(config);
function preload(){
game.load.spritesheet('ball','../img/balls.png',17,17);//加载图片 }
var ball;
var tween;
var bounces=10;
function create(){
ball=game.add.sprite(100,0,'ball',0);
//2.5延迟
tween=game.add.tween(ball).to({y:game.world.height-ball.height},1500,Phaser.Easing.Bounce.Out,true,2500,10);
//2.5秒后的开始回调函数
tween.onStart.add(onStart,this);
//2.5秒后的重复回调函数
tween.onLoop.add(onLoop,this);
//2.5秒的结束回调函数
tween.onComplete.add(onComplete,this);
}
function onStart(){
tween.delay(0);//将延迟设置为0
}
function onLoop(){
bounces--;
if(ball.frame===5){ //球的序列帧数
ball.frame=0;
}else{
ball.frame++;
}
}
function onComplete(){
game.add.tween(ball).to({x:800-ball.width},2000,Phaser.Easing.Bounce.Out,true);
}
function update(){ }
</script>
</body>
</html>

(5):Tween中repeat方法的使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Tween中repeat方法的使用</title>
</head>
<body>
<script src="../js/phaser.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var config={
width:400,
height:400,
renderer:Phaser.AUTO,
antialias:true,
multiTexture:true,
state:{
preload:preload,
create:create,
update:update,
}
}
var game=new Phaser.Game(config);
function preload(){
game.load.image('bg','../img/starfield.png',138,15);//加载图片
game.load.image('logo','../img/phaser1.png');//加载图片
}
function create(){
game.add.tileSprite(0,0,400,400,'bg');
var sprite=game.add.sprite(game.world.centerX,game.world.centerY,'logo');
sprite.anchor.x=0.5;
sprite.anchor.y=0.5;
sprite.alpha=0;//设置透明度
var tween=game.add.tween(sprite).to({alpha:1},2000,'Linear',true);
tween.repeat(10,1000);//重复10次,每次重复延迟1s
}
function update(){ }
</script>
</body>
</html>

参考资料:https://photonstorm.github.io/phaser-ce/Phaser.Tween.html#to

Tween使用示例:https://www.phaser-china.com/example-28.html

phaser学习总结之Tween详解的更多相关文章

  1. [深入学习Web安全](5)详解MySQL注射

    [深入学习Web安全](5)详解MySQL注射 0x00 目录 0x00 目录 0x01 MySQL注射的简单介绍 0x02 对于information_schema库的研究 0x03 注射第一步—— ...

  2. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  3. Asp.Net MVC学习总结之过滤器详解(转载)

    来源:http://www.php.cn/csharp-article-359736.html   一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...

  4. Linux学习之用户配置文件详解(十四)

    Linux学习之用户配置文件详解 目录 用户信息文件/etc/password 影子文件/etc/shadow 组信息文件/etc/group 组密码文件/etc/gshadow 用户信息文件/etc ...

  5. [转载]springmvc学习之@ModelAttribute运用详解

    spring学习之@ModelAttribute运用详解 链接

  6. expect学习笔记及实例详解【转】

    1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...

  7. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    [Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.And ...

  8. Activiti工作流学习之流程图应用详解

    Activiti工作流学习之流程图应用详解 1.目的  了解Activiti工作流是怎样应用流程图的. 2.环境准备2.1.相关软件及版本    jdk版本:Jdk1.7及以上 IDE:eclipse ...

  9. [转帖]Docker学习之Dockerfile命令详解

    Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...

随机推荐

  1. xcode7中搭建python开发环境

    1. 双击打开Xcode 2. 点击File->New->New Project 3. 在左边的面板选择Other,右边选择External Build Sytem,点击Next 4. 输 ...

  2. SDU暑期集训排位(2)

    A. Art solved by sdcgvhgj 3min 签到 B. Biology solved by sdcgvhgj 85min 暴力 C - Computer Science solved ...

  3. JOBDU 1027 欧拉回路

    题目1027:欧拉回路 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3620 解决:1847 题目描述:     欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条 ...

  4. poj 1661 Help Jimmy(记忆化搜索)

    题目链接:http://poj.org/problem?id=1661 一道还可以的记忆化搜索题,主要是要想到如何设dp,记忆化搜索是避免递归过程中的重复求值,所以要得到dp必须知道如何递归 由于这是 ...

  5. 逆向破解之160个CrackMe —— 030

    CrackMe —— 030 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  6. 010 深入理解Python语言

    目录 一.概述 二.计算机技术的演进 2.1 计算机技术的演进过程 三.编程语言的多样初心 3.1 编程语言有哪些? 3.2 不同编程语言的初心和适用对象 3.3 2018年以后的计算环境- 四.Py ...

  7. 实时统计每天pv,uv的sparkStreaming结合redis结果存入mysql供前端展示

    最近有个需求,实时统计pv,uv,结果按照date,hour,pv,uv来展示,按天统计,第二天重新统计,当然了实际还需要按照类型字段分类统计pv,uv,比如按照date,hour,pv,uv,typ ...

  8. fastjson使用-- @JSONField使用(转)

    @JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上. 我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会 ...

  9. springboot中动态修改logback日志级别

    springboot中动态修改logback日志级别 在spring boot中使用logback日志时,项目运行中,想要修改日志级别. 代码如下: import org.slf4j.Logger; ...

  10. .Ajax(async异步与sync同步)

    异步,不会阻碍代码的执行,它会等待所有的同步代码执行完毕后,再执行输出自己的同步结果.(原生js中,只有定时器,DOM,ajax三个东西是异步的.) 同步,代码只会从上到下依次执行,只要一步出错,接下 ...