Quanti anni è che esiste HTML5? 2 anni?
Io che ho cominciato a lavorare giusto 2 anni fa non sono mai riuscito a farne un uso intelligente a lavoro...
Ed è per questo motivo che ho cominciato a scoprirlo... in un modo non troppo intelligente :)
Tra i numerosi tag che l'HTML5 porta, mi ha sempre affascinato il tag <canvas>. Ma cos'è?
Navigando un po' sulla rete ho visto che questo canvas non serve ad altro che a manipolare delle immagini bitmap dinamicamente da javascript.
Wow! Posso creare un immagine da codice e farla muovere, roteare, animare... Non che la parte grafica sia il mio contesto preferito, ma per bagaglio personale, ho voluto provarlo questo canvas.
Per chi non la conoscesse è un MEME utilizzato dopo una frase provocatoria o offesa per far alterare ancora di più l'interlocutore offeso. La frase che spesso la accompagna è "Problems?" .
In questa mia "animazione" tirerò fuori la trollface dall'area del canvas e farò uno scherzo all'utente che naviga la pagina in pieno stile del MEME.
Innanzitutto, visto che utilizzo un canvas con dimensioni fisse, dichiaro il canvas nella mia pagina html.
<canvas id="
canvas
" width="
1000
" height="
600
"> Il tuo browser non supporta HTML5 </canvas>
Come intuibile se il browser non dovesse essere in grado di processare il tag il contenuto, sarà visualizzato l'innerHTML.
Punto primo: come inserire un immagine in un canvas?
Ricordiamoci fin da subito che l'oggetto che si occupa di fornire i metodi necessari alla gestione del canvas non è il canvas stesso ma il suo Context (In questo caso 2d).
//recupero il Context
canvas = document.getElementById("
canvas
"); ctx = canvas.getContext("
2d
");
//inserisco l'immagine
var img = new Image(); img.src = '
trollfacemini.png
'; img.onload = function(){ ctx.drawImage(img,x,y); //x e y sono i punti nel quale verrà scritta l'immagine ctx.stroke(); };
Così disegno l'immagine nei punti x,y ma cosa devo fare per spostarla?
E' necessario ridisegnare ogni volta l'immagine nei punti desiderati ricordandosi di cancellare quella prima.
N.B. Non sono riuscito a trovare un tutorial o guida che spiegasse bene come aggiungere un oggetto nel context, recuperarlo per Id e spostarlo. Tutte mi riconducevano a questa tecnica che io ,completamente ignorante in toto, ho continuato ad usare nonostante non mi piacesse proprio tanto... :P
Cooomunque...
ho risolto il tutto grazie agli Interval....
Ho suddiviso la mia animazione in tre step (tre function diverse, ma solo per comodità): al caricamento della pagina faccio partire il primo con frequenza 1ms (la frequenza mi determina la velocità) e a fine dello step, richiamo il successivo.
var intervalTroll=setInterval(drawTroll, 50);
Ovviamente qui entra in gioco la malattia dello sviluppatore: io ho fatto così ma potevano essere utilizzati altri n modi per gestire l'animazione.
Uno di questi tre step scrive nel context un testo, utilizzando questi comandi.
ctx.fillStyle = '
black
'; ctx.font = '
bold 70px sans-serif
'; ctx.textBaseline = '
bottom
'; ctx.fillText('
You have been trolled!!
', 100, 130);
E' possibile vedere il risultato finale qui.
Non sto manco a dirlo che suggerimenti, considerazioni, critiche sono ben accette.
No comments:
Post a Comment