slightly better bloat loading
All checks were successful
Rebuild signaller for deprived.dev to rebuild site / test_service (push) Successful in 17s
All checks were successful
Rebuild signaller for deprived.dev to rebuild site / test_service (push) Successful in 17s
This commit is contained in:
parent
d6501f0b3a
commit
93b7c5e7c7
2 changed files with 64 additions and 53 deletions
64
src/routes/baller/+page.svelte
Normal file
64
src/routes/baller/+page.svelte
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
|
||||||
|
let scrollY = 0;
|
||||||
|
|
||||||
|
const animateInterval = 16;
|
||||||
|
const startMove = 64;
|
||||||
|
const numFrames = 312;
|
||||||
|
|
||||||
|
let framesLoaded = 1;
|
||||||
|
let ballsLoaded = 0;
|
||||||
|
let frameLoader: HTMLImageElement;
|
||||||
|
let frameLoader2: HTMLImageElement;
|
||||||
|
let frameLoader3: HTMLImageElement;
|
||||||
|
let frameLoader4: HTMLImageElement;
|
||||||
|
|
||||||
|
onMount(()=>{
|
||||||
|
|
||||||
|
// Force load once
|
||||||
|
ballsLoaded = 4;
|
||||||
|
onLoaded();
|
||||||
|
});
|
||||||
|
|
||||||
|
function onLoaded (){
|
||||||
|
ballsLoaded++;
|
||||||
|
if (ballsLoaded > 3) {
|
||||||
|
frameLoader.src = "/images/spinning_cat/untitled_" + framesLoaded.toString().padStart(5, '0') + ".png";
|
||||||
|
framesLoaded++;
|
||||||
|
frameLoader2.src = "/images/spinning_cat/untitled_" + framesLoaded.toString().padStart(5, '0') + ".png";
|
||||||
|
framesLoaded++;
|
||||||
|
frameLoader3.src = "/images/spinning_cat/untitled_" + framesLoaded.toString().padStart(5, '0') + ".png";
|
||||||
|
framesLoaded++;
|
||||||
|
frameLoader4.src = "/images/spinning_cat/untitled_" + framesLoaded.toString().padStart(5, '0') + ".png";
|
||||||
|
framesLoaded++;
|
||||||
|
ballsLoaded = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let frameIndex = 0;
|
||||||
|
$: frameIndex = Math.min(Math.floor(Math.max(scrollY-startMove, 0) / animateInterval+1), numFrames);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svelte:window bind:scrollY />
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center" style="height: 5000px;">
|
||||||
|
<!-- Image Loader -->
|
||||||
|
<img on:load={()=>{onLoaded()}} bind:this={frameLoader} style="height: 0.01px; width: 0.01px;" class="" src="/images/spinning_cat/untitled_00001.png" alt="">
|
||||||
|
<img on:load={()=>{onLoaded()}} bind:this={frameLoader2} style="height: 0.01px; width: 0.01px;" class="" src="/images/spinning_cat/untitled_00001.png" alt="">
|
||||||
|
<img on:load={()=>{onLoaded()}} bind:this={frameLoader3} style="height: 0.01px; width: 0.01px;" class="" src="/images/spinning_cat/untitled_00001.png" alt="">
|
||||||
|
<img on:load={()=>{onLoaded()}} bind:this={frameLoader4} style="height: 0.01px; width: 0.01px;" class="" src="/images/spinning_cat/untitled_00001.png" alt="">
|
||||||
|
|
||||||
|
<!-- add "top-0" so it sticks at the top -->
|
||||||
|
<div class="sticky top-0" style="width: 200px; height: 200px;">
|
||||||
|
<div class="flex justify-center items-center" style="width: 200px; height: 200px;">
|
||||||
|
<img src="/images/spinning_cat/untitled_{frameIndex.toString().padStart(5, '0')}.png" class="object-contain w-full h-full" alt="">
|
||||||
|
</div>
|
||||||
|
<div>{frameIndex}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="h-[1000px] bg-amber-700 w-full">
|
||||||
|
|
||||||
|
</div>
|
|
@ -1,53 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { onMount } from "svelte";
|
|
||||||
|
|
||||||
let scrollY = 0;
|
|
||||||
|
|
||||||
const animateInterval = 16;
|
|
||||||
const startMove = 64;
|
|
||||||
const numFrames = 312;
|
|
||||||
|
|
||||||
let framesLoaded = 1;
|
|
||||||
let frameLoader: HTMLImageElement;
|
|
||||||
let frameLoader2: HTMLImageElement;
|
|
||||||
let loadingInterval: number | undefined;
|
|
||||||
|
|
||||||
onMount(()=>{
|
|
||||||
setTimeout(() => {
|
|
||||||
loadingInterval = setInterval(()=>{
|
|
||||||
frameLoader.src = "/images/spinning_cat/untitled_" + framesLoaded.toString().padStart(5, '0') + ".png";
|
|
||||||
framesLoaded++;
|
|
||||||
frameLoader2.src = "/images/spinning_cat/untitled_" + framesLoaded.toString().padStart(5, '0') + ".png";
|
|
||||||
framesLoaded++;
|
|
||||||
|
|
||||||
if (framesLoaded >= numFrames) {
|
|
||||||
clearInterval(loadingInterval);
|
|
||||||
}
|
|
||||||
}, 5);
|
|
||||||
}, 200);
|
|
||||||
});
|
|
||||||
|
|
||||||
let frameIndex = 0;
|
|
||||||
$: frameIndex = Math.min(Math.floor(Math.max(scrollY-startMove, 0) / animateInterval+1), numFrames);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:window bind:scrollY />
|
|
||||||
|
|
||||||
<div class="w-full flex justify-center" style="height: 5000px;">
|
|
||||||
<!-- Image Loader -->
|
|
||||||
<img bind:this={frameLoader} style="height: 0.01px; width: 0.01px;" class="" src="/images/spinning_cat/untitled_00001.png" alt="">
|
|
||||||
<img bind:this={frameLoader2} style="height: 0.01px; width: 0.01px;" class="" src="/images/spinning_cat/untitled_00001.png" alt="">
|
|
||||||
|
|
||||||
<!-- add "top-0" so it sticks at the top -->
|
|
||||||
<div class="sticky top-0" style="width: 200px; height: 200px;">
|
|
||||||
<div class="flex justify-center items-center" style="width: 200px; height: 200px;">
|
|
||||||
<img src="/images/spinning_cat/untitled_{frameIndex.toString().padStart(5, '0')}.png" class="object-contain w-full h-full" alt="">
|
|
||||||
</div>
|
|
||||||
<div>{frameIndex}</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="h-[1000px] bg-amber-700 w-full">
|
|
||||||
|
|
||||||
</div>
|
|
Loading…
Add table
Add a link
Reference in a new issue