1size 960 600
2background #070b1f
3timeline 30 150
4
5// Un écusson qui s'assemble : les images-clés de la scène (`cel`, `hold`, easing) règlent l'entrée de
6// chaque pièce, l'anneau se dessine (`draw`), la devise défile le long d'un cercle (`along`, `start`).
7// L'entrée se joue une fois ; un clic sur l'écusson la rejoue.
8scene {
9 layer "Fond" {
10 rect 0 0 960 600 fill #070b1f
11 circle 480 300 420 fill radial(0.5, 0.5, 0.5, 0:#1d286a, 0.6:#111845, 1:#070b1f)
12 repeat i from 0 to 60 { circle $(mod(i * 337, 960)) $(mod(i * 211, 600)) $(0.6 + mod(i, 3) * 0.6) fill #ffffff opacity $(0.15 + mod(i, 5) * 0.08) }
13 }
14 layer "Rayons" {
15 group "Rayons" at 480,300 pivot 0,0 nohit {
16 layer "c" {
17 repeat i from 0 to 23 { path "M0 0 L$(320 * cos(i * 0.2618 - 0.04)) $(320 * sin(i * 0.2618 - 0.04)) L$(320 * cos(i * 0.2618 + 0.04)) $(320 * sin(i * 0.2618 + 0.04)) Z" fill #ffd56a opacity 0.09 }
18 }
19 }
20 }
21 layer "Fondu" {
22 circle 480 300 330 fill radial(0.5, 0.5, 0.5, 0:#070b1f00, 0.6:#070b1f00, 0.97:#0c1234, 1:#0c1234) nohit
23 }
24 layer "Disque" {
25 circle 480 300 196 fill radial(0.5, 0.42, 0.6, 0:#25316e, 1:#111845)
26 circle 480 300 196 as "Bord" nofill stroke #f5c84b 6 draw "clamp((time - 0.1) * 1.1, 0, 1)" nohit
27 circle 480 300 172 nofill stroke #f5c84b55 2 dash 3,9 draw "clamp((time - 0.5) * 1.1, 0, 1)" nohit
28 circle 480 300 118 nofill stroke #f5c84b 3 draw "clamp((time - 0.8) * 1.4, 0, 1)" nohit
29 circle 480 300 147 as "Devise" nofill stroke #00000000 0
30 }
31 layer "Texte" {
32 group "Devise" at 0,0 nohit {
33 layer "c" { text "CLUB D'ASTRONOMIE ✦ NUITS D'ÉTOILES ✦ CLUB D'ASTRONOMIE ✦ NUITS D'ÉTOILES ✦ " along "Devise" font "Geist, system-ui, sans-serif" size 16 bold color #f5d98a spacing 1.5 start "clock * 0.02" }
34 }
35 }
36 // Saturne en trois calques : la moitié arrière de l'anneau, la planète, la moitié avant.
37 layer "AnneauArriere" {
38 group "AnneauDerriere" at 480,300 pivot 0,0 rotate -16 {
39 layer "c" { path "M-104 0 C-104 -26 104 -26 104 0" nofill stroke #f5c84b 7 cap round }
40 }
41 cel 0 { pose "AnneauDerriere" scale 0.4 opacity 0 }
42 cel 42 tween ease cubic(0.3, 1.6, 0.5, 1) { pose "AnneauDerriere" scale 0.4 opacity 0 }
43 cel 56 { pose "AnneauDerriere" scale 1 opacity 1 }
44 }
45 layer "Planete" {
46 group "Planete" at 480,300 pivot 0,0 {
47 layer "c" {
48 circle 0 0 62 fill radial(0.35, 0.3, 0.75, 0:#ffd9a0, 0.45:#e8823c, 1:#7a2f1a)
49 path "M-58 -14 C-20 -6 20 -6 58 -14" nofill stroke #00000026 5
50 path "M-60 10 C-20 18 20 18 60 10" nofill stroke #00000020 4
51 }
52 }
53 cel 0 { pose "Planete" scale 0.2 opacity 0 }
54 cel 24 tween ease easeOut { pose "Planete" scale 0.2 opacity 0 }
55 cel 42 { pose "Planete" scale 1 opacity 1 }
56 }
57 layer "AnneauAvant" {
58 group "AnneauDevant" at 480,300 pivot 0,0 rotate -16 {
59 layer "c" { path "M-104 0 C-104 26 104 26 104 0" nofill stroke #f5c84b 7 cap round }
60 }
61 cel 0 { pose "AnneauDevant" scale 0.4 opacity 0 }
62 cel 42 tween ease cubic(0.3, 1.6, 0.5, 1) { pose "AnneauDevant" scale 0.4 opacity 0 }
63 cel 56 { pose "AnneauDevant" scale 1 opacity 1 }
64 }
65 layer "Entree" {
66 group "E1" at 400,206 pivot 0,0 { layer "c" { path "M0 -14 L4 -4 L14 0 L4 4 L0 14 L-4 4 L-14 0 L-4 -4 Z" fill #fff3c4 } }
67 group "E2" at 566,214 pivot 0,0 { layer "c" { path "M0 -10 L3 -3 L10 0 L3 3 L0 10 L-3 3 L-10 0 L-3 -3 Z" fill #fff3c4 } }
68 group "E3" at 588,356 pivot 0,0 { layer "c" { path "M0 -12 L3.5 -3.5 L12 0 L3.5 3.5 L0 12 L-3.5 3.5 L-12 0 L-3.5 -3.5 Z" fill #fff3c4 } }
69 group "E4" at 378,372 pivot 0,0 { layer "c" { path "M0 -9 L3 -3 L9 0 L3 3 L0 9 L-3 3 L-9 0 L-3 -3 Z" fill #fff3c4 } }
70 group "Ruban" at 480,486 pivot 0,0 {
71 layer "c" {
72 path "M-200 -6 L-170 -26 L-170 26 L-200 46 L-182 20 Z" fill #a8311f
73 path "M200 -6 L170 -26 L170 26 L200 46 L182 20 Z" fill #a8311f
74 rect -176 -28 352 56 6 fill linear(90, 0:#e0503a, 1:#b73a26)
75 text "DEPUIS 1999" at -176,-28 font "Geist, system-ui, sans-serif" size 26 bold align center line 1.2 color #fff3e0 box 352 56 valign middle
76 }
77 }
78 cel 0 { pose "E1" scale 0 pose "E2" scale 0 pose "E3" scale 0 pose "E4" scale 0 pose "Ruban" at 480,560 opacity 0 }
79 cel 56 hold tween ease cubic(0.3, 1.5, 0.5, 1) { pose "E1" scale 0 }
80 cel 64 hold tween ease cubic(0.3, 1.8, 0.5, 1) { pose "E1" scale 1 pose "E2" scale 0 }
81 cel 70 hold tween ease cubic(0.3, 1.8, 0.5, 1) { pose "E2" scale 1 pose "E3" scale 0 }
82 cel 76 hold tween ease cubic(0.3, 1.8, 0.5, 1) { pose "E3" scale 1 pose "E4" scale 0 }
83 cel 82 hold tween ease cubic(0.3, 1.8, 0.5, 1) { pose "E4" scale 1 pose "Ruban" at 480,560 opacity 0 }
84 cel 100 hold { pose "Ruban" at 480,486 opacity 1 }
85 }
86 layer "Toucher" {
87 group "Ecusson" at 480,300 hitbox 400 400 { layer "c" { } }
88 }
89}
90
91at frame 149 { pause }
92
93object "Ecusson" {
94 when clicked { go to frame 0 and play }
95}
96object "Rayons" { rotationDeg = clock * 4 }
97object "Planete" { dy = 3 * sin(clock * 1.3) }
98object "AnneauDerriere" { dy = 3 * sin(clock * 1.3) }
99object "AnneauDevant" { dy = 3 * sin(clock * 1.3) }
100object "E1" { opacity = 0.6 + 0.4 * sin(clock * 3.1) }
101object "E2" { opacity = 0.6 + 0.4 * sin(clock * 2.3 + 1) }
102object "E3" { opacity = 0.6 + 0.4 * sin(clock * 2.7 + 2) }
103object "E4" { opacity = 0.6 + 0.4 * sin(clock * 3.5 + 3) }