iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Modern Web

動起來吧!Web Motion 動態特效網頁學習日記系列 第 25

學習筆記:一起進入 PixiJS 的世界 (六)

  • 分享至 

  • xImage
  •  

上一篇有提到可以利用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
  }
})

上一篇
學習筆記:一起進入 PixiJS 的世界 (五)
下一篇
JS Library 學習筆記:Three.js 初見面,在2D畫面創造三維世界 (一)
系列文
動起來吧!Web Motion 動態特效網頁學習日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言