上一篇有提到可以利用PIXI.Ticker
將定期渲染的機制加進場景,建立基礎的小動畫,接下來就來試試看利用PixiJS做個小動畫吧!
可以利用ticker.add()
將動畫邏輯加進場景中,而動畫的邏輯則用函式的形式,作為第一個參數傳入。
let app = new PIXI.Application({ width:800, height: 800 })
app.ticker.add(
//動畫邏輯function
)
我準備了一個圓形物件,放置於一個container中,預計製作放大縮小的動畫效果。
//建立場景
let app = new PIXI.Application({ width:800, height: 800 })
document.body.appendChild(app.view);
//在場景中建立container
const container = new PIXI.Container();
app.stage.addChild(container);
//建立圓形物件,並放入container中
let myObj = new PIXI.Graphics();
myObj.beginFill(0xffdd00);
myObj.drawCircle(400,400,400);
container.addChild(myObj);
//調整container位置與container軸心位置
container.x = app.screen.width / 2;
container.y = app.screen.height / 2;
container.pivot.x = container.width / 2;
container.pivot.y = container.height / 2;
接下來利用ticker.add()
設定動畫,利用DisplayObject的scale
屬性,運用邏輯運算來設定:在scale的數值為1(100%)的狀態時,進行減法運算產生縮小效果至0,數值往負數前進時,會從縮小變成放大效果,當scale數值被減去至-1(-100%)時,事實上形狀會與1(100%)相同,達成這個狀態時,調整為初始值1(100%),達成重複播放的效果。
(剛剛有進行container的定位調整,因此這邊的動畫邏輯將設定在container上)
app.ticker.add(()=>{
if(-1<container.scale.x && -1<container.scale.y){
container.scale.x = container.scale.x - 0.007
container.scale.y = container.scale.y - 0.007
}
else {
container.scale.x = 1
container.scale.y = 1
}
})