aframe-click-drag-component/README.md
Kumi 12db2ff24b
feat: fork and update aframe-click-drag-component
Forked the original aframe-click-drag-component to ensure compatibility
with A-Frame 1.5.0, addressing the lack of maintenance and updates. This
version removes the call for new maintainers and clarifies the project
is a continuation of the original work. The update allows users to
maintain interactivity in 3D A-Frame scenes with current versions.

This change ensures that developers using A-Frame for VR projects can
continue to implement click and drag functionality without being
hindered by outdated dependencies or unresolved issues.
2024-03-27 18:33:58 +01:00

88 lines
2.3 KiB
Markdown

# aframe-click-drag-component
A Click & Drag component for [A-Frame](https://aframe.io). This is a fork of
the original [aframe-click-drag-component](https://github.com/jesstelford/aframe-click-drag-component)
to make it work in current versions of A-Frame (tested with 1.5.0).
Entities with the `click-drag` component can be click and dragged around the 3D
scene. Even works whle the camera is moving or rotating!
### Events
**dragstart**
Emitted with the following info:
- `offset: {x, y, z}` - The offset from entity center to drag position.
- `depth` - the perpendicular distance from the screen to align the entity while
dragging
- `clientX` - the mouse event's `clientX` value
- `clientY` - the mouse event's `clientY` value
**dragmove**
Emitted with the following info:
- `nextPosition: {x, y, z}` - The next world position of the entity.
- `clientX` - the mouse event's `clientX` value
- `clientY` - the mouse event's `clientY` value
**dragend**
Emitted with the following info:
- `offset: {x, y, z}` - The offset from entity center to drag position.
- `velocity: {x, y, z}` - The smoothed velocity of the entity at dragend time.
- `depth` - the perpendicular distance from the screen to align the entity while
dragging
- `clientX` - the final mouse event's `clientX` value
- `clientY` - the final mouse event's `clientY` value
### Applying click-drag conditionally
You can conditionally apply `click-drag` behaviors by specifying an `enabled`
attribute in your `click-drag` property:
```javascript
...
<a-sphere click-drag="enabled: false" position="0 1.25 -1" radius="1.25" color="#EF2D5E"></a-sphere>
...
```
### Installation
#### Browser
Use directly from the unpkg CDN:
```html
<head>
<script src="https://aframe.io/releases/0.3.0/aframe.min.js"></script>
<script src="https://unpkg.com/aframe-click-drag-component"></script>
<script>
registerAframeClickDragComponent(window.AFRAME);
</script>
</head>
<body>
<a-scene>
<a-sphere click-drag position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
<a-camera look-controls-enabled="false"></a-camera>
</a-scene>
</body>
```
#### npm
Install via npm:
```bash
npm install aframe-click-drag-component
```
Then register and use.
```javascript
import aframe from 'aframe';
import registerClickDrag from 'aframe-click-drag-component';
registerClickDrag(aframe);
```