<?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>Diseño Web Archivos | Develooping</title>
	<atom:link href="https://www.develooping.com/etiqueta/diseno-web/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.develooping.com/etiqueta/diseno-web/</link>
	<description>Web design and programming</description>
	<lastBuildDate>Tue, 10 Dec 2019 12:35:20 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.develooping.com/wp-content/uploads/2026/07/cropped-loop-32x32.png</url>
	<title>Diseño Web Archivos | Develooping</title>
	<link>https://www.develooping.com/etiqueta/diseno-web/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Colorear parte de imagen con Canvas</title>
		<link>https://www.develooping.com/colorear-parte-de-imagen-con-canvas/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 24 May 2017 16:44:21 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2324</guid>

					<description><![CDATA[<p>[:es]En esta ocasión ampliaremos lo explicado anteriormente para ofrecer una solución que permite colorear dinámicamente parte de una imagen y que funciona en todos los navegadores recientes, tanto en escritorio como en dispositivos móviles.[:]</p>
<p>La entrada <a href="https://www.develooping.com/colorear-parte-de-imagen-con-canvas/">Colorear parte de imagen con Canvas</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Hace unos días publiqué una entrada en la que explicaba cómo hacer uso de la propiedad CSS mix-blend-mode para conseguir <a href="/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/">colorear parte de una imagen</a>. Pero como suele ocurrir frecuentemente, los navegadores de Microsoft se han quedado atrás en la adopción de esa propiedad a pesar de ser una recomendación oficial, así que la solución planteada no funcionaba correctamente en ellos. En esta ocasión ampliaremos lo explicado anteriormente para ofrecer <strong>una solución que cubre todos los navegadores recientes</strong>.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Como ya teníamos una solución válida para la mayoría de los navegadores, lo primero que haremos es detectar si el navegador soporta los efectos de fusión de capas por CSS, para ofrecerle una solución alternativa en caso contrario. Y como siempre que queremos detectar si el navegador soporta o no determinada propiedad, lo mejor es echar mano de <a href="https://modernizr.com/download?backgroundblendmode-setclasses" target="_blank" rel="noopener noreferrer">Modernizr</a>.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_single_image wpb_content_element vc_align_center">
		<div class="wpb_wrapper">
			
			<div class="vc_single_image-wrapper   vc_box_border_grey"><img fetchpriority="high" decoding="async" width="600" height="300" src="https://www.develooping.com/wp-content/uploads/2017/05/css-background-modernizr.gif" class="vc_single_image-img attachment-full" alt="[:en]modernizr[:]" title="css-background-modernizr" /></div>
		</div>
	</div>
	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Para construir nuestro script de detección de propiedades, seleccionamos &#8220;CSS Background Blend Mode&#8221; y pulsamos el botón &#8220;Build&#8221;. Eso es todo, no necesitamos detectar nada más. En nuestro caso lo hemos renombrado como modernizr-backgroundblend.js</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="Modernizr">&lt;script type="text/javascript" src="js/modernizr-backgroundblend.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript"&gt;

if (Modernizr.backgroundblendmode) {
  	// mix-blend-mode supported
} else {
  	// mix-blend-mode not-supported (use canvas)
}
&lt;/script&gt;</pre>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>La página</h5>
<p>La idea es seguir conservando la versión anterior en aquellos navegadores en los que funciona, y ofrecer una alternativa a través de canvas para los demás. Es cierto que la opción basada en canvas funcionaría correctamente en todos los navegadores recientes, pero mantendremos también la versión anterior por razones de rendimiento.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="La página completa">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
	&lt;meta charset="UTF-8" &gt;

	&lt;title&gt;Change Image Color&lt;/title&gt;

	&lt;link rel="stylesheet" href="styles/styles.css"&gt;
	&lt;link rel="stylesheet" href="styles/jquery.simplecolorpicker.css"&gt;

	&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="js/jquery.simplecolorpicker.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="js/modernizr-backgroundblend.js"&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div id="tshirt_container"&gt;
	&lt;img src="images/white-t-shirt.jpg" class="tshirt_layer" id="tshirt_layer_1"&gt;
	&lt;img src="images/guy.png" class="tshirt_layer" id="tshirt_layer_2"&gt;	
&lt;/div&gt;

&lt;select name="colorpicker-shortlist" id="colorpicker"&gt;
  &lt;option value="#7bd148""&gt;Green&lt;/option&gt;
  &lt;option value="#5484ed"&gt;Bold blue&lt;/option&gt;
  &lt;option value="#a4bdfc"&gt;Blue&lt;/option&gt;
  &lt;option value="#46d6db"&gt;Turquoise&lt;/option&gt;
  &lt;option value="#7ae7bf"&gt;Light green&lt;/option&gt;
  &lt;option value="#51b749"&gt;Bold green&lt;/option&gt;
  &lt;option value="#fbd75b"&gt;Yellow&lt;/option&gt;
  &lt;option value="#ffb878"&gt;Orange&lt;/option&gt;
  &lt;option value="#ff887c"&gt;Red&lt;/option&gt;
  &lt;option value="#dc2127"&gt;Bold red&lt;/option&gt;
  &lt;option value="#dbadff"&gt;Purple&lt;/option&gt;
  &lt;option value="#e1e1e1"&gt;Gray&lt;/option&gt;
  &lt;option value="#cabdbf"&gt;#cabdbf&lt;/option&gt;
&lt;/select&gt;

&lt;script type="text/javascript"&gt;
$(window).load(function() {//we need to be sure that the images have loaded 

	if (Modernizr.backgroundblendmode) {// mix-blend-mode supported

    	$('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
   	 	$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
		$('select[name="colorpicker-shortlist"]').on('change', function() {
    		$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
  		});	

	} else {// mix-blend-mode not-supported (use canvas)

        function hexToRgb(hex) {       
            var color_array = new Object();
            hex = hex.replace(/[^0-9A-F]/gi, '');
    		var bigint = parseInt(hex, 16);
    		color_array[0] = (bigint &gt;&gt; 16) &amp; 255;
    		color_array[1] = (bigint &gt;&gt; 8) &amp; 255;
    		color_array[2] = bigint &amp; 255;
    		return color_array;
		}

        $('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');

        $('select[name="colorpicker-shortlist"]').on('change', function() {

    		multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

    		redraw();

  		});

  		function redraw(){

  			imageBottom = document.getElementById('tshirt_layer_1');
  			$('#tshirt_container canvas').remove(); 
			canvas = document.createElement('canvas');
			canvas.width = imageBottom.width;
			canvas.height = imageBottom.height;
			imageBottom.parentNode.insertBefore(canvas, imageBottom);

			ctx = canvas.getContext('2d');
			ctx.drawImage(imageBottom, 0, 0);

			// Get the CanvasPixelArray from the given coordinates.
			imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			pix = imgData.data;

			//multiplyColor = [80, 120, 10];
			multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

	    	// Loop over each pixel and change the color.
			for (var i = 0, n = pix.length; i &lt; n; i += 4) {
    			pix[i  ] = multiply(multiplyColor[0], pix[i  ]); // red
    			pix[i+1] = multiply(multiplyColor[1], pix[i+1]); // green
    			pix[i+2] = multiply(multiplyColor[2], pix[i+2]); // blue
    			// pix[i+3] is alpha channel (ignored)
			}
			// Draw the result on the canvas
			ctx.putImageData(imgData, 0, 0);

			function multiply(topValue, bottomValue){
  				return topValue * bottomValue / 255;
			}

		}

		redraw();

	}

})
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Si lo comparas con la solución planteada en la entrada anterior verás que la parte</p>
<pre class="lang:js decode:true " title="mix-blend-mode supported">if (Modernizr.backgroundblendmode) {// mix-blend-mode supported

    	$('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
   	 	$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
		$('select[name="colorpicker-shortlist"]').on('change', function() {
    		$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
  		});	

}</pre>
<p>es esencialmente idéntica y que todo lo nuevo ha sido añadido si no se cumple la condición (else).<br />
También verás que hemos cambiado <code>$(document).ready(function() {</code> por <code>$(window).load(function() {</code><br />
Esto es así porque necesitamos asegurarnos de que las imágenes han sido cargadas para poder hacer operaciones con ellas.</p>
<p>La programación para crear un efecto multiply aplicando un color a una imagen se basa directamente en <a href="http://albertogasparin.it/articles/2011/05/html5-multiply-filter-canvas/" target="_blank" rel="noopener noreferrer">lo explicado en esta página</a> añadiéndole algunas variaciones. En primer lugar lo hemos &#8220;empaquetado&#8221; en una función (redraw), y le hemos añadido una nueva función (hexToRgb) para convertir los valores devueltos por el selector de colores al formato de array [r,g,b] que necesita.</p>
<p>Como necesitamos poder aplicar la función múltiples veces, dentro de la misma usamos la expresión jQuery <code>$('#tshirt_container canvas').remove();</code> para eliminar el elemento canvas antes de volverlo a recrear.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="else">else {// mix-blend-mode not-supported (use canvas)

        function hexToRgb(hex) {       
            var color_array = new Object();
            hex = hex.replace(/[^0-9A-F]/gi, '');
    		var bigint = parseInt(hex, 16);
    		color_array[0] = (bigint &gt;&gt; 16) &amp; 255;
    		color_array[1] = (bigint &gt;&gt; 8) &amp; 255;
    		color_array[2] = bigint &amp; 255;
    		return color_array;
		}

        $('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');

        $('select[name="colorpicker-shortlist"]').on('change', function() {

    		multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

    		redraw();

  		});

  		function redraw(){

  			imageBottom = document.getElementById('tshirt_layer_1');
  			$('#tshirt_container canvas').remove(); 
			canvas = document.createElement('canvas');
			canvas.width = imageBottom.width;
			canvas.height = imageBottom.height;
			imageBottom.parentNode.insertBefore(canvas, imageBottom);

			ctx = canvas.getContext('2d');
			ctx.drawImage(imageBottom, 0, 0);

			// Get the CanvasPixelArray from the given coordinates.
			imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			pix = imgData.data;

			//multiplyColor = [80, 120, 10];
			multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

	    	// Loop over each pixel and change the color.
			for (var i = 0, n = pix.length; i &lt; n; i += 4) {
    			pix[i  ] = multiply(multiplyColor[0], pix[i  ]); // red
    			pix[i+1] = multiply(multiplyColor[1], pix[i+1]); // green
    			pix[i+2] = multiply(multiplyColor[2], pix[i+2]); // blue
    			// pix[i+3] is alpha channel (ignored)
			}
			// Draw the result on the canvas
			ctx.putImageData(imgData, 0, 0);

			function multiply(topValue, bottomValue){
  				return topValue * bottomValue / 255;
			}

		}

		redraw();

	}

</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>El CSS</h5>
<p>Modernizr también introduce las clases  <code>.backgroundblendmode</code> y <code>.no-backgroundblendmode</code> para poder realizar selecciones en nuestro CSS basados en la detección de esta propiedad. Nuestro CSS queda prácticamente idéntico al del ejemplo anterior, pero aprovechamos para añadir la propiedad CSS <code>mix-blen-mode: multiply</code> solo en el caso de estar soportada.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:css decode:true " title="Estilos">.simplecolorpicker{
 max-width: 300px;
}
.simplecolorpicker span.color[data-selected]:after {
  content: '\2714'; /* Ok/check mark */
  width: 12px;
  display: block;
  padding-left: 4px
}

/*t-shirt*/
#tshirt_container{
 position: relative;
 width: 300px;
 height: 450px;
}

#tshirt_container .tshirt_layer, #tshirt_container canvas{
 position: absolute;
 display: table;
  width: 300px;
 height: 450px;
}

#tshirt_layer_1{
 z-index: 1;
}

#tshirt_layer_2{
	z-index: 3;
}
.backgroundblendmode #tshirt_layer_2 { 
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}

.no-backgroundblendmode  #tshirt_layer_2  { 
/*styles if background blend mode is not supported*/ 
}

#tshirt_container canvas{
 	z-index: 2;
}</pre>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>El resultado</h5>
<p>Aquí tienes el resultado de todo el código anterior. Puedes usar el botón &#8220;Descargar&#8221; al final de la página para bajarte una copia con todos los scripts, estilos y archivos necesarios.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<div id="tshirt_container"><img decoding="async" id="tshirt_layer_1" class="tshirt_layer" src="/wp-content/uploads/2017/05/white-t-shirt.jpg" alt="t-shirt background" /><img decoding="async" id="tshirt_layer_2" class="tshirt_layer" src="/wp-content/uploads/2017/05/guy.png" alt="guy with t-shirt" /></div>
<p><select id="colorpicker" name="colorpicker-shortlist"><option value="#7bd148">Green</option><option value="#5484ed">Bold blue</option><option value="#a4bdfc">Blue</option><option value="#46d6db">Turquoise</option><option value="#7ae7bf">Light green</option><option value="#51b749">Bold green</option><option value="#fbd75b">Yellow</option><option value="#ffb878">Orange</option><option value="#ff887c">Red</option><option value="#dc2127">Bold red</option><option value="#dbadff">Purple</option><option value="#e1e1e1">Gray</option><option value="#cabdbf">#cabdbf</option></select></p>

		</div> 
	</div> 
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="/wp-content/themes/bridge-child/js/jquery.simplecolorpicker.js"></script>
<!--<script type="text/javascript" src="/wp-content/themes/bridge-child/js/modernizr-backgroundblend.js"></script>-->
<script type="text/javascript">
jQuery(window).load(function() {

	if (Modernizr.backgroundblendmode) {
  	
    	jQuery('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
   	 	jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
		jQuery('select[name="colorpicker-shortlist"]').on('change', function() {
    		jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
  		});	
  	  		 		
  		
	} else {


        function hexToRgb(hex) {       
            var color_array = new Object();
            hex = hex.replace(/[^0-9A-F]/gi, '');
    		var bigint = parseInt(hex, 16);
    		color_array[0] = (bigint >> 16) & 255;
    		color_array[1] = (bigint >> 8) & 255;
    		color_array[2] = bigint & 255;
    		return color_array;
		}
 
        jQuery('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
        
        
        jQuery('select[name="colorpicker-shortlist"]').on('change', function() {
    		
    		multiplyColor = hexToRgb(jQuery('select[name="colorpicker-shortlist"]').val());
    		
    		redraw();
    		
  		});
  		
  		function redraw(){
 		
  			imageBottom = document.getElementById('tshirt_layer_1');
  			jQuery('#tshirt_container canvas').remove(); 
			canvas = document.createElement('canvas');
			canvas.width = imageBottom.width;
			canvas.height = imageBottom.height;
			imageBottom.parentNode.insertBefore(canvas, imageBottom);
		
			ctx = canvas.getContext('2d');
			ctx.drawImage(imageBottom, 0, 0);
		

			imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			pix = imgData.data;
		

			multiplyColor = hexToRgb(jQuery('select[name="colorpicker-shortlist"]').val());
		

			for (var i = 0, n = pix.length; i < n; i += 4) {
    			pix[i  ] = multiply(multiplyColor[0], pix[i  ]); 
    			pix[i+1] = multiply(multiplyColor[1], pix[i+1]);
    			pix[i+2] = multiply(multiplyColor[2], pix[i+2]);

			}

			ctx.putImageData(imgData, 0, 0);
		
			function multiply(topValue, bottomValue){
  				return topValue * bottomValue / 255;
			}
		
		}
		
		redraw();
		
  		
	}


    
})
</script>

		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:center;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

<a  itemprop="url" href="/wp-content/uploads/2017/05/change-image-color-canvas.zip" target="_self"  class="qbutton  center default" style="">Descargar</a>	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/colorear-parte-de-imagen-con-canvas/">Colorear parte de imagen con Canvas</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cambiar el color de parte de una imagen</title>
		<link>https://www.develooping.com/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Fri, 19 May 2017 10:17:55 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2223</guid>

					<description><![CDATA[<p>[:es]Si has usado Photoshop o algún otro programa de tratamiento de imágenes, puede que hayas empleado los modos de fusión de capas para conseguir colorear determinadas zonas de una imagen. Ahora, con algunas de las nuevas propiedades de CSS3 podemos replicar este mismo efecto de forma dinámica.[:]</p>
<p>La entrada <a href="https://www.develooping.com/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/">Cambiar el color de parte de una imagen</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Si has usado Photoshop o algún otro programa de tratamiento de imágenes, puede que hayas empleado los modos de fusión de capas para conseguir colorear determinadas zonas de una imagen. Con el uso de una máscara para seleccionar la forma y una capa de color en modo &#8220;multiply&#8221; podemos colorear el área que deseemos. Ahora, <strong>con algunas de las nuevas propiedades de CSS3 podemos replicar este mismo efecto de forma dinámica en una página web</strong>.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_single_image wpb_content_element vc_align_center">
		<div class="wpb_wrapper">
			
			<div class="vc_single_image-wrapper   vc_box_border_grey"><img decoding="async" width="534" height="476" src="https://www.develooping.com/wp-content/uploads/2017/05/photoshop.jpg" class="vc_single_image-img attachment-full" alt="capas en photoshop" title="photoshop" srcset="https://www.develooping.com/wp-content/uploads/2017/05/photoshop.jpg 534w, https://www.develooping.com/wp-content/uploads/2017/05/photoshop-300x267.jpg 300w" sizes="(max-width: 534px) 100vw, 534px" /></div>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>En la imagen superior puedes ver un ejemplo del uso de las capas que permitiría conseguir este resultado. Solo cambiando el color de la capa en modo &#8220;multiply&#8221; vemos cambiar el color de la camiseta, colocada en una capa inferior.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_single_image wpb_content_element vc_align_center">
		<div class="wpb_wrapper">
			
			<div class="vc_single_image-wrapper   vc_box_border_grey"><img decoding="async" width="300" height="450" src="https://www.develooping.com/wp-content/uploads/2017/05/layers.jpg" class="vc_single_image-img attachment-full" alt="" title="layers" srcset="https://www.develooping.com/wp-content/uploads/2017/05/layers.jpg 300w, https://www.develooping.com/wp-content/uploads/2017/05/layers-200x300.jpg 200w" sizes="(max-width: 300px) 100vw, 300px" /></div>
		</div>
	</div>
	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Al igual que Photoshop, <strong>los principales navegadores soportan la fusión de capas en modo &#8220;multiply&#8221;</strong>. La única excepción importante la constituyen los navegadores de Microsoft, aunque los desarrolladores de la compañía ya han indicado que lo tienen bajo estudio y posiblemente lo implementarán para principios de 2018. En este estado de cosas ya no es descabellado plantearse hacer uso de ese modo de mezcla, ya que tiene un soporte mayoritario.</p>
<p>En esta ocasión vamos a centrarnos en cómo conseguir este efecto en los <a href="http://caniuse.com/#feat=css-mixblendmode" target="_blank">navegadores que soportan la propiedad CSS mix-blend-mode</a>, que como ya he dicho son la mayoría, y más adelante ofreceremos una solución alternativa para otros navegadores.</p>
<h5>Ponle la camiseta</h5>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="imagenes">&lt;div id="tshirt_container"&gt;
	&lt;img src="images/white-t-shirt.jpg" class="tshirt_layer" id="tshirt_layer_1"&gt;
	&lt;img src="images/guy.png" class="tshirt_layer" id="tshirt_layer_2"&gt;	
&lt;/div&gt;</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Lo primero que hemos hecho es colocar la imagen del chico con la camiseta como un png con el hueco de la camiseta transparente, y debajo la camiseta sin color.</p>
<p>Usamos las posiciones y la propiedad z-index para colocar una sobre otra, y a la imagen del chico le añadimos la propiedad mix-blend-mode con el valor multiply.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:css decode:true " title="CSS">#tshirt_container{
 position: relative;
 width: 300px;
 height: 450px;
}

#tshirt_container .tshirt_layer{
 position: absolute;
 display: table;
  width: 300px;
 height: 450px;
}

#tshirt_layer_1{
 z-index: 1;
}

#tshirt_layer_2{
	z-index: 2;
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Dale color</h5>
<p>Llegados a este punto, ya podemos comprobar que <strong>con solo añadirle un color de fondo</strong> (background-color) a la imagen superior (<span class="crayon-k ">#tshirt_layer_2), <strong>podemos colorear la camiseta</strong>.</span></p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:css decode:true " title="Color de fondo">#tshirt_layer_2{
	background-color: #7bd148;
}</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>También podemos usar un script que nos permita asignar dinámicamente el color de fondo a partir de una selección por parte del usuario. Existen multitud de selectores de color basados en jQuery o directamente en JavaScript que realizan esta tarea y puedes elegir el que mejor se adapte al uso que le vayas a dar.</p>
<p>Yo particularmente he pensado en su aplicación en una tienda, en la que un producto puede tener un número limitado de variaciones de color. Para ello he usado <a href="https://github.com/tkrotoff/jquery-simplecolorpicker" target="_blank">jQuery Simple Color Picker</a>.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Deja que seleccionen</h5>
<p>No hay problema si has decidido usar cualquier otro selector de color, ya que todo lo que hay que conseguir es permitir al usuario escoger un color y asignar la propiedad background-color de la imagen principal según el valor escogido.</p>
<p>Si vas a usar jQuery Simple Color Picker nos queda poco para tener nuestro selector funcionando. En su propia página de GitHub se muestra cómo hacerlo. Empezaremos por añadir un &#8220;select&#8221; con las opciones que necesitemos.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="Selector de Colores">&lt;select name="colorpicker-shortlist" id="colorpicker"&gt;
  &lt;option value="#7bd148""&gt;Green&lt;/option&gt;
  &lt;option value="#5484ed"&gt;Bold blue&lt;/option&gt;
  &lt;option value="#a4bdfc"&gt;Blue&lt;/option&gt;
  &lt;option value="#46d6db"&gt;Turquoise&lt;/option&gt;
  &lt;option value="#7ae7bf"&gt;Light green&lt;/option&gt;
  &lt;option value="#51b749"&gt;Bold green&lt;/option&gt;
  &lt;option value="#fbd75b"&gt;Yellow&lt;/option&gt;
  &lt;option value="#ffb878"&gt;Orange&lt;/option&gt;
  &lt;option value="#ff887c"&gt;Red&lt;/option&gt;
  &lt;option value="#dc2127"&gt;Bold red&lt;/option&gt;
  &lt;option value="#dbadff"&gt;Purple&lt;/option&gt;
  &lt;option value="#e1e1e1"&gt;Gray&lt;/option&gt;
  &lt;option value="#cabdbf"&gt;#cabdbf&lt;/option&gt;
&lt;/select&gt;</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Solo nos quedaría cargar el script (ten presente que es dependiente de jQuery) e indicarle qué hacer</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:js decode:true " title="Scripts">&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript" src="js/jquery.simplecolorpicker.js"&gt;&lt;/script&gt;

&lt;link rel="stylesheet" href="jquery.simplecolorpicker.css"&gt;

&lt;script type="text/javascript"&gt;
$(document).ready(function() {

    // asigna valor por defecto
    $('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
    $('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());

    //cambia el color según la selección
    $('select[name="colorpicker-shortlist"]').on('change', function() {
    	$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
    });

})
&lt;/script&gt;</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Puedes encontrar una explicación más detallada en la propia página del plugin. No nos vamos a extender más en él ya que para nuestro propósito podríamos haber usado cualquier otro.</p>
<h5>El resultado</h5>
<p>Veamos el resultado obtenido al ponerlo todo junto en una aplicación práctica de uso genérico.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<div id="tshirt_container"><img decoding="async" id="tshirt_layer_1" class="tshirt_layer" src="/wp-content/uploads/2017/05/white-t-shirt.jpg" alt="t-shirt background" /><img decoding="async" id="tshirt_layer_2" class="tshirt_layer" src="/wp-content/uploads/2017/05/guy.png" alt="guy with t-shirt" /></div>
<p><select id="colorpicker" name="colorpicker-shortlist"><option value="#7bd148">Green</option><option value="#5484ed">Bold blue</option><option value="#a4bdfc">Blue</option><option value="#46d6db">Turquoise</option><option value="#7ae7bf">Light green</option><option value="#51b749">Bold green</option><option value="#fbd75b">Yellow</option><option value="#ffb878">Orange</option><option value="#ff887c">Red</option><option value="#dc2127">Bold red</option><option value="#dbadff">Purple</option><option value="#e1e1e1">Gray</option><option value="#cabdbf">#cabdbf</option></select></p>

		</div> 
	</div> 
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<style type="text/css">
.simplecolorpicker.picker {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1051;
  display: none;
  float: left;
  min-width: 160px;
  max-width: 283px;
  padding: 5px 0 0 5px;
  margin: 2px 0 0;
  list-style: none;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, .15);
  -webkit-border-radius: 4px;
     -moz-border-radius: 4px;
          border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
     -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  -webkit-background-clip: padding-box;
     -moz-background-clip: padding;
          background-clip: padding-box;
}
.simplecolorpicker.inline {
  display: table;
  padding: 6px 0;
  margin: auto;
}
.simplecolorpicker span {
  margin: 0 5px 5px 0;
}
.simplecolorpicker.icon,
.simplecolorpicker span.color {
  display: inline-block;
  cursor: pointer;
  border: 1px solid transparent;
}
.simplecolorpicker.icon:after,
.simplecolorpicker span.color:after {
  content: '\00a0\00a0\00a0\00a0';
}
.simplecolorpicker span.color[data-disabled]:hover {
  cursor: not-allowed;
  border: 1px solid transparent;
}
.simplecolorpicker span.color:hover,
.simplecolorpicker span.color[data-selected],
.simplecolorpicker span.color[data-selected]:hover {
  border: 1px solid #222;
}
.simplecolorpicker span.color[data-selected]:after {
  color: #fff;
}
.simplecolorpicker span.vr {
  border-left: 1px solid #222;
}

#tshirt_container{
 position: relative;
 width: 300px;
 height: 450px;
 display: table;
 margin: auto;
}
.simplecolorpicker{
 max-width: 300px;
}
.simplecolorpicker span.color[data-selected]:after {
  content: '\2714';
  width: 12px;
  display: block;
  padding-left: 4px;
}
#tshirt_container .tshirt_layer{
 position: absolute;
 display: table;
  width: 300px;
 height: 450px;
}
#tshirt_layer_1{
 z-index: 1;
}
#tshirt_layer_2{
	z-index: 2;
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}
.simplecolorpicker.icon, .simplecolorpicker span.color {
    width: 16px;
}
</style>
		</div>
	</div>

	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>La economía del método es clarísima. Hemos usado dos imágenes en lugar de trece. El dibujo de la camiseta, en este caso, forma parte de la misma imagen png del chico, pero no sería difícil usar una imagen independiente que también cargara dinámicamente en función de la selección del usuario.</p>
<h5>¿Qué nos queda?</h5>
<p>Bien, como ya sugerí en el párrafo anterior, basándose en estas técnicas se podrían implementar todas las variaciones de una tienda de camisetas usando como base muy pocas imágenes y colocando encima el dibujo seleccionado.</p>
<p><strong>En los casos en los que hay muchas variaciones de color la ventaja es más que evidente</strong>. En el ejemplo de abajo vemos que solo dos imágenes sustituyen a 24 variaciones.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<div id="shoes_container"><img decoding="async" id="shoes_layer_1" class="shoes_layer" src="/wp-content/uploads/2017/05/shoes.jpg" alt="shoes background" /><img decoding="async" id="shoes_layer_2" class="shoes_layer" src="/wp-content/uploads/2017/05/shoes.png" alt="shoes" /></div>
<p><select id="colorpicker2" name="colorpicker-longlist"><option value="#ac725e">#ac725e</option><option value="#d06b64">#d06b64</option><option value="#f83a22">#f83a22</option><option value="#fa573c">#fa573c</option><option value="#ff7537">#ff7537</option><option value="#ffad46">#ffad46</option><option value="#42d692">#42d692</option><option value="#16a765">#16a765</option><option value="#7bd148">#7bd148</option><option value="#b3dc6c">#b3dc6c</option><option value="#fbe983">#fbe983</option><option value="#fad165">#fad165</option><option value="#92e1c0">#92e1c0</option><option value="#9fe1e7">#9fe1e7</option><option value="#9fc6e7">#9fc6e7</option><option value="#4986e7">#4986e7</option><option value="#9a9cff">#9a9cff</option><option value="#b99aff">#b99aff</option><option value="#c2c2c2">#c2c2c2</option><option value="#cabdbf">#cabdbf</option><option value="#cca6ac">#cca6ac</option><option value="#f691b2">#f691b2</option><option value="#cd74e6">#cd74e6</option><option value="#a47ae2">#a47ae2</option></select></p>

		</div> 
	</div> 
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<style type="text/css">
#shoes_container{
 position: relative;
 width: 300px;
 height: 225px;
 display: table;
 margin: auto;
}

#shoes_container .shoes_layer{
 position: absolute;
 display: table;
  width: 300px;
 height: 225px;
}

#shoes_layer_1{
 z-index: 1;
}

#shoes_layer_2{
	z-index: 2;
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}
</style>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="/wp-content/themes/bridge-child/js/jquery.simplecolorpicker.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
    jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
	jQuery('select[name="colorpicker-shortlist"]').on('change', function() {
    	jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
  	});
    jQuery('select[name="colorpicker-longlist"]').simplecolorpicker('selectColor', '#ac725e');
    jQuery('#shoes_layer_2').css('background-color', jQuery('select[name="colorpicker-longlist"]').val());
	jQuery('select[name="colorpicker-longlist"]').on('change', function() {
    	jQuery('#shoes_layer_2').css('background-color', jQuery('select[name="colorpicker-longlist"]').val());
  	}); 	
})
</script>
		</div>
	</div>

	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Sin embargo, como dije con anterioridad, <strong>Explorer y Edge no producen el efecto deseado por su falta de soporte a la propiedad mix-blend-mode</strong>. Ambos cambiarán el color de fondo de la imagen según seleccionemos, pero se comportará de forma opaca y no se fusionará con la imagen inferior. Aunque se ha anunciado un futuro soporte por parte de Edge, en la actualidad esta es la situación.</p>
<p>Por ahora vamos a dejarlo aquí. <strong>Más adelante explicaremos la manera de conseguir el mismo efecto en esos navegadores</strong>. Para los que no puedan esperar puedo anticiparles que la solución cosiste en <a href="http://albertogasparin.it/articles/2011/05/html5-multiply-filter-canvas/" target="_blank">realizar un filtro multiply a través de una función aplicada sobre un elemento canvas</a>.</p>
<p>Mientras encuentro tiempo para elaborar esa exlicación, con el siguiente botón puedes <strong>descargar todos los archivos necesarios</strong> para poner en práctica lo que te he contado en esta página. Espero que te sea de utilidad.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:center;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper"><a  itemprop="url" href="/wp-content/uploads/2017/05/change-image-color.zip" target="_self"  class="qbutton  center default" style="">Descargar</a>	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style='background-color:#fcf9e0; text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p><strong>Actualización</strong>: Si estás interesado en una nueva versión que funciona en todos los navegadores, visita nuestra nueva entrada: &#8220;<a href="http://www.develooping.com/colorear-parte-de-imagen-con-canvas/">Colorear parte de una imagen con Canvas</a>&#8220;</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/">Cambiar el color de parte de una imagen</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>De SEO</title>
		<link>https://www.develooping.com/de-seo/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Tue, 18 Apr 2017 16:33:32 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2015</guid>

					<description><![CDATA[<p>Si, lo has adivinado. Este texto habla de SEO. Es verdad que internet está plagadita de páginas que tratan el tema, que aconsejan estrategias para ganar posiciones en los resultados de las búsquedas, que explican lo que Google  considera correcto y lo que no, lo que podría ayudarte a escalar puestos y lo que podría perjudicarte…</p>
<p>La entrada <a href="https://www.develooping.com/de-seo/">De SEO</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Si, lo has adivinado. <strong>Este texto habla de SEO</strong>. Es verdad que internet está plagadita de páginas que tratan el tema, que aconsejan estrategias para ganar posiciones en los resultados de las búsquedas, que explican lo que Google  considera correcto y lo que no, lo que podría ayudarte a escalar puestos y lo que podría perjudicarte…</p>
<p>Y no es difícil adivinar que <strong>este texto también habla de DESEO</strong>. Porque todo el que deposita ilusión en un proyecto desea verlo funcionar. Pero cuidado, porque muchos parecen empeñados en crearte una crisis existencial diciéndote que no existes si no estás en internet, o en la primera página de Google, o en Facebook o en cualquier otra plataforma social… y claro, supongo que querrás existir.</p>
<p>Google solo devuelve 10 resultados en su primera página, así que existir te va a costar lo tuyo.</p>
<h5>¿Quieres ser de los primeros? Sé único.</h5>
<p>Pretender alcanzar las primeras posiciones de Google, si acabas de llegar y perteneces a un sector con una competencia normal es, cuando menos, iluso.</p>
<p>Es verdad que encontrarás a &#8220;profesionales&#8221; que se aprovecharán de tu deseo y te dirán lo que quieres escuchar, prometiéndote colocar tu página en los primeros puestos. Y no es que esto no pueda conseguirse, pero en internet, como en la vida misma, el camino para destacar en algo consiste en diferenciarse de la competencia, aplicar una buena estrategia enfocada al resultado y dedicar tiempo y esfuerzo en crear contenidos únicos y útiles.</p>
<p><strong>Desconfía de los que dicen que hacen SEO y crean contenidos de pésima calidad y nula utilidad</strong>, enfocados exclusivamente a recopilar palabras clave con la errónea idea de que eso mejorará la posición en los buscadores. El algoritmo de Google, cambiante y en continua evolución, es cada vez más &#8220;inteligente&#8221; y capaz de detectar y penalizar este tipo de contenido. Si bien todavía está lejos de ser perfecto, está claro cual es su tendencia.</p>
<h5>¿Quieres que lleguen a ti? Llega tú a ellos.</h5>
<p>Puedes hacer lo que quieras, pero mi consejo es que no crees contenidos porque piensas que Google los va a valorar, sino porque piensas que los van a valorar tus visitantes. De nada sirve aparecer en las primeras posiciones si estos enlaces conducen a contenidos de bajísima calidad y van a provocar que tu visitante prefiera saltar a la siguiente opción que le ha dado el buscador.</p>
<p><strong>Piensa en tus visitantes</strong> y crea contenidos que les interese y les ayude. <strong>Sé natural y evita el texto escrito para buscadores</strong>. Los títulos y las negritas sirven fundamentalmente para estructurar el texto y reforzar las ideas principales, no para acumular palabras clave.</p>
<p>Al final son las personas las que validarán tu web y van a usar tus servicios o comprar tus productos. Miedo me da pensar en cómo quedaría &#8220;Cien años de soledad&#8221;, por poner un ejemplo, si lo retocara algún &#8220;experto&#8221; en SEO.</p>
<h5>¿Quieres que te localicen? Encuéntrate.</h5>
<p>La naturaleza de tu negocio influirá directamente sobre las estrategias de comunicación que necesitarás plantear, y también sobre las estrategias de posicionamiento. Ambas deberían ser fruto de un análisis profundo, ya que <strong>no existe un método universal aplicable a cualquier tipo de web</strong>, empresa o actividad.</p>
<p>Si alguien te ofrece algo parecido a &#8220;un paquete básico de posicionamiento por XX euros&#8221; te aconsejo que lo mires y remires bien ( en especial si XX no es un número muy alto). Ya he visto demasiadas veces como <strong>malas estrategias SEO han supuesto un perjuicio para la web que debían ayudar a posicionar</strong>.</p>
<p>Piensa en el producto que ofreces, dónde está tu público y qué busca. Imaginemos tres ejemplos de negocios localizados en Málaga: un empresa dedicada al alquiler turístico vacacional, una tienda online que vende perfumes y cosméticos, y un restaurante con servicio a domicilio. Aunque las tres están ubicadas en la misma ciudad van destinadas a públicos muy diferentes. La primera no tiene clientes locales y debería esforzarse en llegar a gente de fuera, especialmente extranjeros. La segunda, en nuestro ejemplo, pretende alcanzar al público nacional. Los clientes de la tercera residen en la localidad. Es bastante obvio que cada una necesita una estrategia diferente enfocada a sus clientes.</p>
<h5>¿Quieres resultados? Analízalos a fondo.</h5>
<p>El orden en que Google devuelve los resultados de una búsqueda depende de muchos factores. Entre ellos, Google usa la geolocalización para priorizar resultados cercanos. También tu historial de búsquedas ayuda a obtener conclusiones sobre tus preferencias y ofrecerte resultados más acordes a ellas. Ambos comportamientos pueden resultar útiles pero <strong>en algunas ocasiones pueden inducir a engaños</strong>.</p>
<p>Imagina la empresa de alquiler turístico del apartado anterior. Supongamos que su &#8220;especialista SEO&#8221; le muestra que ha logrado que aparezca una página en una posición aceptable buscando los términos &#8220;Holiday apartment in Malaga&#8221; (recuerda que la mayoría de sus clientes potenciales son extranjeros). Lo que parece un logro podría ser solo una ilusión.</p>
<p>En mi caso he hecho una sencilla prueba con esa misma búsqueda. Primero he buscado normalmente en Google, conservando mi historial de búsquedas y usando un navegador que, como la inmensa mayoría, reporta mi localización. Luego me he fijado en alguna empresa local que salga en la segunda o tercera página (lo siento, en este sector los resultados más relevantes están copados por los grandes portales).</p>
<p>Después he realizado exactamente la misma búsqueda usando el navegador <a href="https://www.torproject.org/projects/torbrowser.html.en" target="_blank">Tor</a> y el buscador <a href="https://www.startpage.com/" target="_blank">StartPage</a> (que consulta en Google pero no guarda datos). Curiosamente el resultado en el que me fijé anteriormente ha desaparecido. No hay ni la menor señal de la página, y ocurre lo mismo desde cualquier país extranjero. <strong>Si la empresa quería llegar a visitantes de otros países, los resultados que se obtienen cuando realiza una búsqueda local solo le están confundiendo</strong>.</p>
<p>Como decía al principio, encontrarás miles de textos más o menos técnicos sobre SEO. Mi intención con éste es solo aclarar algunas dudas frecuentes y, si puede ser, evitar problemas a las muchísimas personas que seguramente están interesadas en enteder algo más sobre el posicionamiento en buscadores y prefieren que no les hablen con siglas, jerga especializada, términos técnicos o palabrería SEO.</p>
<p>&nbsp;</p>
<p>La entrada <a href="https://www.develooping.com/de-seo/">De SEO</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vídeos de fondo en iOS (con autoplay)</title>
		<link>https://www.develooping.com/videos-fondo-ios-autoplay/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Fri, 01 Apr 2016 08:08:03 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1566</guid>

					<description><![CDATA[<p>[:es]Últimamente habrás encontrado más de un sitio (como nuestra página principal) que usa vídeos como fondos.</p>
<p>Usando la marca video de HTML5 y su atributo autoplay, es posible hacer que empiecen de forma automática sin necesidad de acción por parte del usuario. Con el CSS adecuado puede colocarse como fondo y ajustarse al ancho de la pantalla.<br />
Sin embargo, habrás visto que esas páginas suelen sustituir ese vídeo por una imagen fija en sus versiones para móvil.[:]</p>
<p>La entrada <a href="https://www.develooping.com/videos-fondo-ios-autoplay/">Vídeos de fondo en iOS (con autoplay)</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Últimamente habrás encontrado más de un sitio (como nuestra <a href="http://develooping.com">página principal</a>) que usa vídeos como fondos.</p>
<p>Usando la marca <strong>&lt;video&gt;</strong> de HTML5 y su atributo <strong>autoplay</strong>, es posible hacer que empiecen de forma automática sin necesidad de acción por parte del usuario. Con el CSS adecuado puede colocarse como fondo y ajustarse al ancho de la pantalla.</p>
<p>Hasta aquí todo bien. Sin embargo, habrás visto que esas páginas suelen sustituir ese vídeo por una imagen fija en sus versiones para móvil. Esto se debe principalmente a que Apple y Google, entendiendo que el pobrecito usuario de móvil podría disponer de un consumo de datos más limitado que el de ordenadores, han desactivado la posibilidad de que los vídeos comiencen automáticamente para evitarles sorpresas y gastos innecesarios. Y en el caso de iOS, además, el vídeo ni siquiera se reproduce dentro de la página.</p>
<p>No es que quiera contradecir los filantrópicos principios que han motivado a ambas compañías a tomar tal decisión, pero ya sabéis que hay gente que no soporta bien los límites impuestos. Buscando una solución, encontré el <a href="https://github.com/Stanko/html-canvas-video-player" target="_blank">código de Stanko en GitHub</a> (no, no vende tabaco), que permite reproducir vídeos inline en móviles sobre un elemento <strong>&lt;canvas&gt;</strong>. <strong>Quede claro que todo el mérito es suyo y que yo solo me he limitado a modificar su código para mis propósitos</strong>.</p>
<h5>Que empiece ya, que el público se va</h5>
<p>Ok, vayamos al grano. Como suelen decir, en la vida todo tiene solución. Así que empecemos por el principio y veamos el código estándar para insertar un vídeo con HTML5.</p>
<pre title="video HTML5" lang="html">
<video class="video" poster="img.jpg" autoplay="autoplay" loop="loop" muted="muted">
	<source src="littlegirleyes.webmhd.webm" type="video/webm" />
	<source src="littlegirleyes.mp4" type="video/mp4" />
	<source src="littlegirleyes.oggtheora.ogv" type="video/ogg" />
	Tu navegador no soporta video HTML5.
</video></pre>
<p>Ya que vamos a usarla como fondo, añadiremos a la marca <strong>&lt;video&gt;</strong> los atributos <strong>autoplay</strong>, para que empiece automáticamente, <strong>loop</strong> para que reproduzca en bucle, y <strong>muted</strong> para eliminar el sonido. He puesto el vídeo en los tres formatos estándares para aumentar el número de navegadores alcanzados, si bien, hoy en día la práctica totalidad respondería perfectamente solo con un archivo mp4 <a href="http://caniuse.com/#feat=mpeg4" target="_blank">como puedes ver en caniuse.com</a>. Por ese motivo, una vez mostrado el ejemplo genérico, <strong>a partir de aquí usaré solamente el archivo mp4</strong>.<br />
Añadimos también el atributo <strong>poster</strong> para mostrar una imagen estática mientras el vídeo carga y un poquito de CSS para hacer que el vídeo se adapte al elemento que lo contiene.</p>
<pre title="un poquito de CSS" lang="CSS">video{
  width: 100%;
}
</pre>
<p>Como resultado del código anterior obtenemos el siguiente vídeo.<br />
<video style="width: 100%;" poster="/wp-content/uploads/2016/04/littlegirleyes.jpg" autoplay="autoplay" loop="loop" muted="muted"><source src="/wp-content/uploads/2016/04/littlegirleyes.webmhd.webm" type="video/webm" /><source src="/wp-content/uploads/2016/04/littlegirleyes.mp4" type="video/mp4" /><source src="/wp-content/uploads/2016/04/littlegirleyes.oggtheora.ogv" type="video/ogg" />Tu navegador no soporta video HTML5.</video><br />
Si estás visitando esta página con un ordenador, verás que el vídeo se reproduce automáticamente en bucle. Pero si estás usando un móvil la cosa cambia. En otra ocasión nos ocuparemos de Android. Ahora, como dice el título, <strong>veamos qué pasa en iOS y cómo resolverlo</strong>.</p>
<h5>iOS: ni inline, ni autoplay</h5>
<p>Pues si, una pena. Si nos estás viendo desde un iPhone o un iPad, en lugar de un vídeo en movimiento verás una imagen estática con una marca encima esperando a que la pulses para ponerse en marcha. Y si pulsas sobre ella la cosa empeora. El vídeo no se reproduce en la página, sino que se abre a toda pantalla. Recuerda que nuestro propósito inicial era <strong>usarlo como fondo</strong>, así que este comportamiento, por mucha carita de niña buena que ponga el vídeo, no nos vale.<br />
Afortunadamente, tal como indiqué antes, nuestro amigo Stanko ha creado el estupendo script <a href="https://github.com/Stanko/html-canvas-video-player" target="_blank">HTML canvas video player</a> que <strong>nos permite reproducir un video de forma inline</strong> en un iAparato, y con pequeñas modificaciones conseguiremos que funcione para nuestro propósito.<br />
Su funcionamiento es sencillo, aunque requiere alguna marca más que un vídeo HTML5 estándar. Para empezar colocamos el vídeo, un elemento canvas y un par de div anidados que servirán de barra de tiempo, y lo metemos a su vez en otro div para tenerlo localizado.</p>
<pre title="video HTML5" lang="html">
<div class="video-inline">
  <video class="video" poster="img.jpg" autoplay="autoplay" muted="muted">
	<source src="littlegirleyes.mp4" type="video/mp4" />
	Tu navegador no soporta video HTML5.
  </video>
  <canvas class="canvas"></canvas>
  <div class="video-timeline js-timeline">
	<div class="video-timeline-passed js-timeline-passed"></div>
  </div>
</div>
</pre>
<p>Después cargamos el archivo JavaScript</p>
<pre title="Canvas Video Player" lang="javascript">
	<script src="js/canvas-video-player.js"></script>
</pre>
<p>E insertamos las instrucciones para que funcione</p>
<pre title="Canvas Video Player" lang="javascript">
<script type="text/javascript">
var canvasVideo = new CanvasVideoPlayer({
    videoSelector: '.video',
    canvasSelector: '.canvas',
    timelineSelector: '.js-timeline',
    framesPerSecond: 25,
    autoplay: true,
    audio: false
});
</script>
</pre>
<p>Si lo único que querías era poder <strong>reproducir vídeos inline en iPhones y iPads</strong> puedes bajártelo y obtener más información sobre sus opciones y métodos <a href="http://stanko.github.io/html-canvas-video-player/" target="_blank">aquí</a>.<br />
Pero si lo que quieres es usarlo para poner un vídeo de fondo, necesitará unas pequeñas modificaciones y seguir leyendo un poquito más.</p>
<h5>Un poquito más a fondo</h5>
<p>Como indicaba, nuestro propósito es poder usar el vídeo como fondo, así que hay pequeños detalles que conviene modificar para ajustar el script a nuestras necesidades.<br />
Para empezar, una prestación del script original es hacer que se pare o reanude la reproducción cada vez que se hace click sobre el vídeo. Un comportamiento que no nos viene bien para usar el vídeo como fondo. El script original tampoco permite hacer loops, y es posible que queramos que nuestro fondo sea un bucle perpetuo.<br />
Para añadir estas dos prestaciones he añadido dos nuevas opciones: makeLoop y pauseOnClick</p>
<pre title="Canvas Video Player" lang="javascript">
<script>
		var canvasVideo = new CanvasVideoPlayer({
			videoSelector: '.video',
			canvasSelector: '.canvas',
			timelineSelector: false,
			autoplay: true,
			makeLoop: true,
			pauseOnClick: false,
			audio: false
		});
</script>
</pre>
<p>En esta nueva versión modificada, makeLoop es un valor booleano que permite indicar si queremos que el vídeo se ejecute en bucle. A pauseOnClick puede asignársele el valor false para evitar pausar el vídeo cuando se detecta un click.<br />
Hay que aclarar que, al igual que en la versión inicial, <strong>para que el autoplay funcione es necesario desactivar el audio</strong>. Eso no debería preocuparnos, ya que lo queremos como imagen de fondo.<br />
Por último, recordemos que no hay problemas con ordenadores de escritorio, así que mejor ponemos un condicional que haga que éstos sigan usando el vídeo HTML5 y los iCacharros su versión corriendo sobre canvas. Así, nos quedaría lo siguiente</p>
<pre title="Canvas Video Player" lang="javascript">
<script>
	var isIOS = /iPad|iPhone|iPod/.test(navigator.platform);
	
	if (isIOS) {

		var canvasVideo = new CanvasVideoPlayer({
			videoSelector: '.video',
			canvasSelector: '.canvas',
			timelineSelector: false,
			autoplay: true,
			makeLoop: true,
			pauseOnClick: false,
			audio: false
		});
	}else {
		// Use HTML5 video
		document.querySelectorAll('.canvas')[0].style.display = 'none';
	}	
</script>
</pre>
<h5>¿El fin?</h5>
<p>Bueno, tanto como el fin no. La versión mostrada es mejorable y, por ahora, no plantea qué haremos con Android, algo que dejaremos para otra ocasión. Poniéndolo todo junto, la página nos queda como sigue</p>
<pre title="Canvas Video Player" lang="javascript">
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8" >
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, width=device-width">

	<title>HTML canvas video player</title>

	<link rel="stylesheet" href="styles.css">
</head>

<body>
		<div class="video-responsive">
			<video class="video" muted="muted" loop="loop" autoplay="autoplay">
				<source src="littlegirleyes.mp4" type="video/mp4">
				Your browser does not support HTML5 video.
			</video>

			<canvas class="canvas"></canvas>
			
			<div id="over_video">Look at me</div>
		</div>

	<script src="canvas-video-player.js"></script>


	<script>
	
	var isIOS = /iPad|iPhone|iPod/.test(navigator.platform);
	
	if (isIOS) {
 
		var canvasVideo = new CanvasVideoPlayer({
			videoSelector: '.video',
			canvasSelector: '.canvas',
			timelineSelector: false,
			autoplay: true,
			makeLoop: true,
			pauseOnClick: false,
			audio: false
		});
		
	}else {
		
		// Use HTML5 video
		document.querySelectorAll('.canvas')[0].style.display = 'none';
		
	}	
	
	</script>
</body>
</html>
</pre>
<p><a href="/canvas-video-player" target="_blank">Pulsa aquí</a> para ver en otra ventana el resultado de lo anterior (si tienes uno, puedes mirarlo en tu iPhone), con el <a href="/canvas-video-player/styles.css" target="_blank">CSS</a> correspondiente y <a href="/canvas-video-player/canvas-video-player.js" target="_blank">el script</a> de Stanko modificado.<br />
<strong>También puedes bajártelo todo juntito, con un vídeo de prueba y el script original pulsando aquí</strong></p>
<div style="text-align:center;"><a href="/wp-content/uploads/2016/04/html-canvas-video-player.zip" class="qbutton">DESCARGAR</a></div>

		</div> 
	</div> </div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/videos-fondo-ios-autoplay/">Vídeos de fondo en iOS (con autoplay)</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Flash revive como HTML5 gracias a Swiffy</title>
		<link>https://www.develooping.com/revive-tus-proyectos-animaciones-flash-html5/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Mon, 29 Feb 2016 23:37:52 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1504</guid>

					<description><![CDATA[<p>Si llevas ya algunos años recorriendo internet quizás recuerdes la moda de las intros en Flash. No había web que no tuviera una animación "chula" y llenita de efectos que había que saltarse para poder ir al contenido. Aunque el pobrecito Flash realmente no tenía la culpa. Algunos desarrolladores, entre los que me incluyo, nos esforzábamos por hacer entender que, como todas las tecnologías, era buena siempre que se usara de manera correcta y se aprovecharan sus ventajas y prestaciones. Eran los tiempos en los que no teníamos HTML5, ni CSS3 y las posibilidades de Flash y su ActionScript estaban muy por delante de lo que podía hacerse con otras herramientas. A pesar de ello, se utilizó mayormente para dificultar la usabilidad y el acceso a la información.</p>
<p>La entrada <a href="https://www.develooping.com/revive-tus-proyectos-animaciones-flash-html5/">Flash revive como HTML5 gracias a Swiffy</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Si llevas ya algunos años recorriendo internet quizás recuerdes la moda de las intros en Flash. No había web que no tuviera una animación &#8220;chula&#8221; y llenita de efectos que había que saltarse para poder ir al contenido. Aunque el pobrecito Flash realmente no tenía la culpa. Algunos desarrolladores, entre los que me incluyo, nos esforzábamos por hacer entender que, como todas las tecnologías, era buena siempre que se usara de manera correcta y se aprovecharan sus ventajas y prestaciones. Eran los tiempos en los que no teníamos HTML5, ni CSS3 y las posibilidades de Flash y su ActionScript estaban muy por delante de lo que podía hacerse con otras herramientas. A pesar de ello, se utilizó mayormente para dificultar la usabilidad y el acceso a la información.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>¿La muerte de Flash?</h5>
<p>La irrupción masiva de móviles y tablets, con su escaso o nulo soporte para Flash, y las nuevas posibilidades que incorporaban los últimos estándares hizo que muchos terminaran dando por muerta esta tecnología. De hecho, incluso yo mismo llevaba ya muchísimo tiempo sin hacer nada con Flash hasta que hoy he descubierto Swiffy de Google, un conversor de Flash a HTML5 que puede hacer que tus archivos SWF lleguen a mayor audiencia y funcionen en todos los dispositivos modernos.</p>
<p>Aunque Swiffy está lejos de ser perfecto, es ideal para convertir animaciones, pequeños juegos o banners con los que generalmente hace un buen trabajo, pero puede fallar con proyectos complejos o que hagan uso de prestaciones no soportadas. Además, es incapaz de convertir archivos superiores a 1MB lo que supone una gran limitación.</p>
<p>Si tienes archivos SWF de menos de 1MB, puedes convertirlos a HTML5 <a href="https://developers.google.com/swiffy/convert/upload" target="_blank">subiéndolo a la página de Swiffy</a>. Si dispones de Adobe Flash también puedes <a href="https://developers.google.com/swiffy/convert/flash-extension" target="_blank">bajarte e instalar la extensión</a> que te permitirá guardar tus archivos .fla como HTML5. Hay que tener presente que la extensión tiene la misma limitación de 1MB y que no es compatible con la versión Creative Cloud de Flash. Y aunque animaciones y proyectos simples pueden convertirse sin más, en proyectos más complejos podría ser necesario readaptar algo de código para &#8220;su nueva vida&#8221; o replantear las interacciones para su uso con dispositivos táctiles.</p>
<p>Al usar cualquiera de las dos versiones obtendremos una página .html compatible con todos los dispositivos, que incluye los scripts necesarios para emular el proyecto Flash mediante JavaScript.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Un pequeño juego de ejemplo</h5>
<p>Para que veas las posibilidades de esta tecnología aquí te dejo una versión del juego clásico <em>snake</em> que debería funcionar en cualquier dispositivo y navegador reciente.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="https://www.gstatic.com/swiffy/v7.4/runtime.js"></script>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script>
      swiffyobject = {"as3":false,"frameRate":12,"frameCount":2,"backgroundColor":-1,"frameSize":{"ymin":0,"xmin":0,"ymax":8000,"xmax":4000},"fileSize":7977,"v":"7.4.1","internedStrings":["direccion","derecha","izquierda","arriba","69E69E38k38k","::::::","inicia","60G0Z20o20e","sensor",":50g0ya00O:a:00Ea00o:a:00e","cuadrado","0I0I0r0r","::::05q705e","gusano","::::0j0j","282g::282g0j0j",":80F0Ra:60ca60m:a:60Cc","cuadrado0","t0p0h0h","ponleotro","::::0d:","puntos","pierde","puntua","::::80B0L","colocabola","0h0d00f0p","length",":80F2Ra:60ca60m:a:60Cc","0C0C060d060d"],"version":7,"tags":[{"type":9,"actions":[{"constants":["#13","Array","xprevia","yprevia","#17","i","#10","_root.cuadrado","root.cuadrado","#0","#1","#21","diferenciax","diferenciay","#25","mueve","xbola","ybola","bola","#2","#3","abajo","_root","_x","_y","#27",".sensor","#8","hitTest","#22","#23","#19","push","gotoAndStop"],"type":136},{"type":305,"value":"#6"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":0,"type":304},{"type":305,"value":0},{"index":1,"type":304},{"type":64},{"type":79},{"index":1,"type":303},{"index":2,"type":304},{"type":305,"value":0},{"index":1,"type":304},{"type":64},{"type":79},{"index":1,"type":303},{"index":3,"type":304},{"type":305,"value":0},{"index":1,"type":304},{"type":64},{"type":79},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"type":305,"value":0},{"index":4,"type":304},{"type":79},{"index":5,"type":304},{"type":305,"value":1},{"type":29},{"index":5,"type":304},{"type":28},{"type":305,"value":4},{"type":72},{"type":18},{"type":157,"target":75},{"index":1,"type":303},{"index":4,"type":304},{"type":78},{"index":6,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":16384},{"type":305,"value":100},{"index":5,"type":304},{"type":28},{"type":71},{"type":71},{"type":36},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"type":305,"value":40},{"type":305,"value":10},{"index":5,"type":304},{"type":28},{"type":12},{"type":11},{"type":35},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"index":8,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":79},{"index":5,"type":304},{"index":5,"type":304},{"type":28},{"type":80},{"type":29},{"type":153,"target":27},{"index":1,"type":303},{"index":9,"type":304},{"index":10,"type":304},{"type":79},{"index":1,"type":303},{"index":11,"type":304},{"type":305,"value":0},{"type":79},{"index":12,"type":304},{"type":305,"value":10},{"type":29},{"index":13,"type":304},{"type":305,"value":0},{"type":29},{"type":305,"value":0},{"index":1,"type":303},{"index":14,"type":304},{"type":82},{"type":23},{"type":305,"value":0},{"index":1,"type":303},{"index":15,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#25"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":16,"type":304},{"type":305,"value":10},{"type":305,"value":10},{"type":48},{"type":12},{"type":29},{"index":17,"type":304},{"type":305,"value":10},{"type":305,"value":10},{"type":48},{"type":12},{"type":29},{"index":1,"type":303},{"index":18,"type":304},{"type":78},{"type":305,"value":0},{"index":16,"type":304},{"type":28},{"type":35},{"index":1,"type":303},{"index":18,"type":304},{"type":78},{"type":305,"value":1},{"index":17,"type":304},{"type":28},{"type":35}]},{"type":60},{"type":305,"value":"#1"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":10,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"#2"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":19,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"#3"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":20,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"abajo"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":21,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"mueve"},{"args":[],"type":155,"body":[{"index":22,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":79},{"index":22,"type":304},{"type":28},{"index":3,"type":304},{"type":78},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":10,"type":304},{"type":73},{"type":18},{"type":157,"target":46},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":10},{"type":71},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":19,"type":304},{"type":73},{"type":18},{"type":157,"target":68},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":10},{"type":11},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":20,"type":304},{"type":73},{"type":18},{"type":157,"target":90},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":10},{"type":11},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":21,"type":304},{"type":73},{"type":18},{"type":157,"target":112},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":10},{"type":71},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":0},{"type":72},{"type":18},{"type":157,"target":129},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":305,"value":190},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":190},{"type":103},{"type":18},{"type":157,"target":146},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":305,"value":0},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":0},{"type":72},{"type":18},{"type":157,"target":163},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":305,"value":190},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":190},{"type":103},{"type":18},{"type":157,"target":180},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":305,"value":0},{"type":79},{"index":5,"type":304},{"type":305,"value":1},{"type":29},{"index":5,"type":304},{"type":28},{"index":22,"type":304},{"type":28},{"index":0,"type":304},{"type":78},{"index":25,"type":304},{"type":78},{"type":72},{"type":18},{"type":157,"target":280},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":33},{"index":26,"type":304},{"type":33},{"type":28},{"type":305,"value":1},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":27,"type":304},{"type":78},{"index":28,"type":304},{"type":82},{"type":18},{"type":157,"target":218},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":29,"type":304},{"type":82},{"type":23},{"index":22,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"type":34},{"type":79},{"index":22,"type":304},{"type":28},{"index":3,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"type":34},{"type":79},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"type":305,"value":1},{"type":11},{"type":78},{"type":35},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"index":22,"type":304},{"type":28},{"index":3,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"type":305,"value":1},{"type":11},{"type":78},{"type":35},{"index":5,"type":304},{"index":5,"type":304},{"type":28},{"type":80},{"type":29},{"type":153,"target":183},{"index":22,"type":304},{"type":28},{"index":18,"type":304},{"type":78},{"index":27,"type":304},{"type":78},{"type":305,"value":1},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":27,"type":304},{"type":78},{"index":28,"type":304},{"type":82},{"type":18},{"type":157,"target":303},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":30,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#23"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":11,"type":304},{"index":1,"type":303},{"index":11,"type":304},{"type":78},{"type":80},{"type":79},{"type":305,"value":0},{"index":1,"type":303},{"index":31,"type":304},{"type":82},{"type":23},{"type":305,"value":0},{"index":1,"type":303},{"index":14,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#19"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":5,"type":304},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"index":25,"type":304},{"type":78},{"type":29},{"index":1,"type":303},{"index":4,"type":304},{"type":78},{"index":6,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":16384},{"type":305,"value":100},{"index":5,"type":304},{"type":28},{"type":71},{"type":71},{"type":36},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"type":305,"value":1000},{"type":35},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"type":305,"value":1000},{"type":35},{"index":8,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"index":32,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#22"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"type":305,"value":2},{"type":305,"value":1},{"index":1,"type":303},{"index":33,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":7}]},{"paths":[{"data":["::000da:000da000d:a:000Dc"],"fill":0}],"flat":true,"bounds":":000d000d000d","fillstyles":[{"color":-3289651,"type":1}],"id":1,"type":1},{"depth":1,"id":1,"type":3,"matrix":0},{"paths":[{"data":["::000da:000Da000d:a:000da000D:"],"line":0}],"flat":true,"bounds":"#29","linestyles":[{"color":-3407872,"width":60}],"id":2,"type":1},{"depth":2,"id":2,"type":3,"matrix":0},{"paths":[{"data":[":0I0Ia:0ra0r:a:0Rc"],"fill":0}],"flat":true,"bounds":"#11","fillstyles":[{"color":-3407872,"type":1}],"id":3,"type":1},{"frameCount":1,"id":4,"type":7,"tags":[{"depth":1,"id":3,"type":3,"matrix":0},{"type":2}]},{"frameCount":1,"id":5,"type":7,"tags":[{"depth":1,"id":3,"type":3,"matrix":"#15"},{"depth":2,"name":"#8","id":4,"type":3,"matrix":"#14"},{"type":2}]},{"depth":3,"name":"#17","id":5,"type":3,"matrix":"::::00r00r"},{"paths":[{"data":["::0Ib8C:4F7bbZzZ3fb:7cz4fbzz4fzb7c:3fZbz7B7b4FbA7C7B3FbZ7B3F7Bc"],"fill":0}],"flat":true,"bounds":"#11","fillstyles":[{"color":-13312,"type":1}],"id":6,"type":1},{"frameCount":1,"id":7,"type":7,"tags":[{"depth":1,"id":6,"type":3,"matrix":"564n::564n0k0k"},{"type":2}]},{"depth":6,"name":"control","id":7,"type":3,"matrix":"958E::958E48C0r","actions":[{"actions":[{"type":305,"value":0},{"type":305,"value":"_root"},{"type":28},{"type":305,"value":"#6"},{"type":82},{"type":23}],"events":128,"key":0},{"actions":[{"type":305,"value":0},{"type":305,"value":"_root"},{"type":28},{"type":305,"value":"mueve"},{"type":82},{"type":23}],"events":64,"key":0},{"actions":[{"constants":["_root","#0","#1","#2"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":1},{"actions":[{"constants":["_root","#0","#2","#1"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":2},{"actions":[{"constants":["_root","#0","abajo","#3"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":14},{"actions":[{"constants":["_root","#0","#3","abajo"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":15}]},{"frameCount":1,"id":8,"type":7,"tags":[{"depth":1,"id":6,"type":3,"matrix":0},{"type":2}]},{"frameCount":1,"id":9,"type":7,"tags":[{"depth":1,"id":6,"type":3,"matrix":"#15"},{"depth":2,"name":"#8","id":8,"type":3,"matrix":"#14"},{"type":2}]},{"depth":8,"name":"bola","id":9,"type":3,"matrix":"::::48C01f"},{"descent":226,"ascent":984,"leading":29,"name":"Helvetica Neue Bold Condensed","glyphs":[{"data":":6e9Oa:9oa5m:a:9Oc","unicode":".","advance":246},{"data":":6x28Fa9ciboix4cbjym9fad2ka:9gaD6kbC7dL6gbI8bX0dbOk0DkbX:9CIbOIX4CbJYM9FaD2Ka:9Gad7Kbc7Dl5Gbi8Bx0DboK0dKc::7Ib1H:6L3cb6D2c9F6hbV3e7B3laE5nb:7ij4pbk7f7c9jbz2d0g9eb4dr0krb1h:6l1Cb6d1C9f5Hbo6C7b3Lae5Nb:7IJ4PbK7F7C9JbZ2D0G1Fb3DS0KSc","unicode":"0","advance":492},{"data":":6v25GbL2f4E9hb3D8b6K8baN:a:6ia5n:a:12ea7n:a:25Gc","unicode":"1","advance":492},{"data":":4x25Gb7K:1Q5eb7B7b1D6fbM8cM9ha:8ba1n:ac4EbbZk6DbiSx0CbpK4dKb6c:4evbrwr8faC9daK0daW7ca9C0da0F5ea0G3gb0C6c0E4gbT8c0C0hbI2dI0ia46d:a:4Ka73B:beUw9Dbs8B1e8Ea2h6Ga3e3Ebu7B4c4Ebn8Bt8Eaf5Fb:8DM4HbN7C0D3Fb3E1E4P1Ec","unicode":"2","advance":492},{"data":":4x25Gb4J:9O3eb7Bz0D7fbN0dN4ia5m:ac7DbbUj7CbiPwYa9cHb6c:3eubrvr4gaE3daN6caZzbPi9Cia9D:a:7ia0e:b0c:9djbrj8b8bbkqn9cad7daC5dbBuK7cbIpYybOi2Dib8D:4F3CbP3CQ7Ia1N:a:cb:6j2e3pbz9b5f3db0do3ioa8fEa4eOb7dS3g1Eb7b2C6c1Gbi9Ci6Gb:8F9B4Kb9B5D0J7Ea:Bb2eK2h2Eb9b2D9b7Jb:8DN4HbN5C1D8Eb5E5D4O5Dc","unicode":"3","advance":492},{"data":":73b40Ea:75ba4N:a2n75Bc:P5Ra0X54da:1la8y:a:0oa5m:a:0Oa9f:a:5Ka9F:a:60Dc","unicode":"4","advance":492},{"data":":8e10Ga7B94ca2m:bd1Cu9DbqR9dRa1dgbphzybiqn7dad5gb:1gT6jbT5c6F5cbX:8CLbOKV9BbHRJ9CaB9Ca1N:a:tb:1cg6fbh5c1c5fbv1c5f9db2ds1ksa4kRb5dR2g4Ebz5C6c4Hbj9Dj0Kb:3DH4HbH2D8B4GbT3C4E3Eb5CT7HTb7D:0Hmb3Cl3E1daB:ao5Pa7z:a:4Kc","unicode":"5","advance":492},{"data":":0y62Ca7chaywbr2cr6jaC7ebBzJ5dbItX1cbPj3DjbZ:1DJbPKY0CbISL6DaC7Eb:4Gs6JbiOxWbpH8cHc:h63Cb0I:9M4cb9D4c2G0ibY0h8B8laD9nb:6fg8lbg1f1c8jbx6d9f3gb5d7b1l7bb1f:6jQb5dP3g9Db5e5F5e0Sb:0EI1IbJ2D1C2GbU0C5E7Db4CQ2HQb9D:3Hqb4Cq3E6daB:a:6Cac4Gbc4Cm8EbjY8b9CbqM6dMb7c:2evbowo6fa1n:bA3ER8HbQ5C4D7Eb8BU4F1Ca6GIc","unicode":"6","advance":492},{"data":":w10Ga:7la05c:b3E2g2I8nb9C6g6F1ob7B4g4D7nbP2gX7ma4o:bi7G7b6Obq9G4d6Obz7G2f0Ob5c2G0h6Ma:2Kc","unicode":"7","advance":492},{"data":":6x28Fb6c:4exbryr5gb:2eT7gbSx2Exb3C:2EXbTYT7Gb:0Er5GbrX4eXc::96ba1djaz7bam9cad9daD9dbCwM0dbJqZ7bbPi1DibY:1DIbPJZ7BbJQM0DaD9Dad9DbcVm9CbjQz7BbpJ1dJc::93Cb9I:6O7db7E6d7E3oae1dbeur1dbls2c5cbto9dva:bb1Fm2I2fbOxW4ebG9bG3fb:2cg0gbh8c3c1gbx3c0g4eb5dv1lvb6g:1lVb6dV0g4Eby3C3c1Gag0Gb:4CG3FbH0CW4Eb1C9D2I2Fa:Bb8bG8dVbtP2c5CbmTr1Daf1Db:7J7E3Ob8BW7F5Ca9HLc","unicode":"8","advance":492},{"data":":2x28Fby:1djbpky0cal6dac7eaE3fbDzN2daXxbPh8Chb3D:2F2CbIPM2DaE3Fac7EbbZj6DbiSx0CbpJ3dJc:g7Ib3L:9Q7fb8B3c1D1hbN8dN1kb:0ei1ibj1d1c2gbu0c5e7db4cq2hqb9d:3hQb4cQ3e5Dab:a:5caC4gbC4cM8ebJy7B9cbQm7Dmb7C:2EWbOWO4Fa1N:ba2er8hbq5c4d6eb8bu4f9ba6gha9gIb5cH9eXb0e2C3g7Hbw6E8b8Lad0Ob:6FG8LbG1F1C8JbX6D9F5Gb5D8B1L8Bc","unicode":"9","advance":492},{"data":":9z22Fb2d:7fpbyo7c7dbm1cq8gad0kaD4lbE1eS1hbM1c7C4dbWn2Fna6F:a:14Ec:7N9Ja:31ga2w:a7fEa5eQa3d9BbsQ4c0DbnWx2Eap5Fbl1Gl8Pb:0HI6NbI6F6C2Ka1C1Da2D1Cb7DY4LYc","unicode":"D","advance":588},{"data":":1e31Ga:31ga19d:a:1La71B:a:6Sa6x:a:1La6X:a:2Qa1z:a:1Lc","unicode":"E","advance":493},{"data":":9e31Ga:31ga7n:a:31Gc","unicode":"I","advance":264},{"data":":0z22Fa8dgbsg1cubx9bx4hb:8bG9dbGuT4cb8B7b2G7ba5F:a:2Vc:8N9Ja:31ga8n:a:92Ba9g:a5iMb3dM3g0Db0cZ7d8Fbq2Dq9Ib:1DJ0HbJ0D4C0GbW1C2F0Eb8CS5ISc","unicode":"P","advance":531},{"data":":9z22Fb1e:6gybzyz6gb:0cG1ebGuV4cbNl5Cra7Dga1F:a:1Uc:8N9Ja:31ga8n:a:09Ca9g:b6d:5fybtxv7fad0nad2dbctn5ca0p:a:FbTK7B2DaF9HaB4EaC4DaK3EaU6CbLN3CWa7DMa:Bb2fN2i0Fb9b7D9b0Lb:8DL4HbM5C9C8EbYX1F5Cb6CL2HLc","unicode":"R","advance":569},{"data":":9y45Ga4Imb1Dm2G0db0C7b5D7fbO1dO5ib:5dk9gbl4c6c1fbxz0f5db5ct5h6ca1fxa1dzav2cbgrg3db:wG0dbGqU8bb7Bv0Fva8DHbSH0CWbLNP5CaD7Da:Ua7N:a:0cb:1j4e5obz7b1g1da7jna7jNb7dM0h9Cb4c7B0e9Fbq2Dq0JaF1FbF8BV1EbPW2D3Db7BT9F8Ca4K9Db7DT1F3DbOWO7Ead1CbdPm8BazSa1dGb3d:2f8bbr9br1ha2n:a:Ub:2EQ9HbQ8C7D2Fb1CX2G4Ca1IKc","unicode":"S","advance":531},{"data":":m31Ga:1la9o:a:10fa8n:a:10Fa9o:a:1Lc","unicode":"T","advance":492}],"id":10,"bold":true,"type":5},{"leftMargin":0,"color":-1,"indent":0,"thickness":0,"leading":40,"selectable":true,"gridFit":0,"type":13,"align":2,"mode":0,"rightMargin":0,"variable":"#21","bounds":"0D0D70f70f","id":11,"embed":true,"sharpness":0,"font":10,"height":400},{"depth":11,"id":11,"type":3,"matrix":"#12"},{"data":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADEAMQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/q5pek6hrV8llptpLdXDY+SNc4GQMk9FGSMk4A70aTpl1rWrWum2ab7i5kEacEgZ6k4BOAMknsATX1H4N8Haf4N0gWtqBJcyYNxcsuGlb+ijJwvb3JJKbsNK5wnhj4HWduFuPEd19rk/59bYlYx94cvwzfwnjbggj5hXpmk+HtH0KDydM022tVKhWaOMBnAGBubqxGTySTyfWr7P2H50wknqahyGkS5UdxRuHqPzqGilcdibcPUfnRuHqPzqGii4WJtw9R+dG4eo/OoaXFFxku4eo/OjcPUfnUWKKLgS7h6j86Nw9R+dRUUXAl3D1H50bh6j86ixSYouBNuHqPzo3D1H51DRRcVibcPUfnRuHqPzqGilzBYdPb291BJDPFFNFIpV0dAyspGCCDwQR2ri/EXwn8M67CTb2i6XdBcJLZqEXocbk+6wycnGGOANwFdlTg5HXkU1ILHy94v+Hut+EJS9xF9psDkreQKSgGcAPx8jHI4PHOATg1ydfZs8EN5bSQTxpNDKhR43UMrKRggg9QRXzd8TfAI8H6lHc2JdtKvGbygwJMDDnYW6EY5U5yQD6ZOidyWjg6KKKYj3X4H+GPs2nXPiS4X95dZgtuekYPzHg92XGCARs44avWnb+EfjVDw/pUeh+HtP0yLaVtoFjLKgUMwHzNgdCzZY9eSeTVwnJJrOTKQlFFFSUFFFLigBKWilxTASlxRRQAYooooAKMUUUAGKKKKAEoxS0UANopaSkAUUUUAKrbTVDxJocHiXw7eaTOdq3MZCvgnY45VsAjOGAOM84xV6pEOV+lNMTPja7tZ7G9ns7lPLngkaKRMg7WU4IyOOooruvjLp/wBh+IU83mbxe28dxjbjZxsx7/cz+OO1FakH0ieFOPSoamb7p+lQ1kzQKKKUUgAUtFFMAooooAKKWigQmKXFFFABikxS4ooATFFLRQAlFGKKBhikpaDSAbRS0lABUkfeo6kj/iprcD5/+Ov/ACO9l/2Dk/8ARstFHx1/5Hey/wCwcn/o2WitEQ9z6Cb7p+lQ1M33T9KhrORYClopRQAUUUUAFLRRQIKXFFFMAopcUYoASilxRigBKTFOpKAEopTSUgEooNFAwNIaWkoASpI/4qjNSR/xULcD5/8Ajr/yO9l/2Dk/9Gy0UfHX/kd7L/sHJ/6NlorREPc+gm+6fpUIqZvun6VEKzZYUtAooAKUUgpaBBS0CimAUtFKKAExS4oooAMUmKWigBKCKWkoASg0ppKAEpKWkNIAoNFFAxDT4/4qZT4/4qFuB8//AB1/5Hey/wCwcn/o2Wij46/8jvZf9g5P/RstFaIh7n0E33T9KiFSt90/SoqzZYoooFFAAKWgUCgQtKKSlFMAFLQKKAClxQKKADFJS0UAJQaKKAENJS0lAAaSlNJSASiiihjEp8f8VNNOj/ioQHz/APHX/kd7L/sHJ/6Nloo+Ov8AyO9l/wBg5P8A0bLRWiIe59BN90/Soqlb7p+lRCs2WKKKBRQAooFIKWgQtKKSlFMBRRSCloAUUUlLQAUUUGgBKKKKAEpKWkoADSUppKQCUUUUMYGnR/xU2nR/xUID5/8Ajr/yO9l/2Dk/9Gy0UfHX/kd7L/sHJ/6NlorREPc+gm+6fpUQqVvun6VCKzZY4UUCigAFLSUtAhaWmilpgLS0gooAWiiigAooooAKQ0ZooADSUUGgBDQaKQ0gCiig0DEp8f8AFTDT4/4qFuB8/wDx1/5Hey/7Byf+jZaKPjr/AMjvZf8AYOT/ANGy0VoiHufQTfdP0qGpm+6fpUNZyLFpaQUooAKBRRQAtKKQUUCFpaTNFMBaKSigBaKSigBc0lFFABSUUUgCkoooGFBoNJQAGnx/xVHUkf8AFQtwPn/46/8AI72X/YOT/wBGy0UfHX/kd7L/ALByf+jZaK0RD3PoJvun6VDUzfdP0qGs5FhS0lFIBwopKXNABRmiimAtFJRmgQ7NGaSigBc0ZpKKACiikzQAtJRRQMKKKKQCUhpTSUAFSR/xVHUkf8VNbgfP/wAdf+R3sv8AsHJ/6Nloo+Ov/I72X/YOT/0bLRWiIe579bzx3VrFcQSLLFKiujqwZWUjIII4IIPWm1xvwn8Rx674KtrclFutNVbWVFwDtUfI2Mk4KgDJxlg2BgV2jrhs9jWckUhtFFFIYUtJRQA7NFJmimAtFGaKACiiii4rBRRRRcLBRRRmgYUUUlIAoJpKKACiiigAqSMcE1GBk4FOlmitLaSeeRIoYkLu7sFVVAyWJPQAd6aA+fPjjPFN47gSORGaGwjSQK2SrbnbB9DhgcehB70Vx3izXD4k8U6hq+zYtxLmNSMEIAFXIyedoGeeuaK1MzT+Hni9/CHiWOeQ5sLnEN2pLYCZHzgDOWXkjg8EgYzmvqGCeG8to54JElhlQOjowZXUjIII4IxXxlXeeAfibe+Dx9huYnvNKZtwi3YaAk/MUzwRjJ2nAJ7jJymrjTPpEqVPNNqjofiTR/EtqbjSb+K5VfvKpw6ckDcpwy52nGQM4yK0yinpxWbRVyKipPL9/wBKPL9/0osxkdFSeX7/AKUeX7/pRZgMzRT/AC/f9KPL9/0oswGUtO8v/a/Sjy/9r9KLANzRTvL/ANr9KPL/ANr9KLAMop/l/wC1+lHl+/6UWYDM0lSeX7/pR5fv+lFmBHRUnl+/6UeX7/pRZgR0AZ6VIIx3NNmlhtLeSeeVIYY1LPI7BVVQMkkngADvRYB6Lt5PWvJvjL42WysT4a0+VTc3K/6YyOd0ScELx3bvk/d6jDA0eNvjLa2Sy2HhordXBVla9/5ZwtnHygj5+hIP3fu/eGRXhcssk8zzTSPJLIxZ3diWZjySSepq0iGxlFFFUIKKKKAJrW7ubG5S5s7iW3nTOyWFyjLkYOCORwTXdaf8ZfF9l5gmuLW+3Yx9ptwNmM9Nm3rnvnoMYoooAv8A/C9vE/8Az4aR/wB+pf8A45R/wvbxP/z4aR/36l/+OUUVIw/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigA/wCF7eJ/+fDSP+/Uv/xyj/he3if/AJ8NI/79S/8AxyiigA/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigA/wCF7eJ/+fDSP+/Uv/xyj/he3if/AJ8NI/79S/8AxyiigA/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigA/wCF7eJ/+fDSP+/Uv/xyj/he3if/AJ8NI/79S/8AxyiigA/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigCKf44+KpoZI0g0uFmUgSRwNuUn+IbnIz9QR7Vx2ueLNe8SFP7X1Oa5RMFYzhUBGcHaoAzyecZ5ooqhGNRRRQAUUUUAf/Z","width":196,"id":12,"type":8,"height":196,"mask":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAADECAYAAADApo5rAAACLElEQVR42u3TyRGDMBREQfJPGh/w0QaJRYX+dFdNBvOWdV2XwYNWo7+5iACBDAoCpgtDCAjjoSBg+jCEgDBuDAJKRSEEhHExCCgbhRgQxckgoHwUYkAUnUFATBRiQBSCQBD9QUBcFGJAFIKA9iAgNgpBIIidICA6CkEgiD9BQHwUggBBwO8oxACCAEFAUxDANwpBgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggAEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAEIAgQBAgCBAGCAEGAIEAQIAgQBAgCBAGCAEGAIEAQIAgQBAgCBAGCAEGAIEAQgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggAEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAECAIQBAgCBAGCAEGAIEAQIAgQBAgCBAGCAEGAIEAQIAgQBAgCBAGCgJQgRAFbB4IAQYAgoD0IURAfgyBgJwhREB2DIOAgCFEQG4MgEERDEKIgMgZBIIjGIERBXAxHQYiCqBgEgSA6gxAFMTG0BiEKImLoCUIUlI+hNwhRUDqGM0GIgrIxnA1CFJSM4UoQwqBUCHcFIQrKxHBXEMJg+hCeCEIYTBvCk0EIg+lCGBGEMJgmhJFBCITXBvCGIMxeuw8pGH8CJeygXQAAAABJRU5ErkJggg\u003d\u003d"},{"paths":[{"data":[":24C99Db8F:7K5da83h:b0E5D9K5Dc:79G0fb3D9d3D5ka:47fb:7f3d6ka:78Hc:06iGa:91hb9d0E9d2La:47Fb:1G9D2Lc:93H98hb1e7d9k7da47f:b9f:0l7Dc"],"fill":0},{"data":[":8d8Sa:5ga6x:a:6xa6X:a:5ga42C8Sa42c8Sc:04E6Ya:oa:78ha:ma06i:a:Ga:91Ha:Hc"],"fill":1},{"data":[":8d8Sa42C8sa42c8sa:5Ga6x:a:6Xa6X:a:5Gc"],"fill":2},{"data":[":50d46Db9d1e9d2la:47fb:2g9D2l:Ggb1E7d0L7da47F:b8F:9K7D:MMb3D9D3D6Ka:47Fb:6F3d5K:oOb9d5D7k5Da47f:b9f:9k5d"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"5536F02800C02800c5536F56D52d","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":13,"type":1},{"frameCount":1,"id":14,"type":7,"tags":[{"depth":1,"id":13,"type":3,"matrix":0},{"type":2}]},{"depth":12,"id":14,"type":3,"matrix":"::::10i989e","actions":[{"actions":[{"constants":["_root","#0","#1","#2"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"paths":[{"data":[":23C99Db9F:0L7da86h:b1E7D9K7Dc:2m1fa:78hb3d0E3d6Ka:47Fb:7F3D5Kc:06IGb9D0e9D2la:47fb:1g9d2la:91Hc:i99hb9d5d8k5da47f:b8f:8k5Dc"],"fill":0},{"data":[":8D8Sa42c8sa42C8sa:5Ga6X:a:6Xa6x:a:5Gc:02D4Ya:ga:91ha:ha06i:a:Na:78Ha:Nc"],"fill":1},{"data":[":8D8Sa:5ga6X:a:6xa6x:a:5ga42c8Sa42C8Sc"],"fill":2},{"data":[":56d38Db3d8d3d5ka:47fb:6f3D6k:Nnb0E5d8K5da47F:b9F:8K5D:IHb9D1E9D2La:47Fb:2G9d2L:gGb1e7D0l7Da47f:b8f:9k7d"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"5536F02800c02800C5536F56d52D","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":15,"type":1},{"frameCount":1,"id":16,"type":7,"tags":[{"depth":1,"id":15,"type":3,"matrix":0},{"type":2}]},{"depth":14,"id":16,"type":3,"matrix":"::::110c989e","actions":[{"actions":[{"constants":["_root","#0","#2","#1"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"paths":[{"data":["::94Ba8s42ca5G:a:6xa6X:a:6Xa5G:a8s42Cc:23C5Tb7F:5K3daIhaEeb7D1e7D9ka:47fb:9f7d0laeeabbb0e9d2l9da47f:b1g:2l9DabBafFb5d0E5d9Ka:47Fb:8F5D7KaFGaHHb0E3D6K3Dc"],"fill":0},{"data":[":52D56Da:maeEaiHc:78h:ahhafga:Oc:06I99ha:gag:aBBaEEc:06iAaFfaBbah:a:Hc"],"fill":1},{"data":["::94Ba8S42ca5g:a:6xa6x:a:6Xa5g:a8S42Cc"],"fill":2},{"data":[":54d41Db5d9d5d7ka:47fb:9f5D9k:Hhb1E9d2L9da47F:b2G:2L9D:GGb7D1E7D0La:47Fb:8F7d9K:nMb8d3D5k3Da47f:b6f:6k3dahhafg::83haFfaBb:98H93HaeEaiH:G06iaBBaEE"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"7264w::7264w52D56D","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":17,"type":1},{"frameCount":1,"id":18,"type":7,"tags":[{"depth":1,"id":17,"type":3,"matrix":0},{"type":2}]},{"depth":16,"id":18,"type":3,"matrix":"::::10t899d","actions":[{"actions":[{"constants":["_root","#0","abajo","#3"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"paths":[{"data":[":24C99Db1G:2L9da91h:b0E9D2L9Dc:77G8eb5D9d5D8ka:47fb:8f5d8ka:83Hc:06iBa:86hb7d1E7d9Ka:47Fb:9F7D0Lc:91H99hb9d3d5k3da47f:b7f:6k3Dc"],"fill":0},{"data":[":3l94Ba:6xa5g:a8S42ca8S42Ca5g:a:6Xc:31C6Oa:ia:83ha:na06i:a:Ma:86Ha:Gc"],"fill":1},{"data":[":3L94Ba:6xa5G:a8s42ca8s42Ca5G:a:6Xc"],"fill":2},{"data":[":52d43Db7d1e7d0la:47fb:8f7D9k:Mmb9D3d6K3da47F:b6F:5K3D:ONb5D0E5D8Ka:47Fb:9F5d8K:hIb1e9D2l9Da47f:b2g:2l9d"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"68336C::68336C52d56d","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":19,"type":1},{"frameCount":1,"id":20,"type":7,"tags":[{"depth":1,"id":19,"type":3,"matrix":0},{"type":2}]},{"depth":18,"id":20,"type":3,"matrix":"::::10t079g","actions":[{"actions":[{"constants":["_root","#0","#3","abajo"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"type":2},{"depth":3,"type":4},{"depth":6,"type":4},{"depth":8,"type":4},{"depth":11,"type":4},{"depth":12,"type":4},{"depth":14,"type":4},{"depth":16,"type":4},{"depth":18,"type":4},{"paths":[{"data":[":::a000d:a:000da000D:a:000D"],"line":0}],"flat":true,"bounds":"#29","linestyles":[{"color":-65536,"width":60}],"id":21,"type":1},{"depth":2,"replace":true,"id":21,"type":3},{"mode":0,"records":[{"color":-3407872,"x":"0h9x1w7z76b4l9x0w","y":460,"glyphs":"nBcDbcaE","text":"PERDISTE","font":10,"height":480}],"thickness":0,"bounds":"5i1k22r54c","id":22,"gridFit":0,"sharpness":0,"type":6,"matrix":"#5"},{"depth":3,"id":22,"type":3,"matrix":"::::00j710d"},{"paths":[{"data":["#9"],"line":0},{"data":["#16"],"fill":0}],"flat":true,"bounds":"#7","fillstyles":[{"color":-1576202,"type":1}],"linestyles":[{"color":-5056280,"width":20}],"id":23,"type":1},{"ascent":717,"name":"Verdana_10pt_st","glyphs":[{"data":":07c17Ga:3ja07c:a:3Jc:09D3ja:2ja2j:a:2Jc:07c:a:2ja3j:a:2Jc:15F2ja:07ca3j:a:07Cc:12e:a:07ca2j:a:07Cc:14F07ca:3ja2j:a:3Jc:07c:a:3ja3j:a:3Jc:10D3ja:2ja07c:a:2Jc","unicode":"O","advance":845},{"data":":5t12Ea:2ja07c:a:2Jc:10D07ca:3ja3j:a:3Jc:07c5Ta:3ja07C:a:2ja07c:a:3ja07C:a:2ja09d:a:10Dc","unicode":"a","advance":640},{"data":":07c12Ea:2ja3j:a:2Jc:08C:a:12ea3j:a:07Ca2j:a:3Ja2J:a:2Jc","unicode":"r","advance":436},{"data":":2j17Ga:5ta2J:a:2ja2j:a:08ca3j:a:08Ca5t:a:2Ja5T:a:5Tc::15fa:2ja5t:a:2Jc","unicode":"t","advance":538}],"id":24,"type":5},{"mode":0,"records":[{"color":-13421773,"x":"#18","y":200,"glyphs":":cAA","text":"Otra","font":24,"height":200}],"thickness":0,"bounds":"#26","id":25,"gridFit":0,"sharpness":0,"type":6,"matrix":"#20"},{"paths":[{"data":["#9"],"line":0},{"data":["#28"],"fill":0}],"flat":true,"bounds":"#7","fillstyles":[{"color":-1,"type":1}],"linestyles":[{"color":-1,"width":20}],"id":26,"type":1},{"paths":[{"data":["#9"],"line":0},{"data":["#28"],"fill":0},{"data":[":90f0sa80M:a:80Ca80m:a:80c"],"line":1}],"bounds":"#7","fillstyles":[{"color":-13792334,"type":1}],"linestyles":[{"color":-13792334,"width":20},{"color":-1576202,"width":20}],"id":27,"type":1},{"mode":0,"records":[{"color":-1576202,"x":"#18","y":200,"glyphs":":cAA","text":"Otra","font":24,"height":200}],"thickness":0,"bounds":"#26","id":28,"gridFit":0,"sharpness":0,"type":6,"matrix":"#20"},{"paths":[{"data":["#16"],"fill":0}],"flat":true,"bounds":"80F0R60m60c","fillstyles":[{"color":-1576202,"type":1}],"id":29,"type":1},{"sounds":[],"records":[{"transform":"#5","depth":2,"id":23,"states":1},{"transform":"#24","depth":3,"id":25,"states":3},{"transform":"#5","depth":2,"id":26,"states":2},{"transform":"#5","depth":3,"id":27,"states":4},{"transform":"#24","depth":4,"id":28,"states":4},{"transform":"747f::486y::","depth":1,"id":29,"colortransform":"6Y5d6Y9m6Y8q::","states":8}],"id":30,"type":10,"actions":[{"actions":[{"constants":["i","_root","#13","#27","#10","removeMovieClip","#6"],"type":136},{"index":0,"type":304},{"type":305,"value":0},{"type":29},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"index":3,"type":304},{"type":78},{"type":72},{"type":18},{"type":157,"target":32},{"type":305,"value":0},{"index":1,"type":304},{"type":28},{"index":4,"type":304},{"index":0,"type":304},{"type":28},{"type":33},{"type":78},{"index":5,"type":304},{"type":82},{"type":23},{"index":0,"type":304},{"index":0,"type":304},{"type":28},{"type":80},{"type":29},{"type":153,"target":4},{"type":305,"value":0},{"index":1,"type":304},{"type":28},{"index":6,"type":304},{"type":82},{"type":23},{"type":129,"frame":0},{"type":6}],"events":2048,"key":0}]},{"depth":4,"id":30,"type":3,"matrix":"::::00t000g","ratio":1},{"depth":9,"id":11,"type":3,"matrix":"#12","ratio":1},{"type":2}]};
    </script>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<div style="text-align:center;"><div id="swiffycontainer" style="width: 200px; height: 400px;margin:auto;">
    </div>
    <script>var stage = new swiffy.Stage(document.getElementById('swiffycontainer'),swiffyobject, {});stage.start();</script></div>

		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style='background-color:#fcf9e0; text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p><strong>Actualización</strong>: Google ha abandonado el proyecto Swifty y su herramienta de conversión on-line, aunque sigue dando soporte a los contenidos creados anteriormente. Si dispones de alguna versión de Flash Creative Cloud con la extensión Swifty aún podrás seguir creando contenidos compatibles HTML5. Si no es así, la única alternativa actual es usar <a href="https://blogs.adobe.com/creativecloud/welcome-adobe-animate-cc-a-new-era-for-flash-professional/" target="_blank">Adobe Animate</a>.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/revive-tus-proyectos-animaciones-flash-html5/">Flash revive como HTML5 gracias a Swiffy</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
