<?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/"
	>

<channel>
	<title>Drus' blog, my stuff.</title>
	<atom:link href="http://drusunlimited.com/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://drusunlimited.com/blog</link>
	<description>developing beautiful things...</description>
	<pubDate>Tue, 30 Mar 2010 17:29:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wonder-wall like</title>
		<link>http://drusunlimited.com/blog/index.php/2010/03/30/wonder-wall-like/</link>
		<comments>http://drusunlimited.com/blog/index.php/2010/03/30/wonder-wall-like/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 16:53:16 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Lab]]></category>

		<category><![CDATA[repulsion]]></category>

		<category><![CDATA[sandy3D]]></category>

		<category><![CDATA[yugop]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=237</guid>
		<description><![CDATA[Tómese este post como un ejercicio tirando del hilo de cómohabráhechoesto y un homenaje a quien ha sido una fuente de inspiración desde hace años, Yugo Nakamura.
El trabajo de Yugop, wonder-wall, muestra una retícula de imágenes que reaccionan al cursor creciendo en función de la distancia de éste. La forma en que las imágenes se [...]]]></description>
			<content:encoded><![CDATA[<p>Tómese este post como un ejercicio tirando del hilo de <em>cómohabráhechoesto</em> y un homenaje a quien ha sido una fuente de inspiración desde hace años, <a href="http://www.yugop.com/">Yugo Nakamura</a>.</p>
<p>El trabajo de Yugop, <a href="http://wonder-wall.com/">wonder-wall</a>, muestra una retícula de imágenes que <strong>reaccionan al cursor creciendo en función de la distancia</strong> de éste. La forma en que las imágenes se escalan, distorsionandose, delatan además <strong>una deformación de la imagen realizada con algún sistema de triangularización</strong>.<br />
<span id="more-237"></span><br />
Ya está, ya la hemos liado, sólo necesitaba disponer de algo de tiempo para empezar a recoger el fruto de las semillas que el gusanillo de la curiosidad acababa de plantar :)</p>
<p>Hacía mucho tiempo que no había trasteado con comportamientos <em>pseudofísicos</em> y algo menos desde que había probado una clase de triangularización que formaba parte de Sandy en su más tierna infancia, pero cuando pude imaginar la retícula de imágenes <strong>sin las mismas</strong> -como una retícula de puntos que huyen del cursor- estos dos elementos crearon una imagen clarísima:</p>
<p>
<script type="text/javascript" src="http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfid651e5f0e917d161ffbfbc510c0e0b297"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/repulsion/gridRepulsion/Main.swf","swfid651e5f0e917d161ffbfbc510c0e0b297","100%","400","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script>
</p>
<p>Aquí está el <a href="/labo/repulsion/gridRepulsion/gridRepulsion.fla.zip">fla</a> y este es el código usado:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//</span>
&nbsp;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">BitmapData</span>;
&nbsp;
const W:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span>;
const H:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> points_ar:<span style="color: #0066CC;">Array</span>=<span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> gridWidth:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">14</span>;
<span style="color: #000000; font-weight: bold;">var</span> gridHeight:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">8</span>;
<span style="color: #000000; font-weight: bold;">var</span> patternWidth:<span style="color: #0066CC;">Number</span> = W<span style="color: #66cc66;">/</span><span style="color: #66cc66;">&#40;</span>gridWidth-<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> patternHeight:<span style="color: #0066CC;">Number</span> = H<span style="color: #66cc66;">/</span><span style="color: #66cc66;">&#40;</span>gridHeight-<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> totalgrid:<span style="color: #0066CC;">Number</span> = gridWidth<span style="color: #66cc66;">*</span>gridHeight;
<span style="color: #000000; font-weight: bold;">var</span> mouseIsdown:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> range = patternWidth<span style="color: #66cc66;">*</span><span style="color: #cc66cc;">1.8</span>;
<span style="color: #000000; font-weight: bold;">var</span> speed = <span style="color: #cc66cc;">50</span>;
<span style="color: #000000; font-weight: bold;">var</span> multispeed=<span style="color: #cc66cc;">1</span>;
<span style="color: #000000; font-weight: bold;">var</span> holder:Sprite;
&nbsp;
init<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	removeEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, init<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	holder=<span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	addChild<span style="color: #66cc66;">&#40;</span>holder<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span>i=<span style="color: #cc66cc;">0</span>; i<span style="color: #66cc66;">&lt;</span>totalgrid; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> step:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">floor</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">/</span>gridWidth<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> resetx:<span style="color: #0066CC;">Number</span> = i-<span style="color: #66cc66;">&#40;</span>step<span style="color: #66cc66;">*</span>gridWidth<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> point:Telltale = <span style="color: #000000; font-weight: bold;">new</span> Telltale<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		holder.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span>;
		point.<span style="color: #006600;">x</span> =point.<span style="color: #006600;">mix</span>= <span style="color: #66cc66;">&#40;</span>patternWidth<span style="color: #66cc66;">*</span>resetx<span style="color: #66cc66;">&#41;</span>;
		point.<span style="color: #006600;">y</span> =point.<span style="color: #006600;">miy</span>= <span style="color: #66cc66;">&#40;</span>step<span style="color: #66cc66;">*</span>patternHeight<span style="color: #66cc66;">&#41;</span>;
		points_ar<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>=point;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_MOVE</span>, inHandler<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>, downHandler<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>, downHandler<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> repulsion<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> ddx:<span style="color: #0066CC;">Number</span>=mouseX;
	<span style="color: #000000; font-weight: bold;">var</span> ddy:<span style="color: #0066CC;">Number</span>=mouseY;
	<span style="color: #000000; font-weight: bold;">var</span> ddd:<span style="color: #0066CC;">Number</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sqrt</span><span style="color: #66cc66;">&#40;</span>ddx<span style="color: #66cc66;">*</span>ddx+ddy<span style="color: #66cc66;">*</span>ddy<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>holder.<span style="color: #006600;">hitTestPoint</span><span style="color: #66cc66;">&#40;</span>mouseX, mouseY<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		multispeed+.1<span style="color: #66cc66;">&lt;</span><span style="color: #cc66cc;">1</span> ? multispeed+=.1 : multispeed;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
		multispeed-.1<span style="color: #66cc66;">&gt;</span><span style="color: #cc66cc;">0</span> ? multispeed-=.1 : multispeed;
	<span style="color: #66cc66;">&#125;</span>
	holder.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #000000; font-weight: bold;">var</span> l:uint=points_ar.<span style="color: #0066CC;">length</span>;
	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&lt;</span> l; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> point=points_ar<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> dx = mouseX- point.<span style="color: #006600;">x</span>;
		<span style="color: #000000; font-weight: bold;">var</span> dy = mouseY - point.<span style="color: #006600;">y</span>;
		<span style="color: #000000; font-weight: bold;">var</span> distance = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sqrt</span><span style="color: #66cc66;">&#40;</span>dx<span style="color: #66cc66;">*</span>dx + dy<span style="color: #66cc66;">*</span>dy<span style="color: #66cc66;">&#41;</span>;
&nbsp;
		point.<span style="color: #006600;">x</span>=<span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">x</span>-<span style="color: #66cc66;">&#40;</span>dx<span style="color: #66cc66;">/</span>distance<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span>range<span style="color: #66cc66;">/</span>distance<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>speed<span style="color: #66cc66;">*</span>multispeed<span style="color: #66cc66;">&#41;</span>-<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">x</span>-point.<span style="color: #006600;">mix</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
		point.<span style="color: #006600;">y</span>=<span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">y</span>-<span style="color: #66cc66;">&#40;</span>dy<span style="color: #66cc66;">/</span>distance<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span>range<span style="color: #66cc66;">/</span>distance<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>speed<span style="color: #66cc66;">*</span>multispeed<span style="color: #66cc66;">&#41;</span>-<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">y</span>-point.<span style="color: #006600;">miy</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>mouseIsdown<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			holder.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">lineStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,0x000000,.5<span style="color: #66cc66;">&#41;</span>;
			holder.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">moveTo</span><span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">mix</span>, point.<span style="color: #006600;">miy</span><span style="color: #66cc66;">&#41;</span>;
			holder.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">x</span>, point.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> downHandler<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	playwithme.<span style="color: #0066CC;">visible</span>=playwithme.<span style="color: #0066CC;">visible</span>==<span style="color: #000000; font-weight: bold;">true</span> ? <span style="color: #000000; font-weight: bold;">false</span> : playwithme.<span style="color: #0066CC;">visible</span>;
	mouseIsdown=<span style="color: #66cc66;">!</span>mouseIsdown;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> leaveHandler<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	removeEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, repulsion<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_MOVE</span>, inHandler<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #000000; font-weight: bold;">function</span> inHandler<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_MOVE</span>, inHandler<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">MOUSE_LEAVE</span>, leaveHandler<span style="color: #66cc66;">&#41;</span>;
	addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, repulsion<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Ya solo quedaba usar esos puntos para alimentar la clase de triangularización en versión AS3, de la que pude encontrar dos versiones en <a href="http://www.flashsandy.org/blog/distortimage-in-as3.html">el blog de Sandy 3D</a>, una de <em>by Alex</em> y otra <em>by Carles Sanz</em>, que fue la que usé.</p>
<p>Un clip invisible que sigue al puntero con cierta fricción era lo que faltaba para restarle brusquedad a las reacciones de los puntos.</p>
<p>
<script type="text/javascript" src="http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfidb2e3f544b86ccd9f890a81958ff0b106"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/wonderwall-like/Main.swf","swfidb2e3f544b86ccd9f890a81958ff0b106","100%","293","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script>
</p>
<p>Hay que señalar que el comportamiento no es exactamente igual, el original está mucho más trabajado, detectando el rollover sobre las imágenes para crear un <em>escalón virtual</em> que se salta cuando pasas de una imagen a otra y evitando de ese modo ambiguedades en el comportamiento de los puntos cuando te encuentras cerca de los límites de cada imagen.</p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2010/03/30/wonder-wall-like/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lab: APE Physics Car</title>
		<link>http://drusunlimited.com/blog/index.php/2009/07/05/lab-ape-physics-car/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/07/05/lab-ape-physics-car/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 03:00:42 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[Lab]]></category>

		<category><![CDATA[APE]]></category>

		<category><![CDATA[physics]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=228</guid>
		<description><![CDATA[A veces la curiosidad me puede&#8230; La semana pasada estuve buscando una librería de física en AS2, que no encontré, pero gracias a ello pude ver varias de las librerías actuales.
Este es un ejercicio experimental de un coche con física, usando la librería APE, sin duda la más sencilla de utilizar.

Clicka sobre la película para [...]]]></description>
			<content:encoded><![CDATA[<p>A veces la curiosidad me puede&#8230; La semana pasada estuve buscando una librería de física en AS2, que no encontré, pero gracias a ello pude ver varias de las librerías actuales.<br />
Este es un ejercicio experimental de un coche con física, usando la librería <a href="http://www.cove.org/ape/" target="_blank">APE</a>, sin duda la más sencilla de utilizar.</p>
<p><span id="more-228"></span><br />
Clicka sobre la película para comenzar y usa las teclas de dirección. Para reiniciarlo pulsa tecla arriba o haz click de nuevo.<br />
<script type="text/javascript" src="http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfidfd0d1d912665498565dc69299164e41e"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/physics/APE_car/Main.swf","swfidfd0d1d912665498565dc69299164e41e","100%","400","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script></p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/07/05/lab-ape-physics-car/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lab: PV3D trampantojo</title>
		<link>http://drusunlimited.com/blog/index.php/2009/06/30/lab-pv3d-trampantojo/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/06/30/lab-pv3d-trampantojo/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 02:33:03 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[Lab]]></category>

		<category><![CDATA[papervision]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=211</guid>
		<description><![CDATA[Tonteando con papervision.

(Please open the article to see the flash file or player.)
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/papervision/trampantojo/Main.swf","swfidd3e53e533c55b842f5a98648a39c5c0d","100%","400","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		
]]></description>
			<content:encoded><![CDATA[<p>Tonteando con papervision.<br />
<span id="more-211"></span><br />
<script type="text/javascript" src="http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfidd4c69c1c4f8b49715bf158a679588dd2"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/papervision/trampantojo/Main.swf","swfidd4c69c1c4f8b49715bf158a679588dd2","100%","400","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script></p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/06/30/lab-pv3d-trampantojo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ola Heineken</title>
		<link>http://drusunlimited.com/blog/index.php/2009/03/31/ola-heineken/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/03/31/ola-heineken/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 22:26:58 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[Works]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=163</guid>
		<description><![CDATA[Desarrollo flash para una campaña promocional de Heineken, basada en la generación de una &#8220;ola&#8221; por medio de un mapa de desplazamiento, sobre un texto introducido por el usuario.


			
			
					
			
		

Productora: UVE digital producers
Agencia: MRM
Cliente: Heineken
Promoción: A un click de la final
]]></description>
			<content:encoded><![CDATA[<p>Desarrollo flash para una campaña promocional de Heineken, basada en la generación de una &#8220;ola&#8221; por medio de un mapa de desplazamiento, sobre un texto introducido por el usuario.<br />
<span id="more-163"></span><br />
<object
		width="663"
		height="410"
		data="http://vimeo.com/moogaloop.swf?clip_id=3943771&amp;server=vimeo.com"
		type="application/x-shockwave-flash">
			<param name="allowfullscreen" value="true" />
			<param name="allowscriptaccess" value="always" />
			<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3943771&amp;server=vimeo.com" />		
			<embed src="http://vimeo.com/moogaloop.swf?clip_id=3943771&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="663" height="410"></embed>
		</object>
</p>
<p><strong>Productora</strong>: <a href="http://uveproducers.com" target="_blank">UVE digital producers<br />
</a><strong>Agencia</strong>: <a href="http://www.mrmworldwide.com" target="_blank">MRM</a><br />
<strong>Cliente</strong>: <a href="http://heineken.es/" target="_blank">Heineken</a><br />
<strong>Promoción</strong>: <a href="http://www.aunclickdelafinal.com/ola_dedicada/index.html?v=06407207507302007506e06c06906d069074065064" target="_blank">A un click de la final</a></p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/03/31/ola-heineken/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Desaturar un DisplayObject con ColorMatrixFilter</title>
		<link>http://drusunlimited.com/blog/index.php/2009/03/28/desaturar-un-displayobject-con-colormatrixfilter/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/03/28/desaturar-un-displayobject-con-colormatrixfilter/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 11:52:37 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[ColorMatrixFilter]]></category>

		<category><![CDATA[desaturate]]></category>

		<category><![CDATA[filter]]></category>

		<category><![CDATA[util]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=139</guid>
		<description><![CDATA[La clase ColorMatrixFilter nos permite aplicar una matriz de transformación RGBA (rojo, verde, azul, alfa) a nivel de pixel sobre cualquier DisplayObject, a través de la propiedad heredada filters.
(Please open the article to see the flash file or player.)

En este caso he creado una clase utillería, ColorUtils, con métodos estáticos para pasar a blanco y [...]]]></description>
			<content:encoded><![CDATA[<p>La clase <em><a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filters/ColorMatrixFilter.html" target="_BLANK">ColorMatrixFilter</a></em> nos permite aplicar una matriz de transformación RGBA (rojo, verde, azul, alfa) a nivel de pixel sobre cualquier DisplayObject, a través de la propiedad heredada <em>filters</em>.</p>
<p><object type="application/x-shockwave-flash" data="http://drusunlimited.com/blog/wp-content/uploads/2009/03/desaturate.swf" width="100%" height="430" class="embedflash"><param name="movie" value="http://drusunlimited.com/blog/wp-content/uploads/2009/03/desaturate.swf" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><small>(Please open the article to see the flash file or player.)</small></object><br />
<span id="more-139"></span><br />
En este caso he creado una clase utillería, ColorUtils, con métodos estáticos para pasar a blanco y negro (desaturate), así como para eliminar cualquier filtro aplicado y devolver el objeto a su estado original (restore).</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//</span>
package utils<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObject</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #006600;">ColorMatrixFilter</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ColorUtils<span style="color: #66cc66;">&#123;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> desaturate<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">target</span>:DisplayObject<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> el_ar:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span>
			<span style="color: #cc66cc;">0.3</span>, <span style="color: #cc66cc;">0.59</span>, <span style="color: #cc66cc;">0.11</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #808080; font-style: italic;">//R</span>
			<span style="color: #cc66cc;">0.3</span>, <span style="color: #cc66cc;">0.59</span>, <span style="color: #cc66cc;">0.11</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #808080; font-style: italic;">//G</span>
			<span style="color: #cc66cc;">0.3</span>, <span style="color: #cc66cc;">0.59</span>, <span style="color: #cc66cc;">0.11</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #808080; font-style: italic;">//B</span>
			<span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">//A</span>
			<span style="color: #000000; font-weight: bold;">var</span> cm_filter:ColorMatrixFilter = <span style="color: #000000; font-weight: bold;">new</span> ColorMatrixFilter<span style="color: #66cc66;">&#40;</span>el_ar<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">target</span>.<span style="color: #006600;">filters</span> = <span style="color: #66cc66;">&#91;</span>cm_filter<span style="color: #66cc66;">&#93;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> restore<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">target</span>:DisplayObject<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">target</span>.<span style="color: #006600;">filters</span> = <span style="color: #000000; font-weight: bold;">null</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">//</span></pre></div></div>

<p>Para usar estos métodos, es suficiente con llamarlos como hacemos con cualquier método de la clase Math por ejemplo, pasando como parámetro el DisplayObject sobre el que queremos aplicar la transformación de color.</p>
<p>Así, para desaturar un MovieClip llamado <em>item</em> haríamos:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//</span>
<span style="color: #0066CC;">import</span> utils.<span style="color: #006600;">ColorUtils</span>;
ColorUtils.<span style="color: #006600;">desaturate</span><span style="color: #66cc66;">&#40;</span>item<span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">//</span></pre></div></div>

<p>Y para devolverlo a su estado original haríamos:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//</span>
<span style="color: #0066CC;">import</span> utils.<span style="color: #006600;">ColorUtils</span>;
ColorUtils.<span style="color: #006600;">restore</span><span style="color: #66cc66;">&#40;</span>item<span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">//</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/03/28/desaturar-un-displayobject-con-colormatrixfilter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lab: curveTo</title>
		<link>http://drusunlimited.com/blog/index.php/2009/03/02/curveto/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/03/02/curveto/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 00:47:34 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[Lab]]></category>

		<category><![CDATA[curveTo]]></category>

		<category><![CDATA[fisica]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=119</guid>
		<description><![CDATA[Trabajando con la API de dibujo de AS3 y algo de física.

(Please open the article to see the flash file or player.)
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/AS3/curveTo/Main.swf","swfidc515950aa60033006957ca204292a00a","100%","400","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		

var elasticidad:Number = .98;
var aceleracion:Number = .01;
var gravedad:Number = .9;
var color:Number = 0x9EA3A3;
var conteLinea:Shape;
var newx:Number=0;
var newy:Number=0;
&#160;
function fDraw&#40;&#41;:void&#123;
	conteLinea.graphics.clear&#40;&#41;;
	conteLinea.graphics.lineStyle&#40;0, color&#41;;
	conteLinea.graphics.moveTo&#40;pointA.x, [...]]]></description>
			<content:encoded><![CDATA[<p>Trabajando con la API de dibujo de AS3 y algo de física.<br />
<span id="more-119"></span><br />
<script type="text/javascript" src="http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfida143ffcc3e33e3134b378ca69dfeb467"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("/labo/AS3/curveTo/Main.swf","swfida143ffcc3e33e3134b378ca69dfeb467","100%","400","9.0.0","http://drusunlimited.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> elasticidad:<span style="color: #0066CC;">Number</span> = .98;
<span style="color: #000000; font-weight: bold;">var</span> aceleracion:<span style="color: #0066CC;">Number</span> = .01;
<span style="color: #000000; font-weight: bold;">var</span> gravedad:<span style="color: #0066CC;">Number</span> = .9;
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">color</span>:<span style="color: #0066CC;">Number</span> = 0x9EA3A3;
<span style="color: #000000; font-weight: bold;">var</span> conteLinea:Shape;
<span style="color: #000000; font-weight: bold;">var</span> newx:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
<span style="color: #000000; font-weight: bold;">var</span> newy:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	conteLinea.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	conteLinea.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">lineStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">color</span><span style="color: #66cc66;">&#41;</span>;
	conteLinea.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">moveTo</span><span style="color: #66cc66;">&#40;</span>pointA.<span style="color: #006600;">x</span>, pointA.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
	conteLinea.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">curveTo</span><span style="color: #66cc66;">&#40;</span>anchor.<span style="color: #006600;">x</span>, anchor.<span style="color: #006600;">y</span>, pointB.<span style="color: #006600;">x</span>, pointB.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fInercia<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> targetx:<span style="color: #0066CC;">Number</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>pointB.<span style="color: #006600;">x</span>-pointA.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>+pointA.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> targety:<span style="color: #0066CC;">Number</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>pointB.<span style="color: #006600;">y</span>-pointA.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span>+pointA.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
	newx = newx<span style="color: #66cc66;">*</span>elasticidad+<span style="color: #66cc66;">&#40;</span>targetx-anchor.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>aceleracion;
	newy = newy<span style="color: #66cc66;">*</span>elasticidad+<span style="color: #66cc66;">&#40;</span>targety-anchor.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>aceleracion+gravedad;
	anchor.<span style="color: #006600;">x</span> += newx;
	anchor.<span style="color: #006600;">y</span> += newy;
	fDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">abs</span><span style="color: #66cc66;">&#40;</span>newx<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&amp;</span>lt;.01 <span style="color: #66cc66;">&amp;</span>amp;<span style="color: #66cc66;">&amp;</span>amp; <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">abs</span><span style="color: #66cc66;">&#40;</span>newy<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&amp;</span>lt;.01<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		anchor.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, fInercia<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fPress<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>,fRelease<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">color</span> = 0xff0179;
	event.<span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">startDrag</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	anchor.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, fInercia<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fRelease<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>,fRelease<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">color</span> = 0x9EA3A3;
	<span style="color: #0066CC;">stopDrag</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> setListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
	pointA.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>,fPress, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
	pointB.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>,fPress, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
	pointA.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>,fRelease, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
	pointB.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_UP</span>,fRelease, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
	anchor.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, fInercia<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fInit<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
	conteLinea=<span style="color: #000000; font-weight: bold;">new</span> Shape<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	addChild<span style="color: #66cc66;">&#40;</span>conteLinea<span style="color: #66cc66;">&#41;</span>;
	setListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
fInit<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><a href="http://drusunlimited.com/labo/AS3/curveTo/curveTo.fla.zip"><strong>Descarga los fuentes</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/03/02/curveto/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deshabilitar todos los botones de una aplicación</title>
		<link>http://drusunlimited.com/blog/index.php/2009/03/01/deshabilitar-todos-los-botones-de-una-aplicacion/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/03/01/deshabilitar-todos-los-botones-de-una-aplicacion/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 19:42:10 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[boton]]></category>

		<category><![CDATA[mouseChildren]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=99</guid>
		<description><![CDATA[Este es un trucazo que comentó el otro día Joseba Alonso en la lista de asnativos, y que me parece tan bueno que no me puedo resistir a publicarlo.
En ocasiones nos encontramos con la necesidad de deshabilitar todos los elementos interactivos de nuestra película mientras por ejemplo esperamos una respuesta del servidor. En AS2 esto [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un trucazo que comentó el otro día <a href="http://www.sidedev.net/blog/">Joseba Alonso</a> en la lista de asnativos, y que me parece tan bueno que no me puedo resistir a publicarlo.</p>
<p>En ocasiones nos encontramos con la necesidad de deshabilitar todos los elementos interactivos de nuestra película mientras por ejemplo esperamos una respuesta del servidor. <span id="more-99"></span>En AS2 esto acostumbraba a hacerlo de una forma un tanto regular, aunque efectiva, consistente en colocar un botón del tamaño del escenario con el <em>useHandCursor</em> a false sobre todos los elementos de la película, para luego retirarlo una vez recibida la respuesta.</p>
<p><strong>En AS3, y gracias al <em>burbujeo</em> de eventos, esto lo podemos solucionar de una forma muchísimo más elegante, con una sola línea y sin necesidad de &#8220;tapar&#8221; nada:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//</span>
&nbsp;
<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">mouseChildren</span> = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//</span></pre></div></div>

<p>Una evidencia más de la positiva evolución del lenguaje ;-)</p>
<p> </p>
<hr />
<strong><span style="background-color:#ff0179; color:#ffffff;">Actualización</span></strong><br />
Como comenta <a href="http://yporqueno.es/blog/" target="_blank">Iván</a>, ya solo queda deshabilitar la tabulación por teclado, cosa que podemos hacer del mismo modo sobre el stage, quedando así:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//</span>
<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">mouseChildren</span> = <span style="color: #000000; font-weight: bold;">false</span>;
<span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">tabEnabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;
<span style="color: #808080; font-style: italic;">//</span></pre></div></div>

<p>Gracias por el dato!!</p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/03/01/deshabilitar-todos-los-botones-de-una-aplicacion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ronda Coca-Cola</title>
		<link>http://drusunlimited.com/blog/index.php/2009/02/11/ronda-coca-cola/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/02/11/ronda-coca-cola/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 22:16:55 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[Works]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=58</guid>
		<description><![CDATA[
			
			
					
			
		

Productora: UVE digital producers
Agencia: Momentum
Dirección de arte: Agustín Ocampo
Cliente: Coca-Cola
]]></description>
			<content:encoded><![CDATA[<p><object
		width="663"
		height="410"
		data="http://vimeo.com/moogaloop.swf?clip_id=2718915&amp;server=vimeo.com"
		type="application/x-shockwave-flash">
			<param name="allowfullscreen" value="true" />
			<param name="allowscriptaccess" value="always" />
			<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2718915&amp;server=vimeo.com" />		
			<embed src="http://vimeo.com/moogaloop.swf?clip_id=2718915&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ff0179&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="663" height="410"></embed>
		</object>
</p>
<p><strong>Productora</strong>: <a href="http://uveproducers.com" target="_blank">UVE digital producers<br />
</a><strong>Agencia</strong>: <a href="http://www.momentumww.com/" target="_blank">Momentum</a><br />
<strong>Dirección de arte</strong>: <a href="http://www.atajografico.com/" target="_blank">Agustín Ocampo</a><br />
<strong>Cliente</strong>: <a href="http://ronda.cocacola.es/" target="_blank">Coca-Cola</a></p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/02/11/ronda-coca-cola/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Precargas en Flex</title>
		<link>http://drusunlimited.com/blog/index.php/2009/02/10/precargas-en-flex/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/02/10/precargas-en-flex/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 09:53:33 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[precarga]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=36</guid>
		<description><![CDATA[Este post es una adaptación traducida al castellano, a petición del público, del método que nos muestran en este post de bit-101.
Hasta ahora para hacer una precarga bastaba con añadir un par de fotogramas en los que situarla al principio de nuestra película. Acostumbrados a tener nuestra línea de tiempo, cuando desarrollamos un site en [...]]]></description>
			<content:encoded><![CDATA[<p>Este post es una adaptación traducida al castellano, a petición del público, del método que nos muestran en <a href="http://www.bit-101.com/blog/?p=946" target="_blank">este post de bit-101</a>.</p>
<p>Hasta ahora para hacer una precarga bastaba con añadir un par de fotogramas en los que situarla al principio de nuestra película. Acostumbrados a tener nuestra línea de tiempo, cuando desarrollamos un site en flex nos encontramos que al no tener línea de tiempo la tarea de elaborar la precarga más simple se convierte en un obstáculo.<span id="more-36"></span></p>
<p>Afortunadamente flex tiene unas tags propias (sí, sí, esas que van entre corchetes []), que se ejecutan en el momento de compilar y al igual que nos permiten establecer la velocidad de la película, el color de fondo, etc. también nos permite insertar fotogramas, de forma que podemos añadir esos añorados fotogramas donde situar nuestra precarga :)</p>
<p>Básicamente necesitaremos solo un par de cosas: <strong>una clase que maneje nuestra precarga y una de las mencionadas tags en la clase principal que añade un frame previo a la película en el cual se sitúa la clase de precarga</strong>.</p>
<p>La línea que debemos añadir en nuestra clase principal, justo depués de los imports, sería algo así:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>Frame<span style="color: #66cc66;">&#40;</span>factoryClass=<span style="color: #ff0000;">&quot;com.uveproducers.utils.Preload&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span></pre></div></div>

<p>La clase de precarga ya la elaboramos a nuestra medida, con la única objeción de que una vez realizada la carga llamemos a un método que coloque la clase principal de nuevo en su sitio:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> mainClass:<span style="color: #000000; font-weight: bold;">Class</span> = <span style="color: #000000; font-weight: bold;">Class</span><span style="color: #66cc66;">&#40;</span>getDefinitionByName<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Main&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>mainClass<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">var</span> app:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> mainClass<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
                addChild<span style="color: #66cc66;">&#40;</span>app as DisplayObject<span style="color: #66cc66;">&#41;</span>;
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>en mi caso, la forma en que lo apliqué en el site de <a href="http://www.coolshotfilms.com/dev">coolShot</a>, fue esta:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">uveproducers</span>.<span style="color: #006600;">utils</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObject</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageAlign</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageScaleMode</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
    <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">getDefinitionByName</span>;
&nbsp;
   <span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">&quot;#262116&quot;</span>,framerate=<span style="color: #ff0000;">&quot;31&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
&nbsp;
   <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Preload <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">MovieClip</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> preloadHolder:Sprite;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> holderGraphicBar1:Sprite;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> holderGraphicBar2:Sprite;
&nbsp;
        <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Preload<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #0066CC;">stop</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">scaleMode</span> = StageScaleMode.<span style="color: #006600;">NO_SCALE</span>;
            <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">align</span> = StageAlign.<span style="color: #006600;">TOP_LEFT</span>;
            <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageFocusRect</span>=<span style="color: #000000; font-weight: bold;">false</span>;
            addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, <span style="color: #0066CC;">onEnterFrame</span><span style="color: #66cc66;">&#41;</span>;
            preloadHolder=<span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>preloadHolder<span style="color: #66cc66;">&#41;</span>;
            holderGraphicBar1=<span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            preloadHolder.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>holderGraphicBar1<span style="color: #66cc66;">&#41;</span>;
            holderGraphicBar2=<span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            preloadHolder.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>holderGraphicBar2<span style="color: #66cc66;">&#41;</span>;
            holderGraphicBar1.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>0xE4DFD5,.3<span style="color: #66cc66;">&#41;</span>;
            holderGraphicBar1.<span style="color: #006600;">graphics</span>.<span style="color: #006600;">drawRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">54</span>, <span style="color: #cc66cc;">68</span>, <span style="color: #cc66cc;">800</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
            holderGraphicBar1.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onEnterFrame</span><span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
        <span style="color: #66cc66;">&#123;</span>
            holderGraphicBar2.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>framesLoaded == totalFrames<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                removeEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, <span style="color: #0066CC;">onEnterFrame</span><span style="color: #66cc66;">&#41;</span>;
                <span style="color: #0066CC;">nextFrame</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
                init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #66cc66;">&#125;</span>
            <span style="color: #b1b100;">else</span>
            <span style="color: #66cc66;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">var</span> percent:<span style="color: #0066CC;">Number</span> = root.<span style="color: #006600;">loaderInfo</span>.<span style="color: #0066CC;">bytesLoaded</span> <span style="color: #66cc66;">/</span> root.<span style="color: #006600;">loaderInfo</span>.<span style="color: #0066CC;">bytesTotal</span>;
                holderGraphicBar2.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>0xE4DFD5<span style="color: #66cc66;">&#41;</span>;
                holderGraphicBar2.<span style="color: #006600;">graphics</span>.<span style="color: #006600;">drawRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">54</span>, <span style="color: #cc66cc;">68</span>, <span style="color: #cc66cc;">800</span> <span style="color: #66cc66;">*</span> percent, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
                holderGraphicBar2.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> mainClass:<span style="color: #000000; font-weight: bold;">Class</span> = <span style="color: #000000; font-weight: bold;">Class</span><span style="color: #66cc66;">&#40;</span>getDefinitionByName<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Main&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>mainClass<span style="color: #66cc66;">&#41;</span>
            <span style="color: #66cc66;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">var</span> app:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> mainClass<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
                addChild<span style="color: #66cc66;">&#40;</span>app as DisplayObject<span style="color: #66cc66;">&#41;</span>;
            <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Nota: puede ser necesario que la clase principal compruebe que ha sido instanciada en el escenario antes de inicializarse, para lo cual podemos usar el evento ADDED_TO_STAGE</p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/02/10/precargas-en-flex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cómo generar un proyecto actionscript publicable en flash y flex indistintamente</title>
		<link>http://drusunlimited.com/blog/index.php/2009/01/19/como-generar-un-proyecto-publicable-en-flash-y-flex-indistintamente/</link>
		<comments>http://drusunlimited.com/blog/index.php/2009/01/19/como-generar-un-proyecto-publicable-en-flash-y-flex-indistintamente/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 23:04:04 +0000</pubDate>
		<dc:creator>Javier Fernández Montes</dc:creator>
		
		<category><![CDATA[AS3]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[composicion]]></category>

		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://drusunlimited.com/blog/?p=3</guid>
		<description><![CDATA[Este es un demonio de dos cabezas que llevo dentro desde que empecé a trastear con el flex.
Por un lado la sensación de que estoy haciendo las cosas &#8220;reguleras&#8221;, porque parece que nadie las hace como yo, y por otro la dependencia de montar toda la parafernalia de flex para editar cualquier trabajo hecho en [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un demonio de dos cabezas que llevo dentro desde que empecé a trastear con el flex.</p>
<p>Por un lado la sensación de que estoy haciendo las cosas &#8220;reguleras&#8221;, porque parece que nadie las hace como yo, y por otro la dependencia de montar toda la parafernalia de flex para editar cualquier trabajo hecho en él.</p>
<p>Comentando con Fede un problema con un tooltip que extendía un símbolo y yo pretendía que fuera un singleton, y la lección de Fede sobre separar la vista (el símbolo) del controlador (el singleton) me di cuenta que eso es precisamente lo que hago en flex.</p>
<p><strong>Lo que pasa no es que haga las cosas de una forma extraña en flex, sino que estoy haciendo algo que no había hecho antes, o al menos no por sistema como exige flex: en flex lo que hago es componer, separando la vista del controlador, mientras que en flash suelo extender directamente el símbolo de la librería.</strong><span id="more-3"></span></p>
<blockquote><p><strong>Mira mamá, ya compongo!!!</p>
<p>XD</strong></p></blockquote>
<p>A ver si lo puedo explicar más claramente, presentando los dos escenarios: pongamos que tenemos un símbolo linkado como ToolTip en la librería.</p>
<p>En flash solía hacer una clase ToolTip.as que extendía el símbolo, asociándola al símbolo directamente desde el linkage de la librería. Para crear una instancia de un tooltip funcional hacía un new ToolTip() y un addChild() y listo.</p>
<p>En flex, como estamos tirando de símbolos &#8220;precompilados&#8221; empaquetados como un archivo swc, no se puede hacer esto limpiamente porque implica que la clase se compile con el símbolo desde flash a cada cambio. La solución es usar una clase con la funcionalidad (ToolTip.as es nuestro controlador) que a su vez usa la clase identificadora del símbolo (ToolTipSWC es la vista).</p>
<p><strong>La <em>vista</em> es el símbolo de la librería, que tiene un id o linkage (por ejemplo &#8216;<em>VistaSWC</em>&#8216;) que se corresponde con el nombre de la clase símbolo que instanciaremos con el controlador.</strong></p>
<p style="text-align: center;"><strong><img class="aligncenter size-full wp-image-34" title="linkage" src="http://drusunlimited.com/blog/wp-content/uploads/2009/01/linkage1.png" alt="linkage" width="568" height="355" /></strong></p>
<p style="text-align: center;"> </p>
<p><strong>El <em>controlador</em> es una clase que usa una instancia de la vista (&#8217;<em>VistaSWC</em>&#8216;) y que implementa sobre ella toda la funcionalidad.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Controlador <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">MovieClip</span>
	<span style="color: #66cc66;">&#123;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> vista:VistaSWC;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Controlador<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
			vista=<span style="color: #000000; font-weight: bold;">new</span> VistaSWC<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			addChild<span style="color: #66cc66;">&#40;</span>vista<span style="color: #66cc66;">&#41;</span>;
			Funcionalidad<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Funcionalidad<span style="color: #66cc66;">&#40;</span>texto:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
			vista.<span style="color: #006600;">campo_txt</span>.<span style="color: #0066CC;">text</span>=texto;
			vista.<span style="color: #006600;">fondo_mc</span>.<span style="color: #0066CC;">width</span>=vista.<span style="color: #006600;">campo_txt</span>.<span style="color: #0066CC;">TextWidth</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>De esta forma cuando hacemos:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">var</span> controlador:Controlador=<span style="color: #000000; font-weight: bold;">new</span> Controlador<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>controlador<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Estamos creando un controlador que a su vez va a crear la vista que usa. <strong>El resultado que tenemos es el mismo pero además tenemos la ventaja de que al separar la vista del controlador, podríamos tener múltiples vistas.</strong></p>
<blockquote><p><strong>Espera, ¿esto entonces es composición? pero&#8230; si eso sencillamente es una forma de programar, se hace exactamente igual en flash&#8230;</strong></p></blockquote>
<p>Esto me hizo ver que si organizas el fla para componer, separando la vista del controlador, ese fla con un poco de cuidado compilaría en flex. Y efectivamente, solo hay que tener en cuenta algunas cosas.</p>
<h3>Como generar un proyecto publicable en flash y flex indistintamente</h3>
<ul>
<li><strong>La clase principal de la aplicación debe ser el document class de flash.</strong></li>
<li><strong>Las librerías necesarias deben estar en la carpeta del proyecto, haciendo imports como lo haríamos en flash.
<p><span style="font-weight: normal;">Hay que evitar usar librerías que hayamos creado como tales en flex, ya que no he encontrado la forma de referenciarlas en flash. Lo mismo me pasa con los classpath propios que definamos en flash, que no se como tenerlos disponibles en flex. De cualquier manera, si lo que perseguimos es la portabilidad del proyecto, me parece más interesante que las librerías acompañen al proyecto para asegurarnos.</span></strong></li>
<li><strong>Los simbolos de la librería deben ser solo &#8220;vista&#8221;
<p><span style="font-weight: normal;">Hay que separar la vista del controlador con composición para editar y compilar correctamente en flex.</span></strong></li>
<li><strong>Exportar el swc en flash
<p><span style="font-weight: normal;">Para importarlo desde flex<strong>. <span style="font-weight: normal;">En flex el nombre de clase definido en las opciones de vinculación de la librería de flash lo usaremos  para acceder al asset (&#8217;VistaSWC&#8217;) del swc importado y sus propiedades.</span></strong></span></strong></li>
<li><strong>Otros factores a tener en cuenta
<p><span style="font-weight: normal;">Es necesario definir el background color y el framerate de la película en ambos editores, en flex con código y en flash desde el panel de propiedades.</span></strong></li>
<li><strong>Exportar/importar el proyecto
<p><span style="font-weight: normal;">La forma más eficaz es un zip de toda la carpeta de proyecto. En flash encontraríamos el fla en la carpeta source como assets.fla. En flex importamos el proyecto, seleccionando la carpeta entera.</span></strong></li>
</ul>
<p><a href="http://drusunlimited.com/blog/wp-content/uploads/2009/01/investigacion-swc-flexflash.zip"></a><a href="http://drusunlimited.com/blog/wp-content/uploads/2009/01/investigacion-swc-flexflash.zip">Descarga un ejemplo de proyecto compilable en flash y flex</a> cualquier sugerencia para mejorar el sistema es bienvenida, y cualquier inconveniente que me comuniquéis lo añado a la lista para tenerlo en cuenta.</p>
<h3>Inconvenientes</h3>
<p>No se pueden hacer muchos &#8220;hacks&#8221; de flex del tipo de <a href="http://drusunlimited.com/blog/index.php/2009/02/precargas-en-flex/trackback/" target="_blank">la precarga que publiqué</a>, que flash no comprende.</p>
]]></content:encoded>
			<wfw:commentRss>http://drusunlimited.com/blog/index.php/2009/01/19/como-generar-un-proyecto-publicable-en-flash-y-flex-indistintamente/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
