iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 16
0
Modern Web

再談 PixiJS,那些先前不一定有提到的部分與地雷系列 第 16

[Re:PixiJS - Day16] 在手機上實作擼來擼去的互動

PixiJS 註冊 pointerdown事件 時,無論是 PC 或手機版,收到事件的 原始事件 都是原生的 PointerEvent
[ Demo ]

box.on('pointerdown', (e)=>{
	console.log(e);
	console.log(e.data.originalEvent);
	console.log(e.data.originalEvent.constructor);
});
- pointerEvent() { [native code] } 指的是此為 瀏覽器原生 事件

想玩的 onmouseout / onmouseover 行為:

PC 版可以這樣互動:
[ Demo ]

手機版即使註冊了 pointerover / pointerout 事件,也不會在手指碰到畫面並移動到物件上時觸發,
要使用 點擊觸發


自己寫滑入滑出的判斷:

boxHit.on('pointermove', function(e){
  // 透過座標取得目前互動的物件是哪個
  var hit = app.renderer.plugins.interaction.hitTest(e.data.global);
  if(hit){
    var target = hit.parent;  
    if( currentInteractiveTarget !== target ){
      currentInteractiveTarget = target;
      touchHandler();
    }
  }else{
    if( currentInteractiveTarget !== null ){
      currentInteractiveTarget = null;
      touchHandler();
    }
  }
});

// 取得目前正在互動的物件後,就能控制互動中的物件 / 非互動中的物件
function touchHandler(){
  //...
};
這段程式碼昨天出現過,但因為要討論的不是 透過游標取得物件 ,因此僅是帶過

[ Demo ]


其他會觸發的事件:

定義在 DisplayObject:當可視物件發生清單上的行為時,會觸發事件


added事件 舉例,當物件放入容器時觸發:

[ Demo ]

// 須先註冊相對應事件,不然不會觸發
bunny.on('added', ()=>{
	console.log('bunny added');
});
app.stage.addChild(bunny);

今天討論的效果我實際上想了滿久、也不確定是否可執行
試做出來時還滿開心的


上一篇
[Re:PixiJS - Day15] pointermove 事件與不同手機間的差異
下一篇
[Re:PixiJS - Day17] 中文文字 換行問題
系列文
再談 PixiJS,那些先前不一定有提到的部分與地雷45

尚未有邦友留言

立即登入留言