入門4 演員的舞動

為了讓第一個演員動起來,我們需要引入Tween 對象。這個對象可以在一個時間段內(nèi)改變演員的屬性,比如演員的位置,這樣演員就動起來了。

var moonEnterTween = game.add.tween(moon).to({y : game.height / 2 }, 
            game.rnd.between(500, 1000), 'Bounce', true);

添加這段代碼到create方法里面,運行看看結(jié)果。啊,演員動起來了。它滑到了舞臺中央。Tween對象的to方法第一個參數(shù)是想要改變的演員的屬性,我們改變y坐標(biāo)。第二個參數(shù)是時間段,game.rnd.between(500, 1000)就是從500到1000毫秒中隨機一個數(shù)字。第三個參數(shù)是運動方式,這里選擇的是線性運動,可以選擇其它的方式比如Linear(線性的)等等。第四個參數(shù)用true表示馬上執(zhí)行。


6.gif

我們的演員應(yīng)該滿場跑動起來,不能輕易被擊中,那么就讓演員繼續(xù)動起來。我們實現(xiàn)一個方法,用來移動這個演員。

function moveMoon(moon) {
        moonTween = game.add.tween(moon).to({
            x : moon.width / 2,
            angle : -720
        }, (speed > 100 ? speed : 100 ), Phaser.Easing.Cubic.InOut, true);
        moonTween.yoyo(true, 0);
        moonTween.repeat(50, 0);
    }

方法的參數(shù)就是我們的演員,通過為演員再添加一個Tween 對象,來讓她動起來,只是這次我們改變的屬性是演員的x坐標(biāo)到屏幕最左邊她的一半寬度的地方,意思就是舞臺邊緣剛剛放下演員的地方。y坐標(biāo)不變,角度是-720。通過yoyo方法讓我們的演員反轉(zhuǎn)然后正轉(zhuǎn)。最后我們把添加演員的代碼放到一個方法里,并在這方法里添加觸發(fā)的代碼。

function addMoon() {
    var moon = game.add.sprite(0, 0, "1");
    moon.anchor.set(0.5); // 設(shè)置演員錨點為中心點
    var x = game.width - moon.width / 2;
    var y = -moon.height / 2;
    moon.x = x;
    moon.y = y;
    var moonEnterTween = game.add.tween(moon).to({y : game.height / 2 }, 
        game.rnd.between(500, 1000), 'Bounce', true);
    moonEnterTween.onComplete.add(moveMoon, this, 0, moon);
}

onComplete是Tween對象完成動作的信號,給它添加一個觸發(fā)事件,moveMoon是剛添加的方法,this是上下文,0是優(yōu)先級,moon是傳遞給方法的對象,這里是我們的演員。這樣子當(dāng)我們演員滑動完成后就觸發(fā)新的方法moveMoon,進而完成新的動作。最后在create中調(diào)用這個方法。

7.gif

本節(jié)教程代碼地址:
碼云
github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容