右クリックできるようにする
マウスの中ボタンや右ボタンを識別するには、 g.PointEvent#button
を利用します。
IMPORTANT
ニコ生ゲームでは、マウスの中ボタンや右ボタンがゲームプレイ上必須にならないようにしてください。 スマートフォンユーザに遊べないゲームになってしまうためです。
凡例
button.onPointDown.add((ev) => {
if (ev.button === 0) {
// マウス左ボタンまたはタッチの押下時の処理
} else if (ev.button === 2) {
// マウス右ボタンの押下時の処理
} else {
// それ以外の押下時の処理
}
});
利用例
次のコンテンツでは、ゲーム画面内でマウス左ボタンを押下すると矩形が青色に、右ボタンを押下すると矩形が赤色に変化します。
詳細
g.E#onPointDown
や g.Scene#onPointMoveCapture
などの操作通知は、タッチ操作とマウス操作を統一して通知します。 これによりプレイヤーは「スマートフォンでのタップ」でも「マウスの左・右ボタンクリック」でも同じようにゲームを操作することができます。
g.PointEvent#button
を参照すると、このうちマウスの右ボタンや中ボタンでの操作を識別することができます。 button
は次のいずれかの数値で、ボタンなどの状態変化を表します 。
button | 意味 |
---|---|
-1 | 最後のイベント以降、ボタンもタッチ接触も変化していない ( onPointMove , onPointMoveCapture のみ) |
0 | マウスの左ボタン、タッチ接触の状態が変化した |
1 | マウスの中ボタンの状態が変化した |
2 | マウスの右ボタンの状態が変化した |
例えばマウスの右ボタンが押下された時は、 onPointDown
トリガーに通知される g.PointDownEvent
の button
が 2
になります。
複数のマウスボタン押下
複数のマウスボタンの押下は、onPointDown
ではなく onPointMove
で通知されることに注意してください。
たとえば「左ボタン押下、マウス移動、右ボタン押下、マウス移動、右ボタン解放、左ボタン解放」の順で操作した時、通知されるトリガーと button
の値は次のようになります。
順 | プレイヤーの操作 | 通知されるトリガー | button の値 |
---|---|---|---|
1 | 左ボタン押下 | onPointDown | 0 |
2 | マウス移動 | onPointMove | -1 |
3 | 右ボタン押下 | onPointMove | 2 |
4 | マウス移動 | onPointMove | -1 |
5 | 右ボタン解放 | onPointMove | 2 |
6 | 左ボタン解放 | onPointUp | 0 |
右ボタンの押下や解放が onPointMove
の g.PointMoveEvent
で通知されます。 g.PointMoveEvent#button
が -1
でない時、行われた操作が押下なのか解放なのかは、ゲーム側で判断する必要があります。
TIP
button
の値や同時押しに関する挙動は、Web ブラウザの PointerEvent
の仕様に基づくものです。
WARNING
マルチタッチとの違いに注意してください。 マルチタッチの場合、 pointerId
が異なる複数の g.PointDownEvent
が通知されます。