<?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>AndreaCammarata.com</title>
	<atom:link href="http://www.andreacammarata.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.andreacammarata.com</link>
	<description></description>
	<lastBuildDate>Sat, 28 Apr 2012 14:18:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Sencha Touch 2 AddressField component</title>
		<link>http://www.andreacammarata.com/varie/sencha-touch-2-addressfield-component.html</link>
		<comments>http://www.andreacammarata.com/varie/sencha-touch-2-addressfield-component.html#comments</comments>
		<pubDate>Sat, 28 Apr 2012 14:18:21 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Development Showcases]]></category>
		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=1005</guid>
		<description><![CDATA[Fianally finding the time to write back again on my blog to showcase a simple interesting Sencha Touch 2 component that I&#8217;ve developed some time ago. The video is also spoken so you will easily understand how it works. I really hope to showcase more in the next months but, in the meantime, enjoy the [...]]]></description>
			<content:encoded><![CDATA[<p>Fianally finding the time to write back again on my blog to showcase a simple interesting Sencha Touch 2 component that I&#8217;ve developed some time ago. The video is also spoken so you will easily understand how it works. I really hope to showcase more in the next months but, in the meantime, enjoy the video and, as always, any feedback is appreciated <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
PS: I hope my english accent is not too much weird <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/WpqibSDF8ow" frameborder="0" allowFullScreen="true"> </iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/varie/sencha-touch-2-addressfield-component.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modeling a Character for Rigging and Animation in Maya</title>
		<link>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/modeling-a-character-for-rigging-and-animation-in-maya.html</link>
		<comments>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/modeling-a-character-for-rigging-and-animation-in-maya.html#comments</comments>
		<pubDate>Sat, 28 Apr 2012 06:09:50 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Autodesk Maya]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=984</guid>
		<description><![CDATA[Course Description In this course we will build a character for use in rigging and animation. When rigging and animating, it&#8217;s always nice to have an appealing character to work with. However, if you don&#8217;t have a lot of experience modeling, it can be difficult to create a character you will be happy animating. There [...]]]></description>
			<content:encoded><![CDATA[<h2>Course Description</h2>
<p>In this course we will build a character for use in rigging and animation. When rigging and animating, it&#8217;s always nice to have an appealing character to work with. However, if you don&#8217;t have a lot of experience modeling, it can be difficult to create a character you will be happy animating. There are free characters and rigs out there, but many have been used over and over, and it would be nice to create something you can call your own. In this course we&#8217;ll cover the building of a simple character, with emotive eyes and eyebrows that you can then rig and animate. We&#8217;ll look at methods for building the head, body, arms, and legs and connecting them all together. We&#8217;ll talk about building the topology with an eye towards rigging and animation &#8211; building it to deform well. The ultimate goal of this course is not to give you a new pre-built model to use, but rather to teach you to use the techniques shown to create your own custom character, ready to rig.</p>
<h2>Course Details</h2>
<p><strong>Title:</strong><a href="http://www.digitaltutors.com/11/training.php?pid=133"> Modeling a Character for Rigging and Animation in Maya</a><br />
<strong>Duration:</strong> 2 hrs. 14 min.<br />
<strong>Lessons:</strong> 15</p>
<p style="text-align: center;"><a href="http://www.andreacammarata.com/wp-content/uploads/2012/04/JPTHBQXR.pdf" target="_blank"><img class="aligncenter size-full wp-image-959" title="Modeling a Character for Rigging and Animation in Maya" src="http://www.andreacammarata.com/wp-content/uploads/2012/04/JPTHBQXR.png" alt="" width="695" height="547" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/modeling-a-character-for-rigging-and-animation-in-maya.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploring NURBS in Maya 2012</title>
		<link>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/exploring-nurbs-in-maya-2012.html</link>
		<comments>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/exploring-nurbs-in-maya-2012.html#comments</comments>
		<pubDate>Sat, 21 Apr 2012 13:01:50 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Autodesk Maya]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=953</guid>
		<description><![CDATA[Course Description In this Maya tutorial we will discuss the basics of using NURBS geometry in our modeling workflow. NURBS stands for Non-Uniform Rational B-Spline, but they are much more useful to a 3d artist than the name might indicate. In this series of lessons we’ll get up to speed on NURBS geometry and talk [...]]]></description>
			<content:encoded><![CDATA[<h2>Course Description</h2>
<p>In this Maya tutorial we will discuss the basics of using NURBS geometry in our modeling workflow. NURBS stands for Non-Uniform Rational B-Spline, but they are much more useful to a 3d artist than the name might indicate. In this series of lessons we’ll get up to speed on NURBS geometry and talk about some of the ways it can be used in our modeling workflows. We’ll begin by talking about the basic NURBS building blocks and look at the different NURBS components that can be manipulated to get the shapes we want. We&#8217;ll cover methods for creating curves, the framework of NURBS objects. We&#8217;ll then explore many of the ways that we can use curves to create different types of NURBS objects, from revolving to extruding and lofting. We&#8217;ll also talk about using trimmed surfaces to create complex cut-outs and we&#8217;ll discuss NURBS parameterization. In addition, we&#8217;ll look at ways of attaching and detaching curves and surfaces, combining objects with Booleans, and methods of blending together multiple objects. In the end of this Maya tutorial, you&#8217;ll have a better idea of what NURBS geometry is and how you can start to integrate it into your modeling workflow.</p>
<h2>Course Details</h2>
<p><strong>Title:</strong><a href="http://www.digitaltutors.com/11/training.php?pid=86"> Exploring NURBS in Maya 2012</a><br />
<strong>Duration:</strong> 1 hrs. 28 min.<br />
<strong>Lessons:</strong> 13</p>
<p style="text-align: center;"><a href="http://www.andreacammarata.com/wp-content/uploads/2012/04/9ZMHK2TP.pdf" target="_blank"><img class="aligncenter size-full wp-image-959" title="Exploring NURBS in Maya 2012" src="http://www.andreacammarata.com/wp-content/uploads/2012/04/9ZMHK2TP.png" alt="" width="695" height="547" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/exploring-nurbs-in-maya-2012.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maya Modeling Reference Library: Normals</title>
		<link>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/maya-modeling-reference-library-normals.html</link>
		<comments>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/maya-modeling-reference-library-normals.html#comments</comments>
		<pubDate>Fri, 20 Apr 2012 20:42:35 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Autodesk Maya]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=945</guid>
		<description><![CDATA[Course Description In this series of Maya tutorials, we will be taking a detailed look at each of the commands found in Maya&#8217;s Normals menu. Each video is a self-contained lesson centering on one of the commands found in the Normals menu in Maya. This means that these lessons can be viewed in any order [...]]]></description>
			<content:encoded><![CDATA[<h2>Course Description</h2>
<p>In this series of Maya tutorials, we will be taking a detailed look at each of the commands found in Maya&#8217;s Normals menu. Each video is a self-contained lesson centering on one of the commands found in the Normals menu in Maya. This means that these lessons can be viewed in any order you wish, allowing you to jump straight to the content that is most relevant to you. Over the course of these lessons, we&#8217;ll take a detailed look at each of the Normals commands and how each of them can be used to speed up our workflow.</p>
<h2>Course Details</h2>
<p><strong>Title:</strong><a href="http://www.digitaltutors.com/11/training.php?pid=165"> Maya Modeling Reference Library: Normals</a><br />
<strong>Duration:</strong> 43 min. 20 sec.<br />
<strong>Lessons:</strong> 11</p>
<p style="text-align: center;"><a href="http://www.andreacammarata.com/wp-content/uploads/2012/04/BAZ9FW2U.pdf" target="_blank"><img class="aligncenter size-full wp-image-959" title="Modeling a Character for Rigging and Animation in Maya" src="http://www.andreacammarata.com/wp-content/uploads/2012/04/BAZ9FW2U.png" alt="" width="695" height="547" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/maya-modeling-reference-library-normals.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beginner&#8217;s Guide to Image Planes in Maya</title>
		<link>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/beginners-guide-to-image-planes-in-maya.html</link>
		<comments>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/beginners-guide-to-image-planes-in-maya.html#comments</comments>
		<pubDate>Mon, 16 Apr 2012 22:58:32 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Autodesk Maya]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=935</guid>
		<description><![CDATA[Course Description In this tutorial we will learn the procedures for creating and utilizing image planes in Maya to use as modeling reference. We will start off by learning how to properly set up and align your image planes in something like Photoshop, From there, we will learn how to begin importing your image planes [...]]]></description>
			<content:encoded><![CDATA[<h2>Course Description</h2>
<p>In this tutorial we will learn the procedures for creating and utilizing image planes in Maya to use as modeling reference. We will start off by learning how to properly set up and align your image planes in something like Photoshop, From there, we will learn how to begin importing your image planes into Maya, we will learn how to resize and reposition your image planes within the Maya viewports to make sure they are properly aligned in all your views, we will learn how to import animated image planes, as well as many other tools and features that will allow you to use image planes effectively in Maya.</p>
<h2>Course Details</h2>
<p><strong>Title:</strong><a href="http://www.digitaltutors.com/11/training.php?pid=70"> Beginner&#8217;s Guide to Image Planes in Maya</a><br />
<strong>Duration:</strong> 49 min. 5 sec.<br />
<strong>Lessons:</strong> 8</p>
<p style="text-align: center;"><a href="http://www.andreacammarata.com/wp-content/uploads/2012/04/NZMTD7UP.pdf" target="_blank"><img class="aligncenter size-full wp-image-959" title="Modeling a Character for Rigging and Animation in Maya" src="http://www.andreacammarata.com/wp-content/uploads/2012/04/NZMTD7UP.png" alt="" width="695" height="547" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/beginners-guide-to-image-planes-in-maya.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Maya 2012</title>
		<link>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/introduction-to-maya-2012.html</link>
		<comments>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/introduction-to-maya-2012.html#comments</comments>
		<pubDate>Mon, 16 Apr 2012 21:53:06 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Autodesk Maya]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=922</guid>
		<description><![CDATA[Course Description In this Introduction to Maya 2012 tutorial, we will help you get a strong understanding of Maya and how it works. You&#8217;ll get the chance to work with many of the Maya instructors here at Digital-Tutors who will show you how to use some of the major components of Maya. In this tutorial, [...]]]></description>
			<content:encoded><![CDATA[<h2>Course Description</h2>
<p>In this Introduction to Maya 2012 tutorial, we will help you get a strong understanding of Maya and how it works. You&#8217;ll get the chance to work with many of the Maya instructors here at Digital-Tutors who will show you how to use some of the major components of Maya. In this tutorial, we&#8217;ll start by giving you the foundational skills and vocabulary you&#8217;ll need in order to move around within Maya, and then we&#8217;ll jump right into the Modeling section of the course. After completing the Modeling section, you&#8217;ll get the chance try your hand at Texturing, Rigging, Animation, Dynamics, and finally, Lighting and Rendering your own animation. Our goal is not to weigh you down with technical information in this tutorial, but rather to help you form good habits and strong workflows so you can become a proficient Maya artist.</p>
<h2>Course Details</h2>
<p><strong>Title:</strong><a href="http://www.digitaltutors.com/11/training.php?pid=84"> Introduction to Maya 2012</a><br />
<strong>Duration:</strong> 11 hrs. 38 min.<br />
<strong>Lessons:</strong> 93</p>
<p style="text-align: center;"><a href="http://www.andreacammarata.com/wp-content/uploads/2012/04/DWG4A89R.pdf" target="_blank"><img class="aligncenter size-full wp-image-959" title="Modeling a Character for Rigging and Animation in Maya" src="http://www.andreacammarata.com/wp-content/uploads/2012/04/DWG4A89R.png" alt="" width="695" height="547" /></a></p>
<h2>Final Result</h2>
<p>Below you can find a video that show the final project result.</p>
<p style="text-align: center;"><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/iukkV8KIFb8" frameborder="0" allowFullScreen="true"> </iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/professional-references/certificates/autodesk-maya/introduction-to-maya-2012.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Titanic.js Tumblr</title>
		<link>http://www.andreacammarata.com/varie/titanic-js-tumblr.html</link>
		<comments>http://www.andreacammarata.com/varie/titanic-js-tumblr.html#comments</comments>
		<pubDate>Sat, 10 Mar 2012 12:24:29 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=879</guid>
		<description><![CDATA[Taking inspiration from the the following Tumblr, here&#8217;s my Sencha Touch 2 version of Titanic.js. It took me 10 minutes to complete it, and it was a different way to spend my saturday afternoon coffee break titanic = Ext.get('titanic'); iceberg = Ext.get('iceberg'); if(titanic.getRegion().contains(iceberg.getRegion())){ store = Ext.getStore('Passengers'); store.each(function(passenger){ name = passenger.get('name'); rand = Math.floor(Math.random() * (500000 [...]]]></description>
			<content:encoded><![CDATA[<p>Taking inspiration from the the following <a href="http://titanicjs.tumblr.com/">Tumblr</a>, here&#8217;s my Sencha Touch 2 version of Titanic.js. It took me 10 minutes to complete it, and it was a different way to spend my saturday afternoon coffee break <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre class="brush: jscript; title: ;">
titanic = Ext.get('titanic');

iceberg = Ext.get('iceberg');

if(titanic.getRegion().contains(iceberg.getRegion())){

    store = Ext.getStore('Passengers');

    store.each(function(passenger){

        name = passenger.get('name');

        rand = Math.floor(Math.random() * (500000 - 10000 + 1) - 10000);

        live = passenger.get('isFirstClass') ? rand &gt; 1 : rand &gt; 499990;

        if(passenger.get('isBandMember')){

            passenger.play();
            live = false;

        }
        else{

            if(name === 'Rose DeWitt Bukater'){
                live = true;
            }
            else if(name === 'Jack Dawson'){

                live = false;
                rand = 800000;

            }

        }

        if(!live){

            el = Ext.DomQuery(Ext.String.format('passenger[name={0}]', name));

            Ext.Anim.run(el, 'fade', {
                autoClear: false,
                easing: 'ease-out',
                delay: rand,
                passenger: passenger,
                after: function(el, config){ 

                    store.remove(config.passenger);

                }
            });

        } 

    }); 

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/varie/titanic-js-tumblr.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProgressBar &#124; Development &#8211; Part 2</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html#comments</comments>
		<pubDate>Sat, 14 Jan 2012 22:21:12 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=858</guid>
		<description><![CDATA[Molto bene, spero che fino a qui sia tutto chiaro. Siamo finalmente arrivati alla parte in cui occorre letteralmente dare vita al nostro nuovo componente, andando a definire di fatto una semplice funzione che andrà ad impostare la larghezza della del &#8220;fillElement&#8221; e il valore percentuale associato all&#8217;interno del &#8220;textElement&#8221; in corrispondenza del valore impostato. [...]]]></description>
			<content:encoded><![CDATA[<p>Molto bene, spero che fino a qui sia tutto chiaro. Siamo finalmente arrivati alla parte in cui occorre letteralmente dare vita al nostro nuovo componente, andando a definire di fatto una semplice funzione che andrà ad impostare la larghezza della del &#8220;fillElement&#8221; e il valore percentuale associato all&#8217;interno del &#8220;textElement&#8221; in corrispondenza del valore impostato. Continuate quindi a leggere per rimanere assolutamente basiti dalla semplicità con cui è ottenibile questo risultato.</p>
<p><br/></p>
<h2>Diamogli Vita!</h2>
<p>A questo punto abbiamo già steso le basi del nostro componente, abbiamo infatti i parametri di configurazione e gli elementi HTML necessari al suo funzionamento. Come vi ho spiegato nell&#8217;articolo precedente, non occorre più definire le funzioni di get e set per tutti i parametri di configurazione che andiamo a definire, perché sarà il framework stesso ad andarle a creare automaticamente per noi,  ma allora, vi chiederete voi, come andiamo ad aggiornare il &#8220;fillElement&#8221; non appena viene impostato un valore diverso? Beh, la domanda sorge spontanea <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Quello che ancora non sapete, è che automaticamente, non appena viene richiamata la funzione set di un parametro di configurazione, verrà automaticamente richiamata anche la funzione <strong>update</strong>. Prima di spiegavi nel dettaglio questo concetto, diamo un&#8217;occhiata al codice della funzione in oggetto:</p>
<pre class="brush: jscript; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'progressbar',
	config: {

		/**
		 * @cfg {Number} maxValue Il valore massimo raggiungibile
		 * dalla ProgressBar.
		 * @accessor
		 */
		maxValue: 100,

		/**
		 * @cfg {Number} value Il valore iniziale ProgressBar.
		 * @accessor
		 */
		value: 0

	},
	template: [
		{
			tag: 'div',
			className: Ext.baseCSSPrefix + 'progressbar',
			reference: 'progressBarElement',
			children: [
				{
					tag: 'span',
					className: Ext.baseCSSPrefix + 'progress-value',
					reference: 'textElement'
				},
				{
					tag: 'div',
					className: Ext.baseCSSPrefix + 'progress-fill',
					reference: 'fillElement'
				}
			]
		}
	],

	/**
	 * Aggiorna il valore all'interno del textElement.
	 * @param {Number} value Il nuovo valore percentuale da impostare.
	 * @private
	 */
	 updateValue: function(value) {

		var me = this,
			maxValue = this.getMaxValue();

		//Viene reimpostato il valore se minore di 0
        if (value &lt; 0) {
			value = 0;
		/* Viene reimpostato il valore se maggiore di quello
		 * massimo consentito impostato nella configurazione */
		}else if (value &gt; maxValue){
			value = maxValue;
		}

		//Aggiornamento del valore percentuale all'interno del textElement
		me.textElement.setHtml(value + '%');

		/* Viene richiamata la funzione di aggiornamento
		 * addetta ad impostare la larghezza del fillElement. */
		me.upadateProgress(value);

    },

	/**
	 * Aggiorna la dimensione del fillElement.
	 * @param {Number} value Il nuovo valore percentuale impostato.
	 * @private
	 */
	upadateProgress: function(value){

		var me = this;

		//Calcolo della larghezza del fillElement
		value = (value * 100) / me.getMaxValue();

		//Aggiornamento della larghezza del fillElement
		me.fillElement.setStyle('width', value + '%');

	}

});
</pre>
<p>Eccoci qua! Cominciamo con il dire che, come avrete potuto sicuramente notare, sono state aggiunte due nuove funzioni al nostro componente e, come leggete dai commenti, queste sono <strong>private</strong>, ovvero che non dovranno mai essere richiamate al di fuori del componente stesso. Come abbiamo detto poco fa, il framework si preoccuperà automaticamente di richiamare la funzione <strong>update</strong> del parametro di configurazione subito dopo aver richiamato quella di impostazione valore (set). Quindi, ricapitoliamo: se per ipotesi avessimo definito un parametro di configurazione &#8220;<strong>cloud</strong>&#8221; (non mi piacciono i nomi dei personaggi Walt Disney quindi userò quelli di Final Fantasy <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , verranno automaticamente definite le funzioni <strong>getCloud</strong> e <strong>setCloud</strong>, che saranno pubbliche e quindi accessibili anche all&#8217;esterno del componente stesso al fine di reperire ed impostare il valore del parametro stesso. Inoltre, non appena richiamata la funzione &#8220;setCloud&#8221; verrà automaticamente richiamata la funzione <strong>updateCloud</strong>, che sarà privata e quindi non accessabile al di fuori del componente, ma che dovrà essere definita manualmente al fine di consentirci la gestione dei vari elementi che compongono il componente stesso. Quindi direi che non ci manca proprio niente <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Ma andiamo ad esaminare nel dettaglio le due nuove funzioni appena definite. La funzione <strong>updateValue</strong> come vi ho appena spiegato verrà richiamata automaticamente all&#8217;impostazione del valore specificato, quindi dobbiamo andare a gestire il ridimensionamento dell&#8217;elemento di riempimento della ProgressBar.  A tal proposito, alla riga 66, noterete la seguente riga di codice:</p>
<pre class="brush: jscript; title: ;">
me.textElement.setHtml(value + '%');
</pre>
<p>tramite questa semplice istruzione, verrà infatti impostato il contenuto html dello span corrispondente al &#8220;textElement&#8221; che abbiamo definito poco fa all&#8217;interno del template del componente. Vi faccio appunto notare come &#8220;textElement&#8221; sia il medesimo nome assegnato al parametro di configurazione &#8220;reference&#8221;, definito per l&#8217;elemento in questione. Il framework quindi, non solo a creato per noi l&#8217;elemento Html all&#8217;interno della pagina, ma ci ha anche reso disponibile una variabile di referenza, che ci permetterà di accedere direttamente a tale elemento. Ovviamente la stessa logica è applicata anche per tutti gli altri elementi definiti. Fantastico non vi pare? Vi faccio inoltre notare come alla riga 54, venga utilizzata la funzione <strong>getMaxValue</strong> automaticamente generata, al fine di prelevare il valore del parametro di configurazione &#8220;maxValue&#8221; che abbiamo definito. Su questo funzione quindi non aggiungerei altro in quanto mi sembra tutto abbastanza chiaro. Vengono infatti effettuati alcuni controlli sul nuovo valore che dovrà essere aggiornato al fine di evitare impostazioni fuori range, dopodiché viene aggiornato, come spiegato, il valore percentuale all&#8217;interno del &#8220;textElement&#8221;, ed infine richiamata l&#8217;altra nuova funzione &#8220;updateProgress&#8221; appena definita. Lo scopo di questa funzione è molto semplice: Viene infatti semplicemente calcolato il valore percentuale in corrispondenza del valore passato alla funzione stessa ed il <strong>maxValue</strong> impostato nella configurazione del componente e reperito tramite la funzione getter automaticamente creata <strong>getMaxValue</strong>. Infine, dopo aver calcolato tale valore, questo viene usato al fine di impostare il valore percentuale di larghezza che dovrà essere utilizzato dal <strong>fillElement</strong>, che, ricordiamo, è l&#8217;elemento addetto appunto a visualizzare la percentuale di avanzamento della nostra ProgressBar. Molto bene, a questo punto abbiamo creato tutte le funzioni base che permetteranno al componente di funzionare correttamente, a questo punto quindi, passiamo oltre, ed andiamo a definire tutti gli stili che la compongono utilizzando COMPASS, SASS e CSS3. Seguitemi quindi nel prossimo tutorial e scopriamo insieme come poterla rendere graficamente accattivante. La ProgressBar dovrà infatti essere, proprio come disse il grande Steve Jobs a Cordell Ratzlaff in merito alle ScrollBars di OS X, &#8220;bella a tal punto da volerla leccare&#8221; <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development-part-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProgressBar &#124; Development</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 22:09:44 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=805</guid>
		<description><![CDATA[Bene, eccoci arrivati alla parte più interessante, di questo tutorial, ovvero la scrittura del codice della ProgressBar vera e propria. Ricordate sempre che non occorre avere fretta, ma l&#8217;importante è che comprendiate al meglio ogni singola riga di codice che vi verrà proposta. Definizione base del componente Vediamo in primis le basi che ci permetteranno [...]]]></description>
			<content:encoded><![CDATA[<p>Bene, eccoci arrivati alla parte più interessante, di questo tutorial, ovvero la scrittura del codice della ProgressBar vera e propria.<br />
Ricordate sempre che non occorre avere fretta, ma l&#8217;importante è che comprendiate al meglio ogni singola riga di codice che vi verrà proposta.<br />
<br/><br />
<br/><br />
<br/></p>
<h2>Definizione base del componente</h2>
<p>Vediamo in primis le basi che ci permetteranno di creare un componente personalizzato, ovvero la definizione del componente stesso.<br />
Diamo quindi un&#8217;occhiata al codice che segue:</p>
<pre class="brush: jscript; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'widget.progressbar'
});
</pre>
<p>Tramite queste poche righe di codice abbiamo steso le basi per il nostro componente che, di fatto, se incluso in un applicazione Sencha Touch 2, già funzionerebbe regolarmente. Certo con questo non voglio certo dire che abbiamo finito <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , ma semplicemente che questo componente è già riconosciuto dal framework e potrebbe teoricamente, già essere utilizzato, anche se non sarebbe certo di grande utilità in quanto non farebbe assolutamente nulla, ma è comunque stato registrato dal framework con il suo xtype &#8220;progressbar&#8221; associato.<br />
Ma entriamo nel dettaglio e vediamo di fatto cosa stanno ad indicare queste poche righe di codice appena scritte:</p>
<p>Tramite l&#8217;istruzione <strong>Ext.define</strong>, andiamo a definire di fatto un nuovo componente, assegnandogli, in questo caso, il nome <strong>ProgressBar</strong>, ed andando a collocarlo all&#8217;interno del namespace <strong>Ext.tux</strong>. Vi starete sicuramente chiedendo perché Ext.tux non è vero? Beh presto detto: sicuramente se come me avete esperienza di sviluppo tramite Ext, saprete che tutti i componenti personalizzati di quest&#8217;altro stupendo framework, venivano e vengono tutt&#8217;ora racchiusi all&#8217;interno del namespace &#8220;Ext.ux&#8221; che sta per l&#8217;appunto a significare &#8220;Ext User Extensions&#8221;. Bene, sicuramente ora vi è facile intuire che &#8220;Ext.tux&#8221; rappresenta invece tutti i componenti personalizzati sviluppati per Sencha Touch, da qui, quindi, &#8220;Ext Touch User Extensions&#8221;. Tenete comunque presente che al momento non vi è nessuna convenzione ufficiale che impone tale namespace per i vostri componenti, infatti al momento penso di essere il solo ad utilizzarlo. Molti sviluppatori preferiscono utilizzare quello ufficiale, ovvero semplicemente &#8220;Ext&#8221; oppure lo stessto utilizzato per Ext &#8220;Ext.ux&#8221; ma mi sento di consigliarvi la mia alternativa.<br />
Dopo questa piccola parentesi possiamo procedere.<br />
Tramite l&#8217;istruzione <strong>extend</strong> andiamo a definire la superclasse della ProgressBar, ovvero, il componente dal quale si andranno ad ereditare tutti i metodi, eventi e proprietà. Nella star grande maggioranza dei casi, vi troverete, come in questo caso, a dover estendere direttamente la classe &#8220;Ext.Component&#8221;, ma nulla vi vieta di poter estendere un &#8220;Ext.Panel&#8221;, &#8220;Ext.Carousel&#8221; o qualsiasi altro componente. Questo dipende solamente dalle vostre necessità. Altra nota essenziale su questo piccolo gruppetto di righe di codice è la configurazione <strong>alternateClassName</strong>. Tramite questa configurazione infatti, potremo infatti associare un nome alternativo al nostro componente in modo tale che questo possa essere agilmente creato tramite l&#8217;istruzione</p>
<pre class="brush: jscript; title: ;">
Ext.create('Ext.tux.ProgressBar');
</pre>
<p>oppure molto più facilmente tramite</p>
<pre class="brush: jscript; title: ;">
Ext.create('Ext.ProgressBar');
</pre>
<p>Certo, in questo caso non c&#8217;è molto differenza, ma provate a pensare in grande, ad un&#8217;applicazione molto più estesa e complessa.<br />
Potreste trovarvi nel caso in cui uno sei vostri componenti sia stato definito all&#8217;interno del namespace ClientApp.components.cards.AdvancedCarousel. Non sarebbe più facile creare questo componente utilizzando un nome di classe alternativo tipo &#8220;CP.AdvancedCarousel&#8221; ? Sono sicuro che siete d&#8217;accordo con me <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
Certo è anche vero che c&#8217;è un&#8217;altro modo per creare un componente, ovvero utilizzando l&#8217;istruzione &#8220;Ext.widget&#8221;, ed è proprio questo il motivo dell&#8217;ultimo parametro di configurazione impostato. Il parametro <strong>xtype</strong> infatti, vi permetterà di creare questo componente semplicemente tramite</p>
<pre class="brush: jscript; title: ;">
Ext.widget('progressbar')
</pre>
<p>ma anche di poterlo inserire agilmente tra gli &#8220;items&#8221; di una Toolbar tramite la sintassi che segue.</p>
<pre class="brush: jscript; highlight: [4]; title: ;">
var toolbar = Ext.widget('toolbar',{
	items: [
		{
			xtype: 'progressbar'
		}
	]
});
</pre>
<p>In questo modo si fornisce solamente la configurazione del componente che dovrà essere creato e sarà il framework che si preoccuperà automaticamente di crearlo non appena questo dovrà essere utilizzato. Inoltre, assolutamente da tenere in considerazione, è il fatto che l&#8217;impostazione di un &#8220;xtype&#8221; associato al componente, vi permetterà di creare i componenti delle vostre applicazioni server-side. Ma per ora, tralasciamo questo argomento, altrimenti rischiamo di confonderci le idee.</p>
<h2>Configs</h2>
<p>Bene, a questo punto è arrivato il momento di fornire al nostro componente alcuni parametri di configurazione che ci permetteranno, ad esempio, di impostare il valore corrente ed il valore massimo previsto dalla ProgressBar stessa, quindi aggiorniamo il codice come segue.</p>
<pre class="brush: jscript; highlight: [10,11,12,13,14,15,15,16,17,18,19,20,21,22,23,24,25]; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'progressbar',
	config: {

		/**
		 * @cfg {Number} maxValue Il valore massimo raggiungibile
		 * dalla ProgressBar.
		 * @accessor
		 */
		maxValue: 100,

		/**
		 * @cfg {Number} value Il valore iniziale ProgressBar.
		 * @accessor
		 */
		value: 0

	}
});
</pre>
<p>Penso non servi fornire maggiori informazioni su questi parametri, in quanto i relativi commenti associati parlano chiaro.<br />
Tuttavia, voglio spendere un minuto per farvi notare qualcosa di veramente importante che occorre sempre tenere in mente relativo alla nuova Class System prima sviluppata per Ext 4, ed ora implementata anche su Sencha Touch 2. Ma di cosa starà mai parlando vi starete chiedendo? Beh, parlo proprio dell&#8217;oggetto <strong>Config</strong> appena definito. Questo oggetto infatti, vi permetterà di racchiudere tutti i parametri di configurazione che vorrete fornire al vostro componente generando automaticamente le rispettive funzioni Get e Set. Ma cosa vuol dire? Beh, questo vuol dire che per ogni parametro di configurazione non occorre andare a definire le funzioni, ad esempio:</p>
<pre class="brush: jscript; title: ;">
/**
 * Ritorna l'attuale valore di avanzamento impostato sulla ProgressBar.
 * @return {Number} Il valore corrente della ProgressBar.
 */
getValue: function(){
	return this.value;
}

/**
 * Imposta il valore di avanzamento della ProgressBar.
 * @param {Number} value Il nuovo valore di avanzamento della ProgressBar.
 */
setValue: function(value){
	this.value = value;
}
</pre>
<p>Assolutamente NO!!! Questo non è più necessario. Sarà infatti il ClassManager a preoccuparsi di creare tali funzioni automaticamente per voi, quindi in qualsiasi parte all&#8217;interno della ProgressBar, potremo reperire tali valori semplicemente tramite le istruzioni</p>
<pre class="brush: jscript; title: ;">
//Reperiamo il valore di avanzamento corrente impostato sulla ProgressBar
this.getValue();       //Ritorna 0

//Impostiamo il valore di avanzamento della ProgressBar
this.setValue(50);

//Reperiamo nuovamente di avanzamento corrente impostato sulla ProgressBar
this.getValue();       //Ritorna 50
</pre>
<p>Lo stessa logica, viene anche applicata al parametro di configurazione maxValue.<br />
Pasterà ricordarsi sempre di anteporre <strong>get</strong> seguito dal nome del parametro avente la prima lettera Maiuscola per poter reperire il valore di tale parametro, invece, se vogliamo impostarne uno nuovo, anteporremo <strong>set</strong> sempre seguito dal nome del parametro avente la prima lettera Maiuscola, e, questa volta, ricordandoci di specificare il nuovo parametro che dovrà essere utilizzato.<br />
Beh che dire? Fantastico no <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
Passiamo quindi oltre e vediamo come poter ora definire i vari elementi che comporranno la nostra ProgressBar definendo semplicemente un &#8220;Template&#8221;.</p>
<h2>Il Template</h2>
<p>Come abbiamo visto poco fa all&#8217;interno dell&#8217;articolo inerente alla progettazione di questo componente, la ProgressBar dovrà essere composta da due elementi div ed uno span addetto a contenere il testo da visualizzare al suo interno.<br />
Già, vi starete chiedendo, ma qual&#8217;è il modo migliore per farlo? Dobbiamo creare manualmente questi elementi ed aggiungerli al DOM?<br />
Assolutamente, no! Tutto ciò che dovrete fare è riassunto dal codice che segue.</p>
<pre class="brush: jscript; highlight: [26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44]; title: ;">
/**
 * @class Ext.tux.ProgressBar
 * @extend Ext.Component
 * @author Andrea Cammarata
 */
Ext.define('Ext.tux.ProgressBar', {
	extend: 'Ext.Component',
	alternateClassName: 'Ext.ProgressBar',
	xtype: 'progressbar',
	config: {

		/**
		 * @cfg {Number} maxValue Il valore massimo raggiungibile
		 * dalla ProgressBar.
		 * @accessor
		 */
		maxValue: 100,

		/**
		 * @cfg {Number} value Il valore iniziale ProgressBar.
		 * @accessor
		 */
		value: 0

	},
	template: [
		{
			tag: 'div',
			className: Ext.baseCSSPrefix + 'progressbar',
			reference: 'progressBarElement',
			children: [
				{
					tag: 'span',
					className: Ext.baseCSSPrefix + 'progress-value',
					reference: 'textElement'
				},
				{
					tag: 'div',
					className: Ext.baseCSSPrefix + 'progress-fill',
					reference: 'fillElement'
				}
			]
		}
	]
});
</pre>
<p>Ecco fatto <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Semplice non è vero? Ma vediamo nel dettaglio cos&#8217;ho fatto:<br />
Specificando un oggetto templare al componente, chiediamo al framework di creare automaticamente tutti gli elementi di tipo <strong>tag</strong>, impostandone la classe CSS <strong>className</strong> associata ed inoltre di referenziarlo all&#8217;interno del componente stesso mediante l&#8217;oggetto <strong>reference</strong>. Infine, chiediamo di fare lo stesso con tutti gli elementi <strong>children</strong> definiti. Forse spiegandovelo in questo modo vi ho un po confuso le idee, capisco. Quindi prendiamoci un po più di tempo per capire bene questa parte.<br />
In sintesi lo scopo principale dell&#8217;oggetto Template è quello di racchiudere un set di configurazione di tutti gli elementi HTML di cui vogliamo il nostro componente sia composto, e non appena il componente stesso verrà inizializzato, verranno automaticamente creati anche tutti gli elementi di cui abbiamo fornito la configurazione. Ma vediamo nel dettaglio quali sono i parametri forniti per ognuno degli elementi HTML che dovrà essere creato.</p>
<ul>
<li><strong>tag</strong>: tale parametro sta ad indicare per l&#8217;appunto la tipologia dell&#8217;elemento che dovrà essere creato. Per esempio, impostandone il valore a &#8220;div&#8221; verrà, come scontato, creato un elemento div all&#8217;interno del DOM associato a questo elemento. Un valore di tipo span invece&#8230;beh provate ad indovinare <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li><strong>className</strong>: questo parametro indica invece la classe CSS da applicare all&#8217;elemento. Questo parametro sarà di vitale importanza in fase di styling del componente. I più attenti di voi avranno sicuramente notato l&#8217;utilizzo del valore <strong>Ext.baseCSSPrefix</strong>. Bene, il valore corrispondente è &#8220;x-&#8221;. Tale prefisso viene di norma applicato a tutti gli elementi che compongono i vari componenti Sencha Touch. Per esempio: il classico Ext.Panel viene renderizzato tramite classe CSS &#8220;x-panel&#8221;; L&#8217;oggetto Ext.Slider tramite classe &#8220;x-slider&#8221; e via dicendo. Quindi, cerchiamo di rispettare gli standard, e assegniamo al nostro Progress Element la classe CSS &#8220;x-progressbar&#8221; e adottiamo lo stesso ragionamento per tutti gli elementi figli.</li>
<li><strong>reference</strong>: questo parametro è decisamente interessante. Specificandone un valore infatti, all&#8217;interno di qualsiasi funzione che andremo a definire all&#8217;interno del componente stesso, sarà possibile recuperare tale elemento tramite, ad esempio, &#8220;this.fillElement&#8221;. In questo modo, secondo le nostre necessità, potremo manipolare tali nodi DOM, a nostro piacimento. Per ora vi basti sapere questo, poiché, a breve, approfondiremo ulteriormente l&#8217;argomento.</li>
<li><strong>children</strong>: No. Per tutti quelli della mia generazione, vi interrompo subito, dicendovi che con questo parametro non sto parlando del celeberrimo hit anni &#8217;90 di Robert Miles <img src='http://www.andreacammarata.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ma semplicemente andiamo ad indicare che tale elemento dovrà contenere al suo interno altrettanti elementi, che seguiranno la medesima configurazione di cui abbiamo appena parlato.</li>
</ul>
<p>Molto bene ragazzi, ora abbiamo finalmente definito le basi che comporranno il nostro componente, quindi diamo un&#8217;occhiata alla console javascript al fine di osservare da vicino come questo componente verrà renderizzato all&#8217;interno della nostra applicazione Sencha Touch.</p>
<p><img src="http://www.andreacammarata.com/wp-content/uploads/2011/12/progressbar-console.jpg" alt="ProgressBar - javascript console" title="progressbar-console" width="600" height="318" class="aligncenter size-full wp-image-836" /></p>
<p>Come potete vedere da questa immagine, tutti gli elementi sono stati creati correttamente all&#8217;interno del DOM rispettando la gerarchia che abbiamo definito. Attenzione però, non fate confusione: Io sono in grado di vedere questo risultato perché ho di fatto inserito questo componente all&#8217;interno dei un form. La sola definizione del componente senza la relativa creazione, non vi permetterà di ottenere il medesimo risultato. Molto bene, siamo sulla buona strada.<br />
Passiamo quindi al prossimo articolo all&#8217;interno del quale andremo a definire le funzioni che permetteranno alla nostra ProgressBar di funzionare correttamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-development.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProgressBar &#124; Design</title>
		<link>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html</link>
		<comments>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html#comments</comments>
		<pubDate>Sat, 17 Dec 2011 21:58:39 +0000</pubDate>
		<dc:creator>Andrea Cammarata</dc:creator>
				<category><![CDATA[Sencha Touch 2]]></category>

		<guid isPermaLink="false">http://www.andreacammarata.com/?p=785</guid>
		<description><![CDATA[Prima di entrare nel vivo della progettazione di questo componente mi sembra doveroso spendere due parole sull&#8217; HTML5. Attualmente in stato di &#8220;Working Draft&#8221;, il W3C, prevede il tag &#8220;progress&#8221; , il quale permette di creare semplicemente una progressbar all&#8217;interno di una comune pagina web. Sfortunatamente, al momento della scrittura di questo articolo, tale tag [...]]]></description>
			<content:encoded><![CDATA[<p>Prima di entrare nel vivo della progettazione di questo componente mi sembra doveroso spendere due parole sull&#8217; HTML5.<br />
Attualmente in stato di &#8220;Working Draft&#8221;, il W3C, prevede il tag &#8220;<a href="http://www.w3.org/TR/html5/the-button-element.html#the-progress-element">progress</a>&#8221; , il quale permette di creare semplicemente una progressbar all&#8217;interno di una comune pagina web. Sfortunatamente, al momento della scrittura di questo articolo, tale tag è supportato solamente da alcuni browser da determinate versioni in poi, e, purtroppo, Safari non è tra questi, quindi possiamo scordarci di poterlo utilizzare su devices iOS.<br />
Attualmente il tag &#8220;progess&#8221; in oggetto è supportato dalle seguenti versioni dei browsers che seguono:</p>
<ul>
<li>Firefox Nightly 6.0a1</li>
<li>Opera 11.10</li>
<li>Chrome 11.0.696.65</li>
</ul>
<p>L&#8217;intento di questo articolo quindi, non è assoltamente quello di andare a rimpiazzare uno standard HTML5 o tantomento quello di creare un inutile componente che potrebbe essere semplicemente realizzato mediante un semplice tag già esistente, ma semplicemente quello di guidarvi attraverso i passaggi che vi permetteranno di realizzare un semplice, ma di fatto molto richiesto, componente Sencha Touch 2, in quanto al momento il framework, non ne mette a disposizione una versione ufficiale.</p>
<h2>Pronti&#8230;via!</h2>
<p>Procediamo dunque con calma, partendo dalla fase di progettazione, infatti, il primo step verso la creazione della nostra ProgressBar, è sicuramente quello di prendere visione di come questo dovrà essere composto da un punto di vista del DOM HTML., quindi, prima di andare oltre, soffermiamoci un istante a dare un&#8217;occhiata all&#8217;immagine che segue addetta a rappresentare le varie parti che la andranno a comporre.</p>
<p><img src="http://www.andreacammarata.com/wp-content/uploads/2011/12/progressbar-design.png" alt="PorgressBar Design" title="progressbar-design" width="640" height="260" class="aligncenter size-full wp-image-788" /></p>
<p>Come avete potuto constatare, il componente è davvero molto semplice da realizzare in quanto è composto dai seguenti tre elementi.</p>
<h3>ProgressBar Element</h3>
<p>Questo elemento può essere definito come il &#8220;wrapper&#8221;, ovvero quel nodo DOM che permetterà di fornire al componente stesso una base all&#8217;interno del quale poter racchiudere tutti gli elementi che comporranno la nostra ProgressBar. Inoltre, in fase di styling, potremo decidere di volerla personalizzare con un colore, o un&#8217;immagine di sfondo. Bene, in tal caso questo elemento farà proprio al caso nostro.</p>
<h3>Fill Element</h3>
<p>Beh, penso sia quasi inutile spendere molte parole su questo elemento.<br />
Vi basti sapere che questa div, rappresenterà il livello di avanzamento vero e proprio della ProgressBar andando a ridimensionarsi dinamicamente il corrispondenza al valore impostato.</p>
<h3>Text Element</h3>
<p>Anche ciò che riguarda questo elemento è abbastanza chiaro&#8230;all&#8217;interno di questo nodo infatti, andremo ad inserire il valore percentuale di avanzamento della ProgressBar, o, se al componente verrà conferita una particolare configurazione, un eventuale messaggio che vorremmo fosse visualizzato.</p>
<h2>Lo Scheletro</h2>
<p>Bene, ora che ci siamo fatti un&#8217;idea di quali dovranno essere gli elementi che andranno a comporre la ProgressBar, &#8220;indossiamo per un attimo gli occhiali a Raggi X&#8221; e osserviamo quello che potremmo definire &#8220;lo scheletro&#8221; del componente, ovvero, i tag HTML associati ad ognuno degli elementi sopra elencati, in modo tale da avere una visione completa e definitiva della sua struttura.</p>
<p><img src="http://www.andreacammarata.com/wp-content/uploads/2011/12/progressbar-design-dom.png" alt="" title="progressbar-design-dom" width="640" height="260" class="aligncenter size-full wp-image-796" /></p>
<p>Cosa ne dite? Tutto chiaro fin qui? Nulla di così complicato non vi pare?<br />
Il nostro componente sarà costituito da due div addette a rappresentare rispettivamente il &#8220;ProgressBar Element&#8221; ed il &#8220;Fill Element&#8221;, mentre un semplice &#8220;span&#8221; andrà a contenere il valore percentuale, o messaggio, che dovrà essere visualizzato al suo interno.<br />
Bene, penso non ci sia nient&#8217;altro da aggiungere, quindi possiamo proseguire verso la prima parte interessante, ovvero, la scrittura del componente vero e proprio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreacammarata.com/tutorials/sencha-touch-2-tutorials/progressbar-design.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

