Directives
v-gamepad
nes-vue
provides a v-gamepad
directive that binds HTML elements to game controllers. For example, click on the button
element to trigger B
.
vue
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad="'B'">B</button>
</template>
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad="'B'">B</button>
</template>
Attribute value can be 'UP'
、'DOWN'
、'LEFT'
、'RIGHT'
、'A'
、'B'
、'C'
、'D'
、'SELECT'
or 'START'
. Note that there must be quotation marks when using literal values.
You can also bind multiple buttons on the same element. A typical example is to bind A
and B
buttons on the button
element:
vue
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad="['A', 'B']">AB</button>
</template>
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad="['A', 'B']">AB</button>
</template>
Arguments and modifiers
By default, v-gamepad
is bound to the mouse event (mousedown
and mouseup
), which controls player 1.
To bind the touch event, you can add the touch
modifier (default is mouse
):
vue
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad:touch="'A'">A</button>
</template>
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad:touch="'A'">A</button>
</template>
To bind the player 2, you can add the p2
modifier (default is p1
):
vue
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad:touch.p2="'A'">A</button>
</template>
<script setup>
import { NesVue, vGamepad } from 'nes-vue'
</script>
<template>
<nes-vue
url="https://taiyuuki.github.io/nes-vue/Super Mario Bros (JU).nes"
/>
<button v-gamepad:touch.p2="'A'">A</button>
</template>