在上一章phaser學習總結之phaser入門教程中,咱們已經初步入門了phaser,並經過一個案例瞭解了phaser,如今咱們須要對phaser中的對象進行講解,本章須要講解的是tween,即phaser中的補間動畫,一塊兒來學習一下吧!javascript
類型:objecthtml
默認值:無java
描述:包含要補間的屬性的對象,例如Sprite.x
或Sound.volume
。做爲JavaScript對象提供。git
類型:numbergithub
默認值:1000函數
描述:此補間的持續時間(以毫秒爲單位)。或者,若是Tween.frameBased
爲true,則表示應該通過的幀數oop
類型:function|string學習
默認值:null字體
描述:緩動功能。若是未設置,則默認爲Phaser.Easing.Default,默認爲Phaser.Easing.Linear.None,但能夠覆蓋動畫
類型:boolean
默認值:false
秒速:是否自動播放,設置爲true
容許該補間自動開始。不然,調用Tween.start()
類型:number
默認值:0
描述:此補間開始以前的延遲(以毫秒爲單位),默認爲0,無延遲
類型:number
默認值:0
描述:補間完成後是否應該自動從新啓動?若是要使其永久運行,請設置爲-1。這隻會影響此單個補間,而不會影響任何連接的補間。
類型:boolean
默認值:false
描述:yoyos的補間將自動反轉並自動向後播放。悠悠球不會觸發Tween.onComplete事件,所以請監聽Tween.onLoop
類型:boolean
默認值:沒有
描述:設置爲true表示此補間,或設置爲false禁用已激活的yoyo
類型:number
默認值:0
描述:這是悠悠球開始以前要暫停的時間(以毫秒爲單位)。
類型:number
默認值:0
描述:若是此補間有多個子代,則能夠定位到特定子代。若是設置爲-1,它將對全部孩子設置yoyo
<!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指定動畫結束的狀態
<!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>
<!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>
<!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>
<!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