<?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>electroduendes.com</title>
	<atom:link href="http://www.electroduendes.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.electroduendes.com/blog</link>
	<description>bitácora de un desarrollador interactivo</description>
	<lastBuildDate>Sun, 27 Jun 2010 21:07:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Material charla Realidad Aumentada Subflash</title>
		<link>http://www.electroduendes.com/blog/material-charla-realidad-aumentada-subflash/</link>
		<comments>http://www.electroduendes.com/blog/material-charla-realidad-aumentada-subflash/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 19:14:34 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Eventos, charlas]]></category>
		<category><![CDATA[Experimental]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[realidad aumentada]]></category>
		<category><![CDATA[subflash]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=295</guid>
		<description><![CDATA[Por aquí os dejo el material de la charla sobre Realidad Aumentada que ofrecí en los talleres Subflash 2009. Os dejo el código fuente que usamos como ejemplo de implementación con el que podréis crear vuestra propia aplicación de Realidad Aumentada así como la presentación de la charla, y las clases que nos sirvieron como [...]]]></description>
			<content:encoded><![CDATA[<p>Por aquí os dejo el material de la charla sobre Realidad Aumentada que ofrecí en los <a href="http://www.subflash.com/">talleres Subflash 2009</a>. Os dejo el código fuente que usamos como ejemplo de implementación con el que podréis crear vuestra propia aplicación de Realidad Aumentada así como la presentación de la charla, y las clases que nos sirvieron como introducción a Papervision3D.</p>
<p><a href="http://www.electroduendes.com/blog/wp-content/uploads/2009/11/PonenciaSubflash.rar">Papervision3D y Realidad Aumentada (rar)</a></p>
<p><object width="480" height="362"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6929357&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6929357&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="362"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/material-charla-realidad-aumentada-subflash/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AS3: Composición, paso de parámetros por valor y por referencia</title>
		<link>http://www.electroduendes.com/blog/as3-composicion-paso-de-parametros-por-valor-y-por-referencia/</link>
		<comments>http://www.electroduendes.com/blog/as3-composicion-paso-de-parametros-por-valor-y-por-referencia/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 16:53:10 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Metodología, arquitectura]]></category>
		<category><![CDATA[Tutos]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=269</guid>
		<description><![CDATA[En este post hablaré sobre algo muy básico aunque imprescindible sobre teoría de clases y composición aplicados a as3. Con él podemos entender la manera en que es tratada la composición de clases (una clase contiene otra clase como atributo) y los conceptos de paso de variables a métodos por valor y por referencia.
El paso [...]]]></description>
			<content:encoded><![CDATA[<p>En este post hablaré sobre algo muy básico aunque imprescindible sobre teoría de clases y composición aplicados a as3. Con él podemos entender la manera en que es tratada la composición de clases (una clase contiene otra clase como atributo) y los conceptos de paso de variables a métodos por <strong>valor </strong>y por <strong>referencia</strong>.</p>
<p><strong>El paso de parámetros por valor</strong>, se utiliza en programación para realizar una copia del valor del objeto cuando es pasado a través de la invocación de un método. Es decir, al llamar a un método de una clase que requiere un objeto, realizo una copia de dicho objeto. Si dentro de la clase, modifico ese objeto, los cambios no son propagados fuera de la clase.</p>
<p><strong>El paso de parámetros por referencia</strong>, pasa &#8220;un puntero del objeto&#8221;, es decir, de alguna manera estamos pasando el objeto, y si dicho objeto es modificado dentro de la propia clase, sus cambios serán propagados fuera de la misma.</p>
<p>Hay lenguajes que permiten definir el método de paso de variables (referencia o valor), como es el caso de C++. En Actionscript, de momento no podemos pasar por valor de manera nativa, aunque nuestro método siempre puede hacer una copia internamente del argumento recibido para no modificar el original. En Actionscript 3, el paso de parámetros, siempre se realiza de la misma manera: </p>
<ul>
<li>Las instancias de clases son pasadas por referencia</li>
<li>Los tipos primitivos se pasan por valor</li>
</ul>
<p>Si estás aprendiendo Actionscript 3 y has llegado hasta aquí, te recomiendo que analices a fondo este código, puesto que puede resultarte muy esclarecedor para entender este concepto tan básico como fundamental sobre la orientación a objetos.</p>
<p>Primero, definimos dos Clases, <em>ClaseA </em>y <em>ClaseB</em>. <em>ClaseB </em>está compuesta por un atributo, <em>atributoB </em>que es de tipo Number.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> ClaseB
	<span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> atributoB<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>;	
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> ClaseB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p><em>ClaseA </em>tiene otro atributo de tipo <em>ClaseB</em>. Estamos hablando por tanto, de una relación de composición entre las dos clases.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> ClaseA
	<span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> atributoA<span style="color: #000000; font-weight: bold;">:</span>ClaseB;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> ClaseA<span style="color: #000000;">&#40;</span>atributo<span style="color: #000000; font-weight: bold;">:</span>ClaseB<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
			atributoA = atributo;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Ahora nuestra clase principal. Nótese cómo <em>atributoB </em>devuelve el mismo valor independientemente del lugar desde donde es modificado (es el mismo objeto) y cómo esto no sucede con tipos primitivos. En este caso paso un parámetro al constructor  de la clase <em>ClaseA </em> (nuestro objeto de tipo ClaseB), para posteriormente modificarlo desde diferentes ámbitos y trazar los resultados.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> ReferenciaValorTest extends <span style="color: #004993;">Sprite</span>
	<span style="color: #000000;">&#123;</span>
		<span style="color: #3f5fbf;">/**
		 * @autor Alejandro Sánchez
		 * http://www.electroduendes.com/blog/
		 * */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> ReferenciaValorTest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">b</span><span style="color: #000000; font-weight: bold;">:</span>ClaseB = <span style="color: #0033ff; font-weight: bold;">new</span> ClaseB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">b</span>.atributoB = <span style="color: #000000; font-weight:bold;">10</span>;
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span>.atributoB<span style="color: #000000;">&#41;</span> <span style="color: #009900;">// OUTPUT: 10</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> a<span style="color: #000000; font-weight: bold;">:</span>ClaseA = <span style="color: #0033ff; font-weight: bold;">new</span> ClaseA<span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>a.atributoA.atributoB<span style="color: #000000;">&#41;</span> <span style="color: #009900;">// OUTPUT: 10</span>
&nbsp;
			a.atributoA.atributoB = <span style="color: #000000; font-weight:bold;">5</span>;
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>a.atributoA.atributoB<span style="color: #000000;">&#41;</span> <span style="color: #009900;">// OUTPUT: 5</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span>.atributoB<span style="color: #000000;">&#41;</span> <span style="color: #009900;">// OUTPUT: 5</span>
&nbsp;
			<span style="color: #004993;">b</span>.atributoB = <span style="color: #000000; font-weight:bold;">10</span>;
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>a.atributoA.atributoB<span style="color: #000000;">&#41;</span> <span style="color: #009900;">// OUTPUT: 10</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span>.atributoB<span style="color: #000000;">&#41;</span> <span style="color: #009900;">// OUTPUT: 10</span>
&nbsp;
			<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">c</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">20</span>;
			a.atributoA.atributoB = <span style="color: #004993;">c</span>			
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>a.atributoA.atributoB<span style="color: #000000;">&#41;</span>; <span style="color: #009900;">// OUTPUT: 20</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span>.atributoB<span style="color: #000000;">&#41;</span>; <span style="color: #009900;">// OUTPUT: 20</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">c</span><span style="color: #000000;">&#41;</span>; <span style="color: #009900;">// OUTPUT 20</span>
&nbsp;
			<span style="color: #004993;">c</span> = <span style="color: #000000; font-weight:bold;">30</span>;
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span>a.atributoA.atributoB<span style="color: #000000;">&#41;</span>; <span style="color: #009900;">// OUTPUT: 20</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">b</span>.atributoB<span style="color: #000000;">&#41;</span>; <span style="color: #009900;">// OUTPUT: 20</span>
			<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">c</span><span style="color: #000000;">&#41;</span>; <span style="color: #009900;">// OUTPUT 30</span>
&nbsp;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/as3-composicion-paso-de-parametros-por-valor-y-por-referencia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Triángulo de Penrose</title>
		<link>http://www.electroduendes.com/blog/triangulo-de-penrose/</link>
		<comments>http://www.electroduendes.com/blog/triangulo-de-penrose/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 17:48:45 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Experimental]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Escher]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=237</guid>
		<description><![CDATA[El triángulo de Penrose, es un objeto imposible que fue creado en 1934 por el artista sueco Oscar Reutersvärd. Posteriormente fue redescubierto de forma independiente por el físico Roger Penrose, en la década de 1950, quien lo hizo popular, describiéndolo como &#8220;imposibilidad en su más pura forma&#8221;.
Fuente: Wikipedia


Pulsa en la imagen para lanzar el experimento
Triángulo [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>El triángulo de Penrose, es un objeto imposible que fue creado en 1934 por el artista sueco Oscar Reutersvärd. Posteriormente fue redescubierto de forma independiente por el físico Roger Penrose, en la década de 1950, quien lo hizo popular, describiéndolo como &#8220;imposibilidad en su más pura forma&#8221;.</p></blockquote>
<p><em>Fuente: <a href="http://es.wikipedia.org/wiki/Tri%C3%A1ngulo_de_Penrose">Wikipedia</a></em></p>
<div align="center">
<a href="http://www.electroduendes.com/swf/penrose/PenroseTriangle.swf" rel="shadowbox;width=640;height=480;"><img src="http://www.electroduendes.com/blog/wp-content/uploads/2009/10/penrose.jpg" alt="penrose" title="penrose" width="324" height="276" class="aligncenter size-full wp-image-283" /></a><br />
Pulsa en la imagen para lanzar el experimento</div>
<p><a href="http://www.electroduendes.com/swf/penrose/PenroseTriangle.swf" rel="shadowbox[post-237]">Triángulo de Penrose</a></p>
<p>El juguete visual está escrito en Actionscript 3 y Papervision3D. El autor del modelo SketchUp es <a href="http://sketchup.google.com/3dwarehouse/details?mid=5676b5d661012aadbe7144c5b7b0fcb6">Martin Triebel</a>.  Con el artefacto, intento abrir una puerta racional al triángulo de imposibilidad, a través de un juego de interacción, en la idea de que no existe una realidad absoluta, sino meras interpretaciones, ahí queda eso. </p>
<p>Resulta generacional la atención que la gente tiene sobre esta figura, y su repercusión en camisestas, fieltros, esculturas de rotondas y portadas de libros. Desde icono pop hasta figura del op art,  este símbolo seguirá sorprendiendo a generaciones y perpetuándose como un ejemplo del escepticismo creativo radical.<br /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/triangulo-de-penrose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuevos aires, nuevos objetivos</title>
		<link>http://www.electroduendes.com/blog/nuevos-aires/</link>
		<comments>http://www.electroduendes.com/blog/nuevos-aires/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 17:11:39 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=233</guid>
		<description><![CDATA[Antes de nada. Avisaros que no voy a anunciar un cambio de trabajo. El cambio de aires será esta vez para el blog.

Los que estéis suscritos a mi feed, os habréis dado cuenta que he estado actualizando algunos posts antiguos. El motivo es que estos días he estado ocupado en dar a este blog un [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de nada. Avisaros que no voy a anunciar un cambio de trabajo. El cambio de aires será esta vez para el blog.
</p>
<p>Los que estéis suscritos a mi feed, os habréis dado cuenta que he estado actualizando algunos posts antiguos. El motivo es que estos días he estado ocupado en dar a este blog un nuevo aire. Así que me he calzado algunas entradas de poco interés, he actualizado las entradas técnicas para que no quedaran obsoletas, y migrando los post sobre opinión/artículos a <a href="http://www.alexsanchez.info">mi otro blog</a>.</p>
<p>Lo cierto es que el blog se estaba convirtiendo en un compendio de artículos de opinión y sobre publicidad y marketing, mezclados con posts sobre código, entradas off-topic, enlaces sobre diseño&#8230; El blog era como un traje de retales, cada uno de su padre y de su madre: demasiado heterogéno y puede que a pocos llegara a abrigar del todo. Dicen que el que mucho abarca poco aprieta.</p>
<p> Así que mi propósito de este año lectivo hacia este blog es redirigir la temática que encontraréis a partir de ahora, que será principalmente técnica.  En este blog se hablará de<strong> arquitectura, metodología y programación web</strong>, centradas en el lenguaje <strong>Actionscript</strong>, aunque probablemente toque otros lenguajes, así como cuestiones sobre <strong>diseño weby prototipado</strong> . El tono de las entradas intentará ser más directo, orientado a cubrir a fondo los detalles técnicos, intentando cuidar la didáctica y la claridad. Dejaré a un lado opiniones y artículos que no versen sobre esta materia. </p>
<p>No estoy diciendo que dejaré de opinar, criticar o de aplaudir. Tampoco digo que dejaré de hablar de Marketing o de Publicidad On-line. Lo que quiero decir es que lo dejaré de hacer en este blog. </p>
<p>Y con la esperanza de que ésta sea mi última entrada no técnica en este blog y de que todos mis propósitos se vean cumplidos junto a vosotros, os doy la bienvenida a esta nueva etapa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/nuevos-aires/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>removeChild y  ArgumentError: Error #2025: no más dolores de cabeza</title>
		<link>http://www.electroduendes.com/blog/removechild-argumenterror-2025/</link>
		<comments>http://www.electroduendes.com/blog/removechild-argumenterror-2025/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 12:40:08 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Actionscript 2.0]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[removeChild]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=107</guid>
		<description><![CDATA[Como muchos de vosotros, estoy continuamente utilizando los métodos addChild y removeChild de DisplayObjectContainer.
Gracias a Dios con la llegada de as3 llevo un tiempo sin sufrir los tediososos attachMovie y createEmptyMovieClip, que resultaban a veces confusos.
El nuevo árbol de herencia de los objetos de visualización es ahora realmente orientado a objetos y muy completo, y [...]]]></description>
			<content:encoded><![CDATA[<p>Como muchos de vosotros, estoy continuamente utilizando los métodos addChild y removeChild de DisplayObjectContainer.</p>
<p>Gracias a Dios con la llegada de as3 llevo un tiempo sin sufrir los tediososos attachMovie y createEmptyMovieClip, que resultaban a veces confusos.</p>
<p>El nuevo árbol de herencia de los objetos de visualización es ahora realmente orientado a objetos y muy completo, y es algo que agradecí al migar de as2 a as3.</p>
<p>Con el método addChild, no tengo pegas, pues me parece necesario identificar sobre qué padre vamos a incluir el DisplayObject que estamos creando.</p>
<p>Pero para el método removeChild, cuando estoy eliminando un Sprite, pues realmente no interesa saber cual es el padre, lo que realmente interesa, es eliminarlo y punto.</p>
<p>De hecho, yo tiendo a hacer lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">miMc.<span style="color: #004993;">parent</span>.<span style="color: #004993;">removeChild</span><span style="color: #000000;">&#40;</span>miMc<span style="color: #000000;">&#41;</span></pre></div></div>

<p>Se me ocurrió hace poco que una clase para eliminar Sprites sería útil, algo como un Terminator de DisplayObjects</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">DisplayObjectTerminator.remove<span style="color: #000000;">&#40;</span>miMc<span style="color: #000000;">&#41;</span></pre></div></div>

<p>Esta clase, encapsularía este comportamiento y además evitaría problemas tales como que el objeto a elminar exista, que no sea nulo… etc etc.</p>
<p>Y antes de ponerme a escribir, googleé un poco y encontré una clase bastante útil para estos menesteres que comparto con vosotros:</p>
<p>http://www.actionscript.org/forums/showthread.php3?t=178317</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/**
 * written by evride //
 * Actionscript.org forums user //
 * found a problem? tell me there //
 */</span>
<span style="color: #9900cc; font-weight: bold;">package</span> com.evride<span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> RemoveObject <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> static  <span style="color: #339966; font-weight: bold;">function</span> remove<span style="color: #000000;">&#40;</span>obj<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Object</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>obj<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>obj <span style="color: #0033ff; font-weight: bold;">is</span> <span style="color: #004993;">DisplayObject</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>obj.<span style="color: #004993;">parent</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #0033ff; font-weight: bold;">try</span> <span style="color: #000000;">&#123;</span>
							obj.<span style="color: #004993;">parent</span>.<span style="color: #004993;">removeChild</span><span style="color: #000000;">&#40;</span>obj<span style="color: #000000;">&#41;</span>;
						<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">catch</span> <span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Error</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
							<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Couldn't remove the object. It wasn't a child of a DisplayObject.&quot;</span><span style="color: #000000;">&#41;</span>;
						<span style="color: #000000;">&#125;</span>
					<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
						<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Couldn't remove object. Parent property is null.&quot;</span><span style="color: #000000;">&#41;</span>;
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Couldn't remove object. It is not a DisplayObject.&quot;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Couldn't remove the object. It was null or doesn't exist.&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/removechild-argumenterror-2025/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talleres de verano de SubFlash 2009</title>
		<link>http://www.electroduendes.com/blog/talleres-de-verano-de-subflash-2009/</link>
		<comments>http://www.electroduendes.com/blog/talleres-de-verano-de-subflash-2009/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 13:45:22 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Enlaces]]></category>
		<category><![CDATA[Eventos, charlas]]></category>
		<category><![CDATA[comunidad]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[ponencias]]></category>
		<category><![CDATA[subflash]]></category>
		<category><![CDATA[talleres]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=105</guid>
		<description><![CDATA[
Ya están aquí un año más los talleres de verano de Subflash, donde un grupo de 50 personas de nuestro gremio y más concretamente todo lo que rodea a Flash, se reunen para compartir experiencias, impartir charlas y por qué no, tomar unas cañas y pasar un buen rato juntos.
Después de haber asistido a cuatro [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://www.electroduendes.com/blog/wp-content/sbfl09.jpg" alt="" /></p>
<p>Ya están aquí un año más los talleres de verano de <strong>Subflash, </strong>donde un grupo de 50 personas de nuestro gremio y más concretamente todo lo que rodea a Flash, se reunen para compartir experiencias, impartir charlas y por qué no, tomar unas cañas y pasar un buen rato juntos.</p>
<p>Después de haber asistido a cuatro ediciones, te puedo afirmar que si perteneces a este gremio como diseñador o desarrollador, y además tienes la suerte de compartir trabajo y afición o sentir pasión por este mundo, no dejes de asistir este año.</p>
<p>Os copio-pego los detalles que hay en la web (<a href="http://www.subflash.com/talleres/2009/php/index.php">http://www.subflash.com/talleres/2009/php/index.php</a>), donde también podrás inscribirte y obtener más info:</p>
<blockquote><p><strong>lugar</strong><br />
los talleres de 2009 este año tendrán lugar de nuevo en Alicante, en la Villa Universitaria en San Vicente del Raspeig. la Villa Universitaria es un moderno complejo que cuenta con magníficas instalaciones y todos los medios necesarios para poder desarrollar todas las actividades.<br />
Villa Universitaria<br />
Avda. Vicente Savall, 16<br />
03690, San Vicente del Raspeig<br />
Alicante<br />
<strong><br />
fechas</strong><br />
viernes 28, sábado 29 y domingo 30 de Agosto de 2009.<br />
<strong><br />
precio</strong><br />
100 € por persona en modalidad de asistencia completa*, que incluye el alojamiento del viernes y sábado, además de la cena del viernes, pensión completa del sábado y desayuno y comida del domingo.<br />
la modalidad oyente es totalmente GRATUITA, aunque los asistentes que se deseen quedar a comer o cenar, tendrán que abonar el precio de sus consumiciones individuales, al precio que marque el lugar.</p>
<p><strong>Plazas disponibles</strong><br />
Aproximadamente 50 plazas disponibles en modalidad de asistencia completa*.</p>
<p><strong>Instalaciones</strong><br />
habitaciones individuales<br />
baño individual<br />
internet en habitaciones por conexión RJ-45 (llevar cable)<br />
cada dos habitaciones antesala con nevera, cocinita y microondas<br />
tv y zonas comunes<br />
sala de 18 ordenadores con conexión a Internet<br />
piscina, padel y pista de fútbol sala<br />
sala de conferecias totalmente equipada<br />
aparcamiento gratuito</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/talleres-de-verano-de-subflash-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tendremos vídeo para rato</title>
		<link>http://www.electroduendes.com/blog/tendremos-video-para-rato-2/</link>
		<comments>http://www.electroduendes.com/blog/tendremos-video-para-rato-2/#comments</comments>
		<pubDate>Sun, 10 May 2009 02:58:33 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Enlaces]]></category>
		<category><![CDATA[Librerías, recursos]]></category>
		<category><![CDATA[Metodología, arquitectura]]></category>
		<category><![CDATA[Actionscript 2.0]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flv]]></category>
		<category><![CDATA[librería]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[pyro]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=103</guid>
		<description><![CDATA[


Los desarrolladores Flash llevamos desde el 2002, la asidua tarea de trabajar con estos formatos. Por eso, en la parte cliente, se hace necesario el uso de un conjunto de clases que manejen esta labor, y que nos permita tener vídeo para rato sin morir en el intento cada vez que hay que aplicarlo a [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p style="text-align: center;"><img class="aligncenter" src="http://www.electroduendes.com/blog/wp-content/video.jpg" alt="" /></p>
<p>Los desarrolladores Flash llevamos desde el 2002, la asidua tarea de trabajar con estos formatos. Por eso, en la parte cliente, se hace necesario el uso de un conjunto de clases que manejen esta labor, y que nos permita tener vídeo para rato sin morir en el intento cada vez que hay que aplicarlo a un proyecto.</p>
<p>Gracias a todos, ( y espero participar en ello pronto) cada día tenemos más proyectos hacia este área en la comunidad de desarrollo libre o de pago, y ya existen soluciones para la creación de players. Incluso existen players de licencia libre que cubren varias funcionalidades, de hecho hay un sano mercado en torno a los players, copado actualmente por <a href="http://www.longtailvideo.com/players/jw-flv-player/">JW FLV Media Player</a>, un player bastante completo.</p>
<p>Pero si estamos empeñados en añadir las clases a nuestro repositorio reutilizables para todos los proyectos de tu empresa,  la tarea de crear un player crece en dos sentidos: el primero crear los componentes de interacción, que si bien algunos ya puedes tenerlos creados o reusarlos, y segundo, conocer las diferentes particularidades de la api de gestión de vídeo en flash para aplicar la funcionalidad a los controles visuales, que dependerá del tipo de vídeo y el total de los que vamos a meter.</p>
<p>En realidad, se trata de un trabajo de semanas partiendo desde cero. Son por sí mismo un subproyecto, o al menos un buen sprint en un desarrollo. A nivel de interacción, los players se deben tratar con cariño, puesto que demandan funcionalidades avanzadas de los usuarios acostumbrados a players de gran consumo, como youtube. Se debe trabajar bien con el seeker para dotarle del mayor número de funcionalidades posible, puesto que cuanto más bueno o largo es el vídeo, más vamos a utilizar este componente.</p>
<p>Para empezar, no está mal echar un vistazo a <a href="http://www.blogtechguy.com/video_ebook/online_video_comparison.html">otros players</a> famosos en Internet.  Debemos poner interés en añadir funcionalidades tales como añadir alias de teclado como la pausa para el espacio. También es interesante el retroceso del vídeo por click de la barra,  o avance en caso de que dispongamos de servidor rtmp o tecnología que lo permita. La visualización del vídeo mientras se arrastra la barra será motivo de otro post, y no deberíamos olvidar.</p>
<p>Este desarrollo es buena práctica para aprender la creación y despachado de eventos personalizados porque realmente te puedes hinchar a usar y crear eventos. Recomiendo separar para ello el código en una clase Player que se encargue de manipular el stream de red y enviar los eventos de usuario necesarios, y un conjunto de clases para el manejo de la interfaz, tales como sliders, buttons, loaders y seekers. Un patrón <a href="http://www.moock.org/lectures/mvc/">MVC </a>también es interesante para montar toda la interacción entre clases y por si piden cambiar el skin para adaptar a otros proyectos e incluso en el mismo proyecto.</p>
<p>La parte más aburrida de esta tarea, la podemos simplificar con el uso de la clase<a href="http://agit8.turbulent.ca/bwp/2009/01/21/pyro-a-video-player-api-for-flash/"> Pyro Player</a> que ha creado Turbulent.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> pyroInstance<span style="color: #000000; font-weight: bold;">:</span>Pyro = <span style="color: #0033ff; font-weight: bold;">new</span> Pyro<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">320</span>, <span style="color: #000000; font-weight:bold;">240</span><span style="color: #000000;">&#41;</span>;
<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>pyroInstance<span style="color: #000000;">&#41;</span>;
pyroInstance.<span style="color: #004993;">play</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;http://myvideosite.com/videos/gratton.flv&quot;</span><span style="color: #000000;">&#41;</span>;</pre></div></div>

<p>Tras un uso en varios proyectos, puedo afirmar que simplifica bastante la tarea, aunque el diálogo entre esta clase y los controles no te lo quita nadie en ningún proyecto a menos que obligues a tus diseñadores  a que usen los mismos controles en todos los players, o inviertas más tiempo todavía en parametrizar esta opción en tu triada.</p>
<p>Tengo que dar gracias a mi colega <a href="http://www.xinterface.net">Diego </a>por descubrirme esta clase. Como agradecimiento hacia este intercambio de conocimiento tan saludable, os recomiendo a todos también <a href="http://code.google.com/p/mysimplemp3/">MySimpleMp3,</a> una clase similar para reproducir mp3´s.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">audio.<span style="color: #004993;">url</span> = <span style="color: #990000;">&quot;http://mydomain.com/music.mp3&quot;</span>;
audio.<span style="color: #004993;">play</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
audio.<span style="color: #004993;">pause</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
audio.<span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
audio.<span style="color: #004993;">volume</span> = 0..1;
audio.panning = <span style="color: #000000; font-weight: bold;">-</span>1..1;</pre></div></div>

</p>
<p>Los que habéis llegado hasta aquí y os interese este post desde la perspectiva de la publicidad, os remito a <a href="http://www.alexsanchez.info/tendremos-video-para-rato/">esta entrada</a> en mi otro blog.</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/tendremos-video-para-rato-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Procesado de imágenes en Java II</title>
		<link>http://www.electroduendes.com/blog/procesado-de-imagenes-en-java-ii/</link>
		<comments>http://www.electroduendes.com/blog/procesado-de-imagenes-en-java-ii/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 10:28:00 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[imageio]]></category>
		<category><![CDATA[imagenes]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/procesado-de-imagenes-en-java-ii/</guid>
		<description><![CDATA[Javier Murillo me manda una mejora para la clase ImageUtils que publiqué en la entrada procesado de imágenes en Java. Es una alegría saber que otros desarrolladores trabajen con el código que publico, y que, como en este caso, se interesan por mejorarlo y reenviarlo. Gracias Javier!

package es.gaea.utils;
&#160;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import [...]]]></description>
			<content:encoded><![CDATA[<p>Javier Murillo me manda una mejora para la clase ImageUtils que publiqué en la entrada <a href="http://www.electroduendes.com/blog/procesado-de-imagenes-en-java/">procesado de imágenes en Java</a>. Es una alegría saber que otros desarrolladores trabajen con el código que publico, y que, como en este caso, se interesan por mejorarlo y reenviarlo. Gracias Javier!</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">es.gaea.utils</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.RenderingHints</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.geom.AffineTransform</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.image.AffineTransformOp</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.image.BufferedImage</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.File</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.imageio.ImageIO</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.log4j.Logger</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Clase que implementa un procesador para imagenes y juguetear con ellas */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ProcesadorImagenes <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Logger de la clase */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> Logger logger <span style="color: #339933;">=</span> Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span>ProcesadorImagenes.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Opciones de renderizado para las imagenes */</span> 
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">RenderingHints</span> opciones <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">RenderingHints</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Constructor de la clase */</span>
	<span style="color: #000000; font-weight: bold;">public</span> ProcesadorImagenes<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Cargo las opciones de renderizado que me apetezcan	</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_ANTIALIASING</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_ANTIALIAS_ON</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_ALPHA_INTERPOLATION</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_ALPHA_INTERPOLATION_QUALITY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_DITHERING</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_DITHER_DISABLE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_FRACTIONALMETRICS</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_FRACTIONALMETRICS_ON</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_INTERPOLATION</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_INTERPOLATION_NEAREST_NEIGHBOR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_RENDERING</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_RENDER_QUALITY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_STROKE_CONTROL</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_STROKE_NORMALIZE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		opciones.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">KEY_TEXT_ANTIALIASING</span>, <span style="color: #003399;">RenderingHints</span>.<span style="color: #006633;">VALUE_TEXT_ANTIALIAS_ON</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Devuelve la lista de formatos disponibles a leer por ImageIO	
	 * @return un array de strings con los mismos.	
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> dameFormatosUsables<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> ImageIO.<span style="color: #006633;">getReaderFormatNames</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Calcula el factor de escala minimo y en base a eso 
	 * escala la imagen segun dicho factor.	
	* @param nMaxWidth maximo tamaño para el ancho
	* @param nMaxHeight nmaximo tamaño para el alto	
	* @param imagen Imagen que vamos a escalar
	* @return Devuelve la imagen escalada para poderla trastocar o null si hay error
	*/</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">BufferedImage</span> escalarATamanyo<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">BufferedImage</span> imagen,
			<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> maximoAncho, <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> maximoAlto<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Comprobacion de parametros</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>imagen <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">||</span> maximoAlto <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> maximoAncho <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Capturo ancho y alto de la imagen </span>
		<span style="color: #000066; font-weight: bold;">int</span> anchoImagen <span style="color: #339933;">=</span> imagen.<span style="color: #006633;">getHeight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">int</span> altoImagen <span style="color: #339933;">=</span> imagen.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Calculo la relacion entre anchos y altos de la imagen</span>
		<span style="color: #000066; font-weight: bold;">double</span> escalaX <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span><span style="color: #009900;">&#41;</span>maximoAncho <span style="color: #339933;">/</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span><span style="color: #009900;">&#41;</span>anchoImagen<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> escalaY <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span><span style="color: #009900;">&#41;</span>maximoAlto <span style="color: #339933;">/</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span><span style="color: #009900;">&#41;</span>altoImagen<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Tomo como referencia el minimo de las escalas</span>
		<span style="color: #000066; font-weight: bold;">double</span> fEscala <span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">min</span><span style="color: #009900;">&#40;</span>escalaX, escalaY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Devuelvo el resultado de aplicar esa escala a la imagen</span>
		<span style="color: #000000; font-weight: bold;">return</span> escalar<span style="color: #009900;">&#40;</span>fEscala, imagen<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Escala una imagen en porcentaje.
	* @param factorEscala ejemplo: factorEscala=0.6 (escala la imagen al 60%)
	* @param srcImg una imagen BufferedImage
	* @return un BufferedImage escalado
	*/</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">BufferedImage</span> escalar<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">double</span> factorEscala, <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">BufferedImage</span> srcImg<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Comprobacion de parametros</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>srcImg <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Compruebo escala nula</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>factorEscala <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">return</span> srcImg<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// La creo con esas opciones</span>
		<span style="color: #003399;">AffineTransformOp</span> op <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">AffineTransformOp</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">AffineTransform</span>.<span style="color: #006633;">getScaleInstance</span><span style="color: #009900;">&#40;</span>factorEscala, factorEscala<span style="color: #009900;">&#41;</span>, opciones<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Devuelve el resultado de aplicar el filro sobre la imagen</span>
		<span style="color: #000000; font-weight: bold;">return</span> op.<span style="color: #006633;">filter</span><span style="color: #009900;">&#40;</span>srcImg, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Metodo que guarda una imagen en disco 
	 * @param imagen Imagen a almacenar en disco
	 * @param rutaFichero Ruta de la imagen donde vamos a salvar la imagen
	 * @param formato Formato de la imagen al almacenarla en disco
	 * @return Booleano indicando si se consiguio salvar con exito la imagen
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> salvarImagen<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">BufferedImage</span> imagen, 
			<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> rutaFichero, <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> formato<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Comprobacion de parametros</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>imagen <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">&amp;&amp;</span> rutaFichero <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">&amp;&amp;</span> formato <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
				ImageIO.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span> imagen, formato, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span> rutaFichero <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// Fallo al guardar</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>logger.<span style="color: #006633;">isDebugEnabled</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #003399;">String</span> CODIGO_MENSAJE_ERROR_GUARDADO_FICHERO <span style="color: #339933;">=</span> 
						<span style="color: #0000ff;">&quot;No se pudo guardar correctamente la imagen en &quot;</span> <span style="color: #339933;">+</span> 
						rutaFichero<span style="color: #339933;">;</span>
					logger.<span style="color: #006633;">debug</span><span style="color: #009900;">&#40;</span>CODIGO_MENSAJE_ERROR_GUARDADO_FICHERO<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Fallo en los parametros </span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #008000; font-style: italic; font-weight: bold;">/** Metodo principal de la clase. Usado como prueba
	 * @param args Argumentos del metodo
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Variables locales</span>
		<span style="color: #003399;">BufferedImage</span> imagen<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
			imagen <span style="color: #339933;">=</span> ImageIO.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;prueba.jpg&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			ProcesadorImagenes pi <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ProcesadorImagenes<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Escalo algunas imagenes como pruebas</span>
			<span style="color: #003399;">BufferedImage</span> imagen800_600 <span style="color: #339933;">=</span> pi.<span style="color: #006633;">escalarATamanyo</span><span style="color: #009900;">&#40;</span>imagen,<span style="color: #cc66cc;">800</span>, <span style="color: #cc66cc;">600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">BufferedImage</span> imagenSnap_Shot <span style="color: #339933;">=</span> pi.<span style="color: #006633;">escalarATamanyo</span><span style="color: #009900;">&#40;</span>imagen,<span style="color: #cc66cc;">96</span>, <span style="color: #cc66cc;">96</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">BufferedImage</span> imagenMediana <span style="color: #339933;">=</span> pi.<span style="color: #006633;">escalarATamanyo</span><span style="color: #009900;">&#40;</span>imagen,<span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//	Las salvo en disco</span>
			pi.<span style="color: #006633;">salvarImagen</span><span style="color: #009900;">&#40;</span>imagen800_600,<span style="color: #0000ff;">&quot;imagenG.jpg&quot;</span>,<span style="color: #0000ff;">&quot;jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			pi.<span style="color: #006633;">salvarImagen</span><span style="color: #009900;">&#40;</span>imagenSnap_Shot,<span style="color: #0000ff;">&quot;imagenP.jpg&quot;</span>,<span style="color: #0000ff;">&quot;jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			pi.<span style="color: #006633;">salvarImagen</span><span style="color: #009900;">&#40;</span>imagenSnap_Shot,<span style="color: #0000ff;">&quot;imagenE.png&quot;</span>,<span style="color: #0000ff;">&quot;PNG&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			pi.<span style="color: #006633;">salvarImagen</span><span style="color: #009900;">&#40;</span>imagenMediana,<span style="color: #0000ff;">&quot;imagenA.gif&quot;</span>,<span style="color: #0000ff;">&quot;gif&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Extraigo la lista de formatos capaces de leer</span>
			<span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> formatos <span style="color: #339933;">=</span> pi.<span style="color: #006633;">dameFormatosUsables</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// los voy mostrando</span>
			<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> formatos.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>formatos<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Final del metodo con exito</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/procesado-de-imagenes-en-java-ii/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Talleres de verano subflash 07</title>
		<link>http://www.electroduendes.com/blog/talleres-de-verano-subflash-07/</link>
		<comments>http://www.electroduendes.com/blog/talleres-de-verano-subflash-07/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 01:22:28 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 2.0]]></category>
		<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Eventos, charlas]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[comunidad]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[ponencias]]></category>
		<category><![CDATA[subflash]]></category>
		<category><![CDATA[talleres]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/talleres-de-verano-subflash-07/</guid>
		<description><![CDATA[Un año más la gente de Subflash organiza unos Talleres abiertos de verano el 25 y 26 de Agosto, donde flasheros de todos los lugares de España y Latinoamérica se juntan para asistir a las ponencias, compartir experiencias, conocimientos y disfrutar del comer y beber del lugar. Tras Teruel, Madrid, Barcelona y Oviedo, este año [...]]]></description>
			<content:encoded><![CDATA[<p>Un año más la gente de Subflash organiza unos <strong>Talleres abiertos de verano</strong> el <strong>25 y 26 de Agosto</strong>, donde flasheros de todos los lugares de España y Latinoamérica se juntan para asistir a las ponencias, compartir experiencias, conocimientos y disfrutar del comer y beber del lugar. Tras Teruel, Madrid, Barcelona y Oviedo, este año toca <strong>Málaga</strong>.<br />
Este evento <strong>sin ánimo de lucro</strong> está dirigido a todos los desarrolladores web. La convocatoria es abierta, con lo que cualquier persona podrá inscribirse en el sitio web para asistir a las ponencias, bien como oyente si se encuentra en Málaga, o bien mediante opción completa, con alojamiento y pensión completa.<br />
Personalmente solo puedo escribir alabanzas hacia este evento, que&#8230; no sólo me ha servido en el plano profesional, sino también en el plano personal, forjando grandes amistades con muchos de los asistentes durante los cuatro años que llevo asistiendo al evento.<br />
Este año no va a poder ser por temas académicos y no podré asistir. Solo les deseo que lo pasen tan bien como yo lo hice en los años anteriores, y animo a todo aquel que habite en el mundillo del desarrollo web y Flash a que se inscriba para este año. La experiencia es única!</p>
<p>Más información:<br />
<a href="http://www.subflash.com/talleres/2007/">http://www.subflash.com/talleres/2007/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/talleres-de-verano-subflash-07/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Árbol de actionscript.es</title>
		<link>http://www.electroduendes.com/blog/arbol-de-actionscriptes/</link>
		<comments>http://www.electroduendes.com/blog/arbol-de-actionscriptes/#comments</comments>
		<pubDate>Mon, 14 May 2007 18:43:57 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 2.0]]></category>
		<category><![CDATA[Experimental]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[experimentación]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=79</guid>
		<description><![CDATA[Por aquí dejo un prototipo de experimento que empecé hace como un año y medio.  Se trata de un sistema de visualización gráfica en forma de árbol del rss del sitio web Actionscript.es. Para los que no lo conozcan, actionscript.es es un portal de enlaces y recursos del lenguaje de programación Actionscript donde podemos [...]]]></description>
			<content:encoded><![CDATA[<p>Por aquí dejo un prototipo de experimento que empecé hace como un año y medio.  Se trata de un sistema de visualización gráfica en forma de árbol del rss del sitio web <strong>Actionscript.es.</strong> Para los que no lo conozcan, <a href="http://www.actionscript.es">actionscript.es</a> es un portal de enlaces y recursos del lenguaje de programación Actionscript donde podemos encontrar los sitios web de obligada visita para cualquier desarrollador de esta plataforma, así como añadir nuevos enlaces al portal. Dicha página, pone a dominio público, un <a href="http://www.actionscript.es/sindicar.php">feed RSS</a> de los enlaces de la misma, de manera que cualquiera (en este caso, yo) pueda acceder a los recursos que allí se brindan, y representarlos a su antojo.</p>
<p>La idea del experimento era presentar el directorio de enlaces del portal mediante un juguete visual y dar una vuelta de tuerca al árbol de datos de la web, además de servirme como &#8220;sparring&#8221; para el desarrollo de un conjunto de clases para el tratamiento de sistemas de representación de redes y datos complejos.</p>
<div style="text-align:center">
<a href="http://www.electroduendes.com/actionscript.es"><img src="/blog/wp-content/arbol_actionscript.jpg" border="0"/></a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/arbol-de-actionscriptes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
