Class: Hook
hook 変数として negl からインポートして使用することができます。
取得方法
import { hook } from "negl";
// or
window.negl.hookSince
1.0.0
Hierarchy
-
HookType↳
Hook
Table of contents
Methods
Methods
off
▸ off<T>(hook, callback, option?): void
onでフックに登録したコールバックを削除します。
// コールバック関数
function logTick(world) {
console.log(world.tick);
}
// hook.RENDERのフックにコールバック(logTick)を登録
hook.on(hook.RENDER, logTick);
setTimeout(() => {
// hook.RENDERのフックからコールバック(logTick)を削除
hook.off(hook.RENDER, logTick);
}, 3000); // 3秒後
// 3秒間`tick`の値がログに出力される。Type parameters
| Name | Type |
|---|---|
T | extends keyof HookArgsMap |
Parameters
| Name | Type |
|---|---|
hook | T |
callback | HookCallback<HookArgsMap[T]> |
option | HookOptions |
Returns
void
on
▸ on<T>(hook, callback, option?): void
フックに紐づけたい(コールバック)関数の登録を行います。 フックに紐づけられた関数は特定の操作、またはイベントが発生したタイミングで実行されます。 また、フックを削除したい場合は off を使用してください。
hook
フックタイプの種類は以下の通りです。
| フックタイプ | 発火タイミング | コールバックの引数 |
|---|---|---|
| BEFORE_PAGE_INIT | Page モジュールのデフォルト関数実行前 | Negl |
| MOUSEMOVE | マウスが動いている間連続的に発火 | mouse |
| MOUSE_MESH_ENTER | マウスがメッシュに入った時 | { mesh (opens in a new tab), mouse, ob, meshUI } |
| MOUSE_MESH_HOVER | メッシュにホバーしている時 | { mesh (opens in a new tab), mouse, ob, meshUI } |
| MOUSE_MESH_LEAVE | マウスがメッシュから出た時 | { mesh (opens in a new tab), mouse, ob, meshUI } |
| MOUSE_MESH_CLICK | マウスがメッシュをクリックした時 | { mesh (opens in a new tab), mouse, ob, meshUI } |
| SCROLL | スクロールしている時 | scroller |
| RENDER | 毎フレーム(requestAnimationFrame) | world |
| RESIZE | 画面サイズが変わっている間連続的に発火 | viewport |
| RESIZE_DELAY | 画面サイズの更新が終了した時 | viewport |
| T_INIT | ページトランジションの初期化時 | {}*空のオブジェクト |
| T_BEGIN | ページトランジションの開始時 | state |
| T_NEXT_DOM_BEFORE | 次のページのDOMが挿入される前 | state |
| T_BOTH_DOM_EXIST | 次のページのDOMにアクセス可能な状態 | state |
| T_BOTH_OB_EXIST | 次のページのObオブジェクトがアクセス可能な状態 | state |
| T_END | ページトランジション終了時 | state |
| T_ERROR | ページトランジションでエラーが出た時 | state |
| ERROR | negl 内でエラーが発生した時 | Errorオブジェクト |
callback
フックに登録したコールバック関数がイベント発火のタイミングで実行されます。
option
オプションはオブジェクトで渡します。以下のプロパティが設定可能です。
| プロパティ | 型 | 初期値 | 役割 |
|---|---|---|---|
| type | string | base | トランジションのタイプを設定します。(T_*から始まるフックでのみ使用) |
| priority | number | 0 | 同じ種類のフックに複数のコールバックが登録された場合に、priorityが大きい順番でフックが実行されます。 |
| once | boolean | false | trueの場合、一度実行されたフックは自動的に削除されます。 |
使用例
import { hook } from "negl";
// マウスがメッシュに入った時に一回発火(
hook.on(hook.BEFORE_PAGE_INIT, (negl) => {
console.log(negl); // neglをログに出力
})
// マウスがメッシュに入った時に一回発火(HTMLタグに`data-interactive`を要付与)
hook.on(hook.MOUSE_MESH_ENTER, ({ mouse }) => {
console.log(mouse.getClipPos()); // マウス位置をクリップ座標でログに出力
})
// マウスがメッシュに入った時に一回発火(HTMLタグに`data-interactive`を要付与)
hook.on(hook.MOUSE_MESH_ENTER, ({ mesh }) => {
mesh.scale.set(2,2,1); // マウスが重なった `mesh` をx,y軸方向に2倍に拡大
})
// マウスがメッシュから出た時に一回発火(HTMLタグに`data-interactive`を要付与)
hook.on(hook.MOUSE_MESH_LEAVE, ({ mesh }) => {
mesh.scale.set(1,1,1); // マウスが出た `mesh` を元の大きさに戻す
});
// マウスをクリックした時に発火(HTMLタグに`data-interactive`を要付与)
hook.on(hook.MOUSE_MESH_CLICK, ({ mesh }) => {
// クリックしたメッシュを右方向に 100 移動
mesh.position.x += 100;
});
// 注意) MOUSE_MESH_* のフックはHTMLタグに`data-interactive`を付与してください。
// <img data-webgl="some-effect" data-tex-1="/example.jpg" data-interactive />
// スクロール中に発火
hook.on(hook.SCROLL, scroller => {
const { delta } = scroller;
console.log(delta.x, delta.y); // スクロールの変化量をログに出力
});
// 毎フレームの処理
hook.on(hook.RENDER, world => {
// 注意)`requestAnimationFrame` のタイミングで連続的に実行されます。
// 重い処理は書かないでください。
console.log(world.tick); // tickのカウントをログに表示
});
// 画面リサイズ時に連続的に発火
hook.on(hook.RESIZE, viewport => {
console.log(viewport.width); // canvasの横幅を取得
});
// 画面リサイズの終了時に発火
hook.on(hook.RESIZE_DELAY, viewport => {
console.log(viewport.width); // canvasの横幅を取得
});ページトランジション(T_*)に関するフックの使い方については transition を参照してください。
Type parameters
| Name | Type |
|---|---|
T | extends keyof HookArgsMap |
Parameters
| Name | Type |
|---|---|
hook | T |
callback | HookCallback<HookArgsMap[T]> |
option | HookOptions |
Returns
void
trigger
▸ trigger<T>(hook, state, option?): Promise<void>
フックの実行を行います。各引数の詳細は on を参照してください。
Type parameters
| Name | Type |
|---|---|
T | extends keyof HookArgsMap |
Parameters
| Name | Type | Description |
|---|---|---|
hook | T | フックタイプ |
state | HookArgsMap[T] | フックに登録したコールバック関数の引数に渡る値 |
option | HookOptions | フックオプション |
Returns
Promise<void>