-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
120 lines (112 loc) · 3.06 KB
/
main.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
112
113
114
115
116
117
118
119
120
const swordsSound = new Audio('./sounds/swords.wav');
const luffySound = new Audio('./sounds/luffy.mp3');
const swordsTimeout = 5000;
const spinDuration = 2700;
const winkDuration = 3600;
var started = false;
function isMobile() {
return screen.width < 1023;
}
function start() {
if (started) return;
started = true;
document.querySelector('main').style.cursor = 'default';
luffySound.play();
if (isMobile()) {
setTimeout(() => {
anime({
targets: '.zoro, .luffy',
direction: 'forwards',
opacity: 1,
delay: anime.stagger(1500),
easing: 'spring(1, 120, 12, 0)',
duration: 1500,
});
}, spinDuration);
luffyWink();
zoroSwordsAnimation();
return;
}
zoroSwordsAnimation();
setTimeout(() => {
anime({
targets: '.zoro, .luffy',
direction: 'forwards',
opacity: 1,
translateY: {
value: 250,
},
translateX: {
value: 400,
},
rotate: '1turn',
delay: anime.stagger(1500),
easing: 'spring(1, 120, 12, 0)',
duration: 1500,
complete: function (anim) {
setTimeout(() => {
console.log(anim);
console.log('fired');
anime({
targets: '.zoro, .luffy',
direction: 'forwards',
translateY: {
value: 0,
},
translateX: {
value: 0,
},
rotate: '1turn',
delay: anime.stagger(800),
easing: 'spring(1, 120, 12, 0)',
});
}, 1000);
},
});
}, spinDuration);
luffyWink();
}
function luffyWink() {
setTimeout(() => {
anime({
targets: '.luffy > .face > i:first-child',
direction: 'alternate',
scaleY: {
value: 0.1,
duration: 300,
},
easing: 'easeOutSine'
});
}, winkDuration);
}
function zoroSwordsAnimation() {
setTimeout(() => {
anime({
targets: '#leftSword, #rightSword',
opacity: 1,
delay: 600,
duration: 1000,
});
anime({
targets: '#leftSword',
rotate: -45,
translateY: -30,
translateX: -115,
easing: 'easeInOutQuad',
duration: 500,
delay: 500,
});
anime({
targets: '#rightSword',
rotate: -135,
translateY: -35,
translateX: 92,
easing: 'easeInOutQuad',
duration: 500,
delay: 500,
});
}, swordsTimeout);
setTimeout(() => {
swordsSound.play();
}, swordsTimeout + 300);
}