-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
111 lines (96 loc) · 3.42 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// Rotierende Scheibe
let currentFrame = 0;
const totalFrames = 24;
let autoRotate = false;
let rotateInterval;
// Funktion, um das Bild zu aktualisieren
function updateImage() {
const img = document.getElementById('image');
img.src = `images/frame_${currentFrame}.png`;
}
// Links drehen
function rotateLeft() {
currentFrame = (currentFrame - 1 + totalFrames) % totalFrames;
updateImage();
}
// Rechts drehen
function rotateRight() {
currentFrame = (currentFrame + 1) % totalFrames;
updateImage();
}
// Automatisches Drehen starten und stoppen
function toggleAutoRotate() {
if (autoRotate) {
clearInterval(rotateInterval);
autoRotate = false;
} else {
autoRotate = true;
rotateInterval = setInterval(rotateRight, 500); // alle 500ms eine Drehung nach rechts
}
}
// Eventlistener für Scheiben-Buttons
document.getElementById('leftBtn').addEventListener('click', rotateLeft);
document.getElementById('rightBtn').addEventListener('click', rotateRight);
document.getElementById('autoBtn').addEventListener('click', toggleAutoRotate);
// Eventlistener für Scheiben-Tastendruck
document.addEventListener('keydown', (event) => {
if (event.key === 'l') {
rotateLeft();
} else if (event.key === 'r') {
rotateRight();
} else if (event.key === 'a') {
toggleAutoRotate();
}
});
// Sprite-Sheet Animation
let spriteCurrentFrame = 0;
const spriteTotalFrames = 33; // 3 Spalten x 11 Reihen = 33 Frames
const spriteFrameWidth = 640; // Breite eines einzelnen Frames
const spriteFrameHeight = 360; // Höhe eines einzelnen Frames
const spriteColumns = 3; // Anzahl der Spalten
let spriteAutoRotate = false;
let spriteRotateInterval;
// Funktion, um das Sprite zu aktualisieren
function updateSprite() {
const sprite = document.getElementById('sprite');
const col = spriteCurrentFrame % spriteColumns; // Berechnet die aktuelle Spalte
const row = Math.floor(spriteCurrentFrame / spriteColumns); // Berechnet die aktuelle Reihe
// Setzt die background-position basierend auf der aktuellen Spalte und Reihe
const xPos = -col * spriteFrameWidth;
const yPos = -row * spriteFrameHeight;
sprite.style.backgroundPosition = `${xPos}px ${yPos}px`;
}
// Rückwärts (Sprite)
function spriteRotateLeft() {
spriteCurrentFrame = (spriteCurrentFrame - 1 + spriteTotalFrames) % spriteTotalFrames;
updateSprite();
}
// Vorwärts (Sprite)
function spriteRotateRight() {
spriteCurrentFrame = (spriteCurrentFrame + 1) % spriteTotalFrames;
updateSprite();
}
// Automatisches Drehen starten und stoppen (Sprite)
function spriteToggleAutoRotate() {
if (spriteAutoRotate) {
clearInterval(spriteRotateInterval);
spriteAutoRotate = false;
} else {
spriteAutoRotate = true;
spriteRotateInterval = setInterval(spriteRotateRight, 200);
}
}
// Eventlistener für Sprite-Buttons
document.getElementById('spriteLeftBtn').addEventListener('click', spriteRotateLeft);
document.getElementById('spriteRightBtn').addEventListener('click', spriteRotateRight);
document.getElementById('spriteAutoBtn').addEventListener('click', spriteToggleAutoRotate);
// Eventlistener für Sprite-Tastendruck
document.addEventListener('keydown', (event) => {
if (event.key === 'b') {
spriteRotateLeft();
} else if (event.key === 'g') {
spriteRotateRight();
} else if (event.key === 'x') {
spriteToggleAutoRotate();
}
});