<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roll dock &#187; Lab</title>
	<atom:link href="http://blog.rollstudio.it/it/category/lab-it/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rollstudio.it/it/</link>
	<description>Multimedia Design</description>
	<lastBuildDate>Fri, 26 Feb 2010 11:55:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Particelle e canvas</title>
		<link>http://blog.rollstudio.it/it/2009/12/particelle-e-canvas/</link>
		<comments>http://blog.rollstudio.it/it/2009/12/particelle-e-canvas/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 17:26:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jQuery @it]]></category>
		<category><![CDATA[Lab @it]]></category>
		<category><![CDATA[jquery canvas particle]]></category>

		<guid isPermaLink="false">http://blog.rollstudio.it/?p=236</guid>
		<description><![CDATA[Introduzione In attesa di creare il sito per un nostro cliente, abbiamo pensato di pubblicare una pagina coming soon insolita, interattiva, divertente. Abbiamo deciso di utilizzare il tag &#60;canvas&#62;, definito nelle nuove specifiche HTML 5, per creare delle particelle che potessero interagire con il mouse. Il tag &#60;canvas&#62; &#8220;Canvas&#8221; significa letteralmente tela, ed in effetti [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduzione</strong></p>
<p>In attesa di creare il sito per un nostro cliente, abbiamo pensato di pubblicare una pagina coming soon insolita, interattiva, divertente. Abbiamo deciso di utilizzare il tag &lt;canvas&gt;, definito nelle nuove specifiche <a href="http://www.w3.org/html/wg/html5/">HTML 5</a>, per creare delle particelle che potessero interagire con il mouse.</p>
<p><strong>Il tag &lt;canvas&gt;</strong></p>
<p>&#8220;Canvas&#8221; significa letteralmente tela<strong>, </strong>ed in effetti<strong> </strong>questo tag<strong> </strong>rappresenta una vera e propria tela su cui disegnare via javascript. Purtroppo tutte le versioni di Internet Explorer non supportano il tag &lt;canvas&gt;, IE 8 incluso, ma&#8230;.google ci viene in aiuto con il progetto, che definirei perfino salvavita, exCanvas, ovvero una libreria javascript in grado di emulare un tag canvas sfruttando la capacità di Internet Explorer di visualizzare codice <a href="http://www.w3.org/TR/NOTE-VML">VML</a>.</p>
<p><strong>Il codice</strong></p>
<p>Per iniziare inseriamo il tag &lt;canvas&gt; nel codice HTML, insieme alle librerie jQuery ed exCanvas, per abilitare l&#8217;effetto in IE. Andremo a scrivere il codice di gestione della canvas nel file effect.js</p>
<p><code><br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;XL visual&lt;/title&gt;<br />
&lt;link href="css/xlvisual.css" rel="stylesheet" type="text/css" /&gt;<br />
&lt;script type="text/javascript" src="js/jquery-1.3.2.min.js"&gt;&lt;/script&gt;<br />
&lt;!--[if IE]&gt;<br />
&lt;script type="text/javascript" src="js/excanvas_r71.js"&gt;&lt;/script&gt;<br />
&lt;![endif]--&gt;<br />
&lt;script type="text/javascript" src="js/effect.js"&gt;&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;canvas id="canvas" width="800" height="600"&gt;&lt;/canvas&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></p>
<p>Per prima cosa otteniamo il contesto del canvas, ovvero l&#8217;interfaccia che ci consentirà di disegnare su di essa, e scriviamo il codice per far andare la canvas a tutto schermo. Abbiamo utilizzato <a href="http://www.jquery.com">jQuery</a> per le interazioni con gli elementi HTML. Se non conoscete questa libreria, forse è il caso che andiate a dare uno sguardo, è fantastica!!</p>
<p><code><br />
var hc,wc;<br />
var resize = function() {<br />
hc = $(window).height()-5;<br />
wc = Math.max($(window).width(),800)-5;<br />
$("#canvas").attr("width",wc).attr("height",hc);<br />
}<br />
$(window).resize(resize);<br />
resize();<br />
var c = $("#canvas")[0].getContext("2d");</code></p>
<p>Creiamo ora un oggetto Particella, che gestirà la posizione, lo spostamento ed il disegno della stessa sul canvas</p>
<p><code><br />
var Particella = function(x, y, radius, col) {<br />
this.dx = 0;<br />
this.dy = 0;<br />
this.dradius = 0;<br />
this.rifx = 0;<br />
this.rify = 0;<br />
this.vel = 30;<br />
this.vibracounter = 0;<br />
this.x = x;<br />
this.y = y;<br />
this.radius = radius;<br />
this.radius2 = radius*2;<br />
this.col = col;<br />
this.state = 0;<br />
};<br />
</code><br />
<code><br />
Particella.prototype = {<br />
setRif: function(x, y) {<br />
this.rifx = x;<br />
this.rify = y;<br />
},<br />
draw: function() {<br />
c.fillStyle = this.col;<br />
c.beginPath();<br />
c.arc(this.x,this.y,this.radius,0,2*Math.PI,true);<br />
c.fill();<br />
},<br />
update: function() {<br />
if(Math.abs(mouseX-this.x)&lt;20 &amp;&amp; Math.abs(mouseY-this.y)&lt;20) {<br />
if(this.state==0) {<br />
this.state = 1;<br />
this.dx = this.rifx+Math.random()*200-100;<br />
this.dy = Math.random()*hc;<br />
this.vel = 30;<br />
} else if(this.state==1) {<br />
this.vibracounter = Math.round(Math.random()*20+10);<br />
}<br />
}<br />
switch(this.state) {<br />
case 0:<br />
this.vibraLinea();<br />
break;<br />
case 1:<br />
this.vibraTutto();<br />
break;<br />
}<br />
this.x += (this.dx-this.x)/this.vel;<br />
this.y += (this.dy-this.y)/this.vel;<br />
},<br />
vibraLinea: function() {<br />
if(this.vibracounter==0) {<br />
this.vel = 20;<br />
this.dx = this.rifx+Math.random()*20-10;<br />
this.dy = this.rify+Math.random()*20-10;<br />
this.vibracounter = Math.round(Math.random()*5+5);<br />
}<br />
this.vibracounter--;<br />
},<br />
vibraTutto: function() {<br />
if(Math.abs(this.dx-this.x)&lt;5 &amp;&amp; Math.abs(this.dy-this.y)&lt;5){<br />
this.state = 0;<br />
return;<br />
}<br />
}<br />
};</code></p>
<p>La funzione <em>draw </em>è responsabile del disegno di una particella, è piuttosto semplice, imposta il colore di riempimento di una pallina, disegna un arco di 360° e ne chiede il riempimento.</p>
<p>La funzione <em>update </em>è responsabile del calcolo della posizione di una pallina per ogni frame. Abbiamo previsto 2 possibili stati di moto, uno casuale intorno ad un punto (gestito dalla funzione <em>vibraLinea</em>), ed un altro che si innesca quando si passa con il mouse vicino ad una particella (gestito dalla funzione <em>vibraTutto</em>). Queste 2 funzioni impostano la posizione verso la quale si desidera far muovere la pallina. Ad ogni frame, la funzione update fa avvicinare la pallina dalla sua posizione attuale a quella di arrivo precedentemente impostata dalle funzioni <em>vibraLinea </em>o <em>vibraTutto</em>.</p>
<p>Procediamo al setup del canvas, alla creazione delle Particelle e ad impostare il loop che andrà ad animare il tutto</p>
<p><code><br />
var numParticelle = 100;<br />
var colori = ["#00FFFF","#FFFF00","#FF00FF"];<br />
var numColori = colori.length;<br />
var part = new Array(numParticelle);<br />
</code></p>
<p>Abbiamo dichiarato il numero delle particelle, i 3 possibili colori ed una matrice che conterrà tutti gli oggetti particella che andremo a creare.</p>
<p><code><br />
var creaParticelle = function() {<br />
var x,y = hc/2;<br />
for(var i=0;i&lt;numParticelle;i++) {<br />
x = Math.random()*wc;<br />
part[i] = new Particella(x,y, Math.random()*5.5+0.5, colori[Math.round(Math.random()*(numColori-1))]);<br />
part[i].setRif(x,y);<br />
}<br />
}<br />
</code><br />
<code><br />
var setup = function() {<br />
creaParticelle();<br />
c.clearRect(0, 0, wc, hc);<br />
c.fillStyle = "#1B2209"<br />
c.fillRect(0, 0, wc, hc);<br />
}<br />
</code></p>
<p>Abbiamo scritto la funzione di setup, che crea 100 particelle con colore e posizione casuali e procede a disegnare uno sfondo verde.</p>
<p><code><br />
var draw = function() {<br />
c.clearRect(0, 0, wc, hc);<br />
c.fillStyle = "#1B2209"<br />
c.fillRect(0, 0, wc, hc);<br />
for(var i=0;i&lt;numParticelle;i++) {<br />
part[i].update();<br />
part[i].draw();<br />
}<br />
window.setTimeout(draw,0);<br />
}<br />
</code></p>
<p>Abbiamo dichiarato la funzione principale del loop di disegno, che ripulisce lo sfondo del canvas e, per ogni particella, richiama i metodi <em>update</em>, per aggiornarne la posizione e <em>draw</em>per disegnarla. Infine la funzione draw imposta un timer da eseguire appena possibile (il ritardo 0 serve a questo) che richiamerà nuovamente il loop principale.</p>
<p><code><br />
setup();<br />
window.setTimeout(draw,0);<br />
</code></p>
<p>Abbiamo finito. basterà ora richiamare il <em>setup</em>, e far partire il loop principale con <em>window.setTimeout</em><br />
L&#8217;effetto in questione è visibile su <a href="http://www.xlvisual.it">http://www.xlvisual.it</a></p>
<p>Nella versione online, lo script è leggermente più complesso, per gestire meglio l&#8217;emulazione per IE con exCanvas. Infatti, la tecnologia VML adotta un approccio completamente diverso per il disegno degli elementi grafici, i quali non vengono disegnati su una tela, una bitmap, come nel caso del canvas, ma sono dei veri e propri elementi vettoriali descritti mediante dei tag. Per questo motivo, risulta molto più veloce spostare questi elementi vettoriali, piuttosto che ridisegnarli ogni volta. Non è il caso di addentrarci in ulteriori dettagli. Chi fosse interessato potrà leggere il codice in produzione all&#8217;indirizzo <a href="http://www.xlvisual.it">http://www.xlvisual.it</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rollstudio.it/it/2009/12/particelle-e-canvas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Effetto &#8220;Color Switch&#8221;</title>
		<link>http://blog.rollstudio.it/it/2009/12/effetto-color-switch/</link>
		<comments>http://blog.rollstudio.it/it/2009/12/effetto-color-switch/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 13:43:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lab @it]]></category>
		<category><![CDATA[Works @it]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.rollstudio.it/?p=203</guid>
		<description><![CDATA[Per il sito www.lasagradellacastagna.it abbiamo sperimentato un effetto semplice ma divertente di contrasto tra background e immagini contenute nelle &#8220;celle&#8221; che riproponiamo in questo tutoral. Abbiamo utilizzato l&#8217;ultima versione di jQuery (la 1.3.2) disponibile sul sito ufficiale. Per prima cosa impostiamo un div vuoto alla fine del body, che ci servirà a contenere l&#8217;immagine &#8216;desaturata&#8217;. [...]]]></description>
			<content:encoded><![CDATA[<p>Per il sito <a href="http://www.lasagradellacastagna.it">www.lasagradellacastagna.it</a> abbiamo sperimentato un effetto semplice ma divertente di contrasto tra background e immagini contenute nelle &#8220;celle&#8221; che riproponiamo in questo tutoral.</p>
<p>Abbiamo utilizzato l&#8217;ultima versione di jQuery (la 1.3.2) disponibile sul <a href="http://jquery.com/">sito  ufficiale</a>.</p>
<p>Per prima cosa impostiamo un div vuoto alla fine del body, che ci servirà a contenere l&#8217;immagine &#8216;desaturata&#8217;.</p>
<p><code>&lt;body&gt;<br />
&lt;div id="overlay"&gt;&lt;/div&gt;<br />
&lt;/body&gt;</code></p>
<p>Nel css imposteremo <code> #overlay {display:none;}</code> per nascondere al caricamento della pagina il contenuto del div.</p>
<p>Tramite il js aggiungiamo due immagini, una colorata e l&#8217;altra all&#8217;interno del div.</p>
<p><code>function prepare() {<br />
$('body').prepend("&lt;img class="bg" src="images/color.jpg" /&gt;");<br />
$("#overlay").append("&lt;img class="bg" src="images/sepia.jpg" /&gt;");<br />
}<br />
</code></p>
<p>Adesso aggiungiamo le &#8220;celle&#8221; nell&#8217;html, ognuna di esse conterrà delle immagini (in bianco/nero e a colori), per creare un effetto come quello del sito di esempio.</p>
<p>Al mouse over sulla cella dovremo ottenere l&#8217;effetto di invertire le immagini di sfondo del body (da colorata a bianco/nero) e contemporaneamente mostrare l&#8217;immagine colorata all&#8217;interno della cella (da bianco/nero a colori). Inoltre abbiamo aggiunto un altro effetto (un &#8220;expose&#8221;) per accentuare la visibilità della cella che scatena l&#8217;evento, rendendo leggermente trasparenti le celle intorno.</p>
<p>Nell&#8217;HTML dunque avremo:</p>
<p><code>&lt;div&gt;<br />
&lt;div&gt;&lt;img src="images/small_sepia.jpg" /&gt;&lt;/div&gt;<br />
&lt;div&gt;&lt;img src="images/small_color.jpg" /&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
</code></p>
<p>e nel js:</p>
<p><code> var cells = $('div.cell').hover(function () {<br />
$('#overlay').show();<br />
cells.not(this).css("opacity",0.8);<br />
$(this).css({<br />
zIndex: 1000<br />
});<br />
$(this).find("div.photo_sepia").hide();<br />
$(this).find("div.photo_color").show();<br />
}, function() {<br />
$('#overlay').hide();<br />
a = this;<br />
$(a).css({<br />
zIndex: 10<br />
});<br />
cells.css("opacity",1);<br />
$(this).find("div.photo_color").hide();<br />
$(this).find("div.photo_sepia").show();<br />
});<br />
</code><br />
Abbiamo dunque creato il nostro effetto saturazione, con poche semplici righe di codice.</p>
<p>Una demo è visibile qui: <a href="http://blog.rollstudio.it/demos/ColorSwitch">blog.rollstudio.it/demos/ColorSwitch</a>.</p>
<p>Disponibili anche i file in <a href="http://blog.rollstudio.it/demos/ColorSwitch.zip">download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rollstudio.it/it/2009/12/effetto-color-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vappensiero per Facebook</title>
		<link>http://blog.rollstudio.it/it/2009/08/vappensiero-per-facebook/</link>
		<comments>http://blog.rollstudio.it/it/2009/08/vappensiero-per-facebook/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 20:45:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Lab @it]]></category>

		<guid isPermaLink="false">http://blog.rollstudio.it/?p=81</guid>
		<description><![CDATA[Ciao a tutti, è con nostro immenso piacere che presentiamo la nostra prima applicazione Facebook, che abbiamo evocativamente intitolato col nome &#8220;Vappensiero&#8220;. L&#8217;applicazione nasce per gioco, durante le nostre &#8220;vacanze creative&#8221; estive. Insieme ad un nutrito ed entusiasta gruppo di persone  abbiamo voluto confrontarci in questo (nostro) inesplorato campo di applicazione. Per le note di [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img title="char_" src="http://blog.rollstudio.it/wp-content/uploads/2009/08/char_.jpg" alt="char_" width="520" height="320" /></p>
<p style="text-align: left;">Ciao a tutti,</p>
<p style="text-align: left;">è con nostro immenso piacere che presentiamo la nostra prima applicazione <strong>Facebook</strong>, che abbiamo evocativamente intitolato col nome &#8220;<strong>Vappensiero</strong>&#8220;.</p>
<p style="text-align: left;">L&#8217;applicazione nasce per gioco, durante le nostre &#8220;vacanze creative&#8221; estive. Insieme ad un nutrito ed entusiasta gruppo di persone  abbiamo voluto confrontarci in questo (nostro) inesplorato campo di applicazione. Per le note di sviluppo rimanderei gli approfondimenti (e gli sfoghi :) ) in un nuovo post, nel quale descriveremo gli aspetti più tecnici legati all&#8217;approccio con il sistema di integrazione della piattaforma di <strong>Facebook</strong>.</p>
<p style="text-align: left;">Il &#8220;tema&#8221; goliardico dell&#8217;applicazione è stato ispirato dai fatti di politica di questi giorni, che sempre più spesso affollano le pagine dei giornali e dei notiziari nazionalpopolari.</p>
<p style="text-align: left;">Ovviamente i proclami in cui ci imbattiamo nelle notizie riportate dai quotidiani ci strappano un sorriso, divertito o amaro che sia, che facilmente ci inducono a rileggere i concetti in chiave satirica. A volte però le citazioni parlano da sole e in quanto tali le riportiamo :)<br />
Le citazioni sono contrassegnate da una fonte rintracciabile, dall&#8217;autore e, quando possibile, dal contesto, per averne visione e conoscenza contattateci scrivendo a <a href="mailto:vappensiero@rollstudio.it" target="_blank">vappensiero@rollstudio.it</a>.
</p>
<p style="text-align: left;">Ci farebbe molto piacere la partecipazione i tutti i lettori che trovano stimolante questo tema, a cui chiediamo di inviare la segnalazione di una citazione o di una frase a <a href="mailto:vappensiero@rollstudio.it" target="_blank">vappensiero@rollstudio.it,</a> specificarndone la fonte, la data e l&#8217;autore della frase.</p>
<p style="text-align: left;">Di seguito il proclama:</p>
<p style="text-align: left;"><em>Questa   applicazione   nasce   per   uomini   veri:   combattenti   indefessi  (qualsiasi   cosa   significhi)   e   difensori   parzialmente   stremati  della   verde   patria   si   bella   e   perduta.   Altrimenti:   va   a   ciapà   i ratt!<br />
Grazie   a   questo   piccolo   pulpito,   che   solo   il   cuore   crociato   e   la volontà   di   noi,   noi   uomini   celtiaci   e   fieri,   porterà   alla   giusta grandezza,   possiamo   finalmente   liberarci   e   urlare   a   denti   stretti  contro il mondo centralizzato:<br />
vaff..vappensiero!!<br />
La   “lega   longobarda”   nasceva   nell&#8217;aprile   del   1167,   decisa   a   non  farsi   sottomettere   dall&#8217;invasore   straniero   e   dalle  sue   assurde tradizioni.  Fu il primo vero limite all&#8217;immigrazione clandestina.<br />
Ed   ora   come   allora   eccoci   costretti   a   combattere   di   nuovo   contro uno scetticismo imperante, un relativismo rivoluzionario, un libero pensiero   che   si   vorrebbe   muovere   fuori   dalle   redini  delle   ali  dorate  di cristiane  e italiche  radici:  le sole  capaci di  guidarlo  e costringerlo sulla giusta via, la nostra.<br />
Noi   avanguardisti   verdisti,   ci   prendiamo   questo   spazio   e   lo mettiamo   al   vostro   servizio. </em></p>
<p style="text-align: left;"><em> Condividi   un   vappensiero   sul   tuo profilo,   dimostrando   che   ognuno   ce   l&#8217;ha   duro   e   libero   in   casa  propria.<br />
E se la tua voce si alza volutamente senza diplomazia, e gagliardo rifiuti   di   essere   coinvolto   nell’astuzia   della   palude   di  facebook che   non   si   accorge   che   così   tutto   muore,   suggerisci   il   tuo vappensiero.   Se   è   abbastanza   xenofobo,   ignorante,   razzista, antintelletuale,   dogmatico,   umilmente   piegato   alle   tradizioni locali   (le   nostre,   bada   bene)   verrà   pubblicato   e   messo   a disposizione   della   popolare   saggezza   dei   verdisti   coloni   di facebook.</em>
</p>
<p style="text-align: left;">Ringraziamo infine i volontari verdisti che hanno contribuito all&#8217;idea e alla realizzazione della prima FB app rollosa: oltre agli irriducibili Renato, Orlando, Lara e Luisa segnaliamo il prezioso apporto di Andrea Gioseffi e Francesco Leone per testi e ricerca citazioni, Marco Perugini per le caricature e tutti i nostri fan per il supporto.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://blog.rollstudio.it/it/2009/08/vappensiero-per-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

