<?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 &#187; Actionscript 3.0</title>
	<atom:link href="http://www.electroduendes.com/blog/category/1flash/2actionscript-2-0/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>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>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>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>Actionscript 3.0</title>
		<link>http://www.electroduendes.com/blog/actionscript-30/</link>
		<comments>http://www.electroduendes.com/blog/actionscript-30/#comments</comments>
		<pubDate>Tue, 18 Oct 2005 08:56:47 +0000</pubDate>
		<dc:creator>Alex Sánchez</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://www.electroduendes.com/blog/?p=18</guid>
		<description><![CDATA[Macromedia ya ha sacado una versión alpha del player 8.5 con el que se puede trabajar con el nuevo Actionscript 3.0.todavía no he acabado con el 8!  
]]></description>
			<content:encoded><![CDATA[<p>Macromedia ya ha sacado una versión alpha del player 8.5 con el que se puede trabajar con <a href="http://labs.macromedia.com/wiki/index.php/ActionScript_3:Learning_Tips">el nuevo Actionscript 3.0</a>.todavía no he acabado con el 8! <img src='http://www.electroduendes.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.electroduendes.com/blog/actionscript-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
