window.onload = ()=>{
animate()
}
function animate() {
animateFrame( "bobAnimate", 70, [
{ // run right
move: ()=>{ bobAnimate.style.marginLeft = "300px" },
frames: [ bob_right, bob_right_walk1, bob_right_walk2 ],
delay: 100,
limitFrames: 15,
},
{ // stop blink , blink
frames: [ bob_right_blink, bob_right, bob_right_blink, bob_right, bob_left ],
delay: 150,
limitFrames: 5,
},
{ // turn left, blink
frames: [ bob_left_blink, bob_left ],
delay: 500,
limitFrames: 2,
},
{ // run left
move: ()=>{ bobAnimate.style.marginLeft = "80px" },
frames: [ bob_left_walk1, bob_left_walk2, bob_left ],
delay: 100,
limitFrames: 15
},
{ // stop blink
frames: [ bob_left, bob_left_blink, bob_left ],
delay: 500,
limitFrames: 3,
},
{ // turn & blink, blink
frames: [ bob_right, bob_right_blink, bob_right, bob_right_blink, bob_right ],
delay: 100,
limitFrames: 5,
},
{ // run right
move: ()=>{ bobAnimate.style.marginLeft = "200px" },
frames: [ bob_right, bob_right_walk1, bob_right_walk2 ],
delay: 100,
limitFrames: 13,
},
{ // turn, turn, turn
frames: [ bob_left, bob_right, bob_left ],
delay: 250,
limitFrames: 3,
},
{ // angry, angry
frames: [ bob_left_angry, bob_left, bob_left_angry, bob_left ],
delay: 150,
limitFrames: 4,
},
{ // run left
move: ()=>{ bobAnimate.style.marginLeft = "0px" },
frames: [ bob_left_walk1, bob_left_walk2, bob_left ],
delay: 100,
limitFrames: 15
},
{ // turn slow, blnk slow
frames: [ bob_right, bob_right_blink, bob_right ],
delay: 1000,
limitFrames: 3,
},
{ // RESTART
move: ()=>{ animate() }, frames: [], delay: 0, limitFrames: 0
},
])
}
function buildFrame(elmId, frameWidth, frame) {
const pW = frameWidth/8
const elm = document.getElementById(elmId)
elm.innerHTML = `
`
setPixels(elmId, frame)
}
function setPixels(elmId, frame) {
const g = document.getElementById("g-"+elmId)
g.innerHTML = ""
frame.pixels.map( p => {
g.innerHTML += /*html*/`
`
})
}
function animateFrame(elmId, size, anime){
buildFrame("bobAnimate", size, anime[0].frames[0])
anime[0].frames.push(anime[0].frames[0])
anime[0].frames.shift()
const g = document.getElementById("g-"+elmId)
function animate(anime) {
const int = setInterval(function(){
if (anime[0].limitFrames === 0) {
clearInterval(int)
anime.shift()
if (anime.length > 0) {
if (anime[0].move) anime[0].move()
animate(anime)
}
} else {
setPixels(elmId, anime[0].frames[0])
anime[0].frames.push(anime[0].frames[0])
anime[0].frames.shift()
anime[0].limitFrames--
}
}, anime[0].delay)
}
if (anime[0].move) anime[0].move()
animate(anime)
}