<?xml version="1.0" encoding="UTF-8"?>
<rss 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/" version="2.0">

<channel>
	<title>LLops Blog</title>
	
	<link>http://llops.com/blog</link>
	<description>Blog de programación creativa mantenido por llops. Experimentos y artículos entorno a la plataforma flash y as3.</description>
	<lastBuildDate>Tue, 02 Mar 2010 08:56:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/llopsBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="llopsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>FlashDay</title>
		<link>http://llops.com/blog/2010/03/02/flashday/</link>
		<comments>http://llops.com/blog/2010/03/02/flashday/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 08:56:35 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[conferencias]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[FlashDay]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=265</guid>
		<description><![CDATA[Seguro que a estas alturas ya has oído hablar mucho de FlashDay, un evento que gira entorno a la Plataforma Flash y que se celebrará en Barcelona el día 4 de marzo (sí, ya casi no hay tiempo, así que si no estás apuntado tendrás que inscribirte rápido aquí).
La mejor forma de resumir en qué [...]]]></description>
			<content:encoded><![CDATA[<p>Seguro que a estas alturas ya has oído hablar mucho de <a title="FlashDay" href="http://www.flashday.eu/" target="_blank">FlashDay</a>, un evento que gira entorno a la Plataforma Flash y que se celebrará en Barcelona el día 4 de marzo (sí, ya casi no hay tiempo, así que si no estás apuntado tendrás que inscribirte rápido <a title="Registro FlashDay" href="http://www.flashday.eu/registro.html" target="_blank">aquí</a>).</p>
<p>La mejor forma de resumir en qué consiste este evento es recopilar un par de definiciones del propio site:</p>
<blockquote><p>FlashDay es un evento con carácter 100% inspiracional y participativo alrededor de la plataforma Flash.</p>
<p>FlashDay es un entorno para entrar en contacto con gente con las mismas inquietudes, un entorno en el que compartir y mostrar todos esos proyectos en los que andas trabajando (&#8230;)</p></blockquote>
<p>Como punto de partida habrá una serie de conferencias de gente tan conocida como Xavi Beumala, Joseba Alonso o Joan Garnet, por poner algunos ejemplos (ahí es nada&#8230;). Y para bajar un poco el nivel, ahí estaré yo también dando una charla :p</p>
<p>Mi charla no girará sobre un tema específico ni ningún aspecto técnico, simplemente será un repaso sobre programación Flash, experimentación y algunos trabajos de agencia. Intentaré hacerlo ameno, prometido.</p>
<p>Si alguno de los que leéis habitualmente este blog vais a estar por ahí, me encantará que os acerquéis a saludar, y así os pongo cara :)</p>
<p>Nos vemos en un par de días!</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2010/03/02/flashday/#comments">9 comentarios</a> | <a href="http://llops.com/blog/2010/03/02/flashday/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2010/03/02/flashday/&title=FlashDay">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2010
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2010/03/02/flashday/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Trabajando con FlashDevelop en Mac</title>
		<link>http://llops.com/blog/2010/02/21/trabajando-con-flashdevelop-en-mac/</link>
		<comments>http://llops.com/blog/2010/02/21/trabajando-con-flashdevelop-en-mac/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 20:04:28 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[flash cs4]]></category>
		<category><![CDATA[Flash Professional]]></category>
		<category><![CDATA[FlashDevelop]]></category>
		<category><![CDATA[fusion]]></category>
		<category><![CDATA[jsfl]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[macros]]></category>
		<category><![CDATA[parallels]]></category>
		<category><![CDATA[QuickSilver]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[wmware]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=218</guid>
		<description><![CDATA[Una vez comentados los motivos por los que de momento no voy a prescindir de FlashDevelop en Mac, toca explicar cómo lo tengo instalado yo y que workflow utilizo para que sea cómodo trabajar con Flash Professional.

&#160;
Virtualización
Como no hay magia que valga, lo primero es hacerse con un programa de virtualización para instalar Windows. Los [...]]]></description>
			<content:encoded><![CDATA[<p>Una vez comentados <a href="http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/" target="_blank">los motivos</a> por los que de momento no voy a prescindir de FlashDevelop en Mac, toca explicar cómo lo tengo instalado yo y que workflow utilizo para que sea cómodo trabajar con Flash Professional.</p>
<p><span id="more-218"></span></p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Virtualización</span></strong></p>
<p>Como no hay magia que valga, lo primero es hacerse con un programa de virtualización para instalar Windows. Los dos más conocidos son <a href="http://www.vmware.com/products/fusion/" target="_blank">VMware Fusion</a> y <a href="http://www.parallels.com/es/products/desktop/" target="_blank">Parallels Desktop</a>.</p>
<p>Cuando me pasé a Mac estuve leyendo bastante sobre ambos. Al final me acabó convenciendo más el primero, así que me compré una licencia de Fusion. Sin entrar en comparaciones, Fusion arranca bastante rápido, soporta copy/paste y drag&amp;drop entre sistemas operativos, puedes acceder a las mismas carpetas desde ambos lados y tiene alguna otra característica interesante que ahora veremos.</p>
<p>No explicaré el proceso de instalación porque no es muy complicado y hay mucha información en la red, únicamente detallaré mi configuración por si sirve de ayuda.</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Configuración de Windows y VMware</span></strong></p>
<p>Yo tengo instalado un Windows 7 de 32 bits, FlashDevelop y poco más. Obviamente, si se necesitan más programas pues no pasa nada, pero es importante no tener procesos que se inicien en el arranque consumiendo memoria inútilmente, así que mejor instalar sólo lo imprescindible. Desaconsejo totalmente antivirus, ya que me parece muy difícil infectarse sin instalaciones ni navegación. Si se es muy desconfiado en este aspecto, mejor desactivar internet en Windows.</p>
<p>Importante desactivar el tema Aero, que para nuestro caso es absurdo. Yo utilizo el tema Windows 7 Basic y queda más que bonito. Y si no quieres dedicar ni un recurso a la estética, en "Herramientas de rendimiento", "Ajustar efectos visuales", activas "Mejor rendimiento" y te lo deja pelado.</p>
<p>En cuanto a la configuración de VMware, lo más relevante:</p>
<p><a href="http://llops.com/blog/content/articulos/feb10/configuracion-vmware.png" target="_blank"><img class="alignnone" title="Configuracion VMware" src="http://llops.com/blog/content/articulos/feb10/configuracion-vmware.png" alt="" width="475" height="288" /></a></p>
<ul>
<li>Compartir: útil si vas a trabajar en Windows, ya que podrás acceder a cualquier directorio de Snow Leopard que añadas.</li>
<li>Aplicaciones: aquí podemos añadir un acceso directo de FlashDevelop al Dock.</li>
<li>Procesador: 1 núcleo. Esto quiere decir que el sistema virtual utilizará un nucleo del procesador, pero no de manera exclusiva. Nuestro Mac continuará utilizando los dos.</li>
<li>Memoria: 1024 MB. En este caso la memoria sí que se reserva entera, es decir, que cuando Windows esté corriendo tendrá 1 giga reservado que no podrá utilizar Snow Leopard. Con Aero desactivado, para correr Windows y FD hay más que de sobras, así que no os preocupe darle "un poquito más" de este mínimo.</li>
<li>Pantalla: sino tenéis dependencia de DirectX 9 (para juegos) ni utilizáis Aero, desactivar la opción "Acelerar Gráficos 3D".</li>
<li>Disco duro: yo tengo una partición de 40 gigas, pero realmente bastaría con el espacio de Windows y poco más. Siempre es interesante cubrirse un poco para la memoria virtual, por si tomas muchos snapshots, porque al final siempre se acaban instalando cosas...</li>
</ul>
<p>Una de las ventajas de virtualizar es que si la máquina no está corriendo, se puede cambiar toda la configuración, así que no tengáis miedo de ir probando configuraciones hasta que os sintáis cómodos. Pero si no queréis perder tiempo, con lo ya comentado, en un MacBook Pro Core 2 Duo de 2'66 y 4 gigas de ram, corriendo Windows 7 con FlashDevelop, más Flash, Chrome, Safari, Spotify y unos cuantos programas "menores" más, el ordenador "vuela" :)</p>
<p>Y un último apunte: cuando no se trabaje con la máquina virtual lo más cómodo y rápido es suspenderla, no apagarla, recuperando todos nuestros recursos y pudiendo volver luego en segundos.</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Modo Unity</span></strong></p>
<p>Una de las cosas más agradables y útiles de Fusion es su vista "Unity". En este modo, el escritorio de Windows desaparece y las aplicaciones aparecen como una ventana más de Mac. Perfecto, ¿no?</p>
<p><a href="http://llops.com/blog/content/articulos/feb10/modo-unity.png" target="_blank"><img class="alignnone" title="Modo Unity de Fusion" src="http://llops.com/blog/content/articulos/feb10/modo-unity.png" alt="" width="500" height="350" /></a></p>
<p><a href="http://llops.com/blog/content/articulos/feb10/fd-integrado.jpg" target="_blank"><img class="alignnone" title="FlashDevelop integrado" src="http://llops.com/blog/content/articulos/feb10/fd-integrado.jpg" alt="" width="500" height="120" /></a></p>
<p>Y como comentaba antes, hacer un drag&amp;drop de archivos, un copy&amp;paste o cualquier típica operación entre programas funciona a la perfección. Un gran paso para sentirnos como si estuviéramos en un único sistema.</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">En busca del workflow perfecto</span></strong></p>
<p>A pesar de que así está todo bastante integrado, falta una cosa básica: poder ejecutar películas en Flash desde FlashDevelop. Al principio pensé que mucha gente habría buscado una solución a esto y no sería difícil. No estaba equivocado ni nada...</p>
<p>Parece ser que en Parallels se puede instalar una herramienta llamada "Shared Applications" que te permite mapear programas, con lo que se puede configurar en FD la ruta a Flash.app (también vi que está lejos de ser perfecto y que muchísima gente tenía problemas). Desgraciadamente, en Fusion no existe nada similar.</p>
<p>Así que me puse a darle vueltas a la cabeza hasta encontrar un camino.</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">QuickSilver</span></strong></p>
<p><a title="Página oficial de Quicksilver" href="http://docs.blacktree.com/quicksilver/quicksilver" target="_blank">QuickSilver</a> es un programa que mucha gente del mundo Mac considera imprescindible y que sirve para lanzar aplicaciones rápidamente (esta es la utilidad más básica, realmente puede hacer mil cosas). Por ejemplo, yo para ejecutar Flash CS4 no lo busco en Aplicaciones ni el Dock, simplemente hago cmd+space, tecleo Fl y enter. Al principio puede parecer tonto, pero cuando te acostumbras no hay vuelta atrás.</p>
<p>Me acordé que el programa tiene un apartado llamado "Triggers" e indagé un poco. Un trigger permite asociar una acción (abrir una aplicación, correr un script, etc) a una combinación de teclas. Pensé que si podía correr un script funcionaría también con un jsfl... ¡y bingo!.</p>
<p>Así que abrimos Flash, creamos un nuevo archivo del tipo "Flash Javascript File" y escribimos la siguiente linea:</p>
<div class="igBar"><span id="lactionscript3-7"><a href="#" onclick="javascript:showCodeTxt('actionscript3-7'); return false;">Plain Text</a></span></div>
<div class="syntax_hilite"><span class="langName">AS3:</span>
<div id="actionscript3-7">
<div class="actionscript3">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">fl.<span style="color: #000000;">getDocumentDOM</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #000000;">testMovie</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Lo guardamos en el escritorio como <em>testmovie.jsfl</em></p>
<p>Ahora abrimos QuickSilver, vamos a "Preferences" y activamos la opción "Enable advances features" (no estoy 100% seguro que sea imprescindible, pero por si acaso). Después vamos al menú "Triggers", añadimos uno nuevo (parte inferior, en el +, "HotKey"), y nos sale una nueva ventanita. En "Select an item", sólo hace falta empezar a teclear el nombre de nuestro archivo y QuickSilver lo encontrará y nos pondrá por defecto la "Action" de "Open". Guardamos.</p>
<p><a href="http://llops.com/blog/content/articulos/feb10/trigger.png"><img class="alignnone" title="Añadiendo un trigger" src="http://llops.com/blog/content/articulos/feb10/trigger.png" alt="" width="218" height="358" /></a></p>
<blockquote><p><strong>Nota</strong>: si al empezar a escribir no nos detecta el script seguramente sea porque no lo tiene indexado todavía. En el menú, junto a Triggers, hay una opción llamada "Catalog". Buscamos nuestra ubicación, en este caso Desktop, la seleccionamos y en la parte inferior, clicamos en el icono de refrescar (Rescan Source). Debería aumentar el número de elementos indexados. Ahora seguro que ya encuentra nuestro archivo.</p></blockquote>
<blockquote><p><strong>Nota:</strong> QuickSilver no indexa todo el disco duro, sino que tiene unos directorios por defecto (el escritorio es uno de ellos). Si prefieres agrupar tus scripts en otro directorio tendrás que incluirlo a mano. Esto se hace también en "Catalog", en "Custom". Ahí añadimos un archivo o carpeta. Atención que si añadimos una carpeta, en el nuevo submenú que aparece, hay que indicar en "Include contents" que los queremos todos, sino coge el directorio pero no su contenido. Lo seleccionamos y volvemos a refrescar para que lo indexe.</p></blockquote>
<p>Ahora que tenemos nuestro trigger, sólo falta asignarle una tecla. Click sobre la palabra "Hot Key" (o en la "i" del menú inferior, "Trigger Info"), "Edit" y ponemos nuestro atajo. En mi caso he elegido "alt+z". Para activar el trigger, desactivar-activar una vez el check de la izquierda.</p>
<p><a href="http://llops.com/blog/content/articulos/feb10/custom-trigger.jpg" target="_blank"><img class="alignnone" title="Trigger para testmovie.jsfl" src="http://llops.com/blog/content/articulos/feb10/custom-trigger.jpg" alt="" width="500" height="170" /></a></p>
<p>¡Voilá, ahora ya podemos ejecutar en cualquier momento nuestra película desde FlashDevelop! (realmente desde cualquier sitio :p )</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Guardar y compilar</span></strong></p>
<p>Aunque ahora el flujo es bastante bueno, todavía falta que con el mismo comando se pueda guardar la clase que se está modificando y luego saltar a Flash para compilar. Sino eres tan purista-pesado-friki como yo, con la opción anterior es suficiente; si lo eres, a seguir leyendo.</p>
<p>La primera idea era buscar un script que pudiera guardar en FlashDevelop e intentar correrlo luego con QuickSilver, de la misma manera que hemos hecho con el jsfl. Lo primero, no encontré la forma de generar dicho script, y lo segundo, en QuickSilver con un único comando no puedes ejecutar dos opciones (realmente si he visto una forma, pero no entendí ni la mitad).</p>
<p>Leyendo leyendo fui a parar a un post de un tío que manipulaba Spotify vía <a title="Wikipedia: AppleScript" href="http://es.wikipedia.org/wiki/AppleScript" target="_blank">AppleScript</a>, así que ahí vi otro camino: crear un applescript que se comunicara con FlashDevelop y ejecutarlo desde QuickSilver también. Como seguía encontrando el escollo de "un comando, dos scripts", primero me puse a buscar la forma de poder hacer un "TestMovie" con AppleScript también, para tenerlo todo en un único archivo. Así que descarté el jsfl inicial y adapté el código del Spotify a Flash CS4.</p>
<p>Mac Os cuenta con "Apple Script Editor", que va de coña para ir probando los scripts. Lo abrimos, creamos un nuevo fichero y copiamos este código:</p>
<div class="igBar"><span id="lactionscript3-8"><a href="#" onclick="javascript:showCodeTxt('actionscript3-8'); return false;">Plain Text</a></span></div>
<div class="syntax_hilite"><span class="langName">AS3:</span>
<div id="actionscript3-8">
<div class="actionscript3">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"Adobe Flash CS4"</span> to activate</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"System Events"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell process <span style="color: #398EC6;">"Adobe Flash CS4"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">click menu item <span style="color: #FF0000;color:#000099;">8</span> of menu <span style="color: #FF0000;color:#000099;">1</span> of menu bar item <span style="color: #FF0000;color:#000099;">10</span> of menu bar <span style="color: #FF0000;color:#000099;">1</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end tell</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end tell </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Este código pone en primer plano Flash o lo abre si no lo está, y simula un clic en la opción "Test Movie". La traducción del script es esta:</p>
<p><em>menu item "Test Movie" of menu "Control" of menu bar item "Control" of menu bar 1 of application process "Adobe Flash CS4" of application "System Events"</em></p>
<p>Increíble, ¿no?</p>
<blockquote><p><strong>Muy importante</strong>: es probable que el script os arroja un error similar a este "El acceso a los dispositivos de ayuda está desactivado". Esto pasa porque el comando "System Events" no puede operar. Para que funcione, hay que ir a "Preferencias del sistema" (sí, de Mac), "Acceso Universal", y abajo activar "Activar Acceso para dispositivos de ayuda".</p>
<p><strong>Pausa para desahogo:</strong> ¿quién carajo sabe esto? ¿Por qué en todos los tutos que vi sobre AppleScript no lo comentan? Lo encontré tras un buen rato de búsqueda en un foro de frikis de World of Warcraft que lo utilizaban para configurarse nosequé del juego... En fin, para llorar.</p></blockquote>
<blockquote><p><strong>Nota</strong>: Otra cosa que descubrí por la vía dolorosa es que los separadores del menú cuentan como 1, de ahí que "Test Movie" corresponda al número 8 aunque esté en la posición 6. Ojo con esto si intentais manipular cualquier otro comando.</p></blockquote>
<p>Cuando por fin pude ejecutar el script y ver que funcionaba, fue fácil pensar que para FlashDevelop sería lo mismo. Así que me dispuse a probarlo. Una cosa que mola mucho del editor de AppleScript que si pones el nombre de un programa que no reconoce (yo por ejemplo ponía -tell application "FlashDevelop" to activate-), al ejecutar te pregunta dónde está y te ofrece la lista de programas (¡incluso los de Windows!) para resolver el nombre correcto:</p>
<p><a href="http://llops.com/blog/content/articulos/feb10/seleccionar-aplicacion.png" target="_blank"><img class="alignnone" title="Seleccionar aplicación" src="http://llops.com/blog/content/articulos/feb10/seleccionar-aplicacion.png" alt="" width="500" height="290" /></a></p>
<p>Así que puse la ruta para llegar hasta el menú "File &gt; Save" en FD y corrí el script, pero no funcionaba por un error de base que tarde un poco en detectar:</p>
<p><img class="alignnone" title="Menu FD en Mac" src="http://llops.com/blog/content/articulos/feb10/menu-fd.png" alt="" width="326" height="163" /></p>
<p>Efectivamente, el menú de FlashDevelop cuando tiene el foco no es el del programa de Windows, sino el del "wrapper" de Mac, así que otro "fail" para la lista.</p>
<p>Vuelta a leer tutoriales sobre AppleScript y posibilidades y encontré algo superútil: igual que se pueden simular clics de ratón se pueden simular pulsaciones de tecla. Así que tras unas pruebas pude comprobar que ganando el foco del programa y lanzando un "Ctrl+S" (estamos en Windows) guardaba el documento. ¡Por fin!</p>
<div class="igBar"><span id="lactionscript3-9"><a href="#" onclick="javascript:showCodeTxt('actionscript3-9'); return false;">Plain Text</a></span></div>
<div class="syntax_hilite"><span class="langName">AS3:</span>
<div id="actionscript3-9">
<div class="actionscript3">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"FlashDevelop 3 — Windows 7"</span> to activate</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"System Events"</span> to key code <span style="color: #FF0000;color:#000099;">1</span> using control down </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<blockquote><p>Nota: el 1 corresponde a la "s" en key code. <a href="http://applescripts.thompson-solutions.com/applescript_reference_keystroke_key_code_keyboard_guide.php" target="_blank">Aquí</a> os podéis bajar un pdf con los "key code" de un teclado Mac. Lo necesitaréis para configuraros vuestros propios atajos.</p></blockquote>
<p>"Pues ya sólo queda ponerlo todo en un script", pensé, pero había una última sorpresa: el script saltaba a FD, acto seguido a Flash y compilaba, pero no guardaba. ¿WTF? Cuando volvía a ejecutar únicamente el código de guardar funcionaba, pero me di cuenta que tardaba unas décimas de segundo, y pensé que seguramente al intervenir la máquina virtual no era lo suficientemente rápido al enviar el comando y ganaba el foco Flash antes de poder guardar. Esta vez me costó apenas unos minutos encontrar una instrucción "delay", y efectivamente, era eso.</p>
<p>Finalmente, nuestro script queda de la siguiente manera:</p>
<div class="igBar"><span id="lactionscript3-10"><a href="#" onclick="javascript:showCodeTxt('actionscript3-10'); return false;">Plain Text</a></span></div>
<div class="syntax_hilite"><span class="langName">AS3:</span>
<div id="actionscript3-10">
<div class="actionscript3">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"FlashDevelop 3 — Windows 7"</span> to activate</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">delay <span style="color: #FF0000;color:#000099;">0</span>.<span style="color: #FF0000;color:#000099;">5</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"System Events"</span> to key code <span style="color: #FF0000;color:#000099;">1</span> using control down</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"Adobe Flash CS4"</span> to activate</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"System Events"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell process <span style="color: #398EC6;">"Adobe Flash CS4"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">click menu item <span style="color: #FF0000;color:#000099;">8</span> of menu <span style="color: #FF0000;color:#000099;">1</span> of menu bar item <span style="color: #FF0000;color:#000099;">10</span> of menu bar <span style="color: #FF0000;color:#000099;">1</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end tell</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end tell </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Lo dejo para descargar aquí: http://llops.com/descargas/applescripts/save-test-movie.scpt</p>
<p>Dos cosas a tener cuenta:</p>
<ol>
<li>la ruta que hay en el script para FD y Flash quizá no corresponda con la vuestra. Setearla como he comentado antes.</li>
<li>el delay de medio segundo es suficiente para mi máquina, pero quizá en otras deba aumentarse a un segundo o más.</li>
</ol>
<p>Una vez guardado el script, volvemos a QuickSilver, repetimos los pasos para hacer un trigger con nuestro nuevo script, <strong>y ahora sí que sí</strong>, con una tecla podemos guardar nuestro fichero activo y compilar en Flash (ueeeee).</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Guardar todos los archivos y compilar</span></strong></p>
<p>Pero... ¿y si se quieren guardar todos los archivos en vez de únicamente el que tiene el foco? Esta es una opción que utilizo mucho, ya que voy saltando de archivo en archivo, picando código y compilando "de golpe". Pues otro problema, porque FlashDevelop tiene un atajo para "Save" y "Save as...", pero no para "Save all".</p>
<p>Esta vez no tuve que perder mucho tiempo, porque en la "investigación" inicial de FlashDevelop descubrí los "macros" (eso a lo que nunca se presta atención). Vamos a "Edit macros..." (Ctrl+F10), creamos uno nuevo, y en "Entries" añadimos el siguiente comando:</p>
<div class="igBar"><span id="lactionscript3-11"><a href="#" onclick="javascript:showCodeTxt('actionscript3-11'); return false;">Plain Text</a></span></div>
<div class="syntax_hilite"><span class="langName">AS3:</span>
<div id="actionscript3-11">
<div class="actionscript3">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">SaveAllModified|as </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Asignamos el shortcut que queramos y guardamos. Ahora podemos añadir dicho atajo en nuestro script y cada vez que compilemos guardará todos los archivos abiertos.</p>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Cerrar la película de Flash y volver a FlashDevelop</span></strong></p>
<p>Y ya para acabar (lo juro), un script tonto que mejora un poquito más mi flujo:</p>
<div class="igBar"><span id="lactionscript3-12"><a href="#" onclick="javascript:showCodeTxt('actionscript3-12'); return false;">Plain Text</a></span></div>
<div class="syntax_hilite"><span class="langName">AS3:</span>
<div id="actionscript3-12">
<div class="actionscript3">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"Adobe Flash CS4"</span> to activate</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"System Events"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell process <span style="color: #398EC6;">"Adobe Flash CS4"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">click menu item <span style="color: #FF0000;color:#000099;">5</span> of menu <span style="color: #FF0000;color:#000099;">1</span> of menu bar item <span style="color: #FF0000;color:#000099;">3</span> of menu bar <span style="color: #FF0000;color:#000099;">1</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end tell</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end tell</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#666666;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">tell application <span style="color: #398EC6;">"FlashDevelop 3 — Windows 7"</span> to activate </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Simplemente pone el foco en Flash, cierra la película y asigna el foco a FD. En mi caso tengo "cmd+0" para guardar/compilar, compruebo que va bien y pulso "cmd+9" para cerrar el test y volver a FlashDevelop para seguir trabajando.</p>
<blockquote><p><strong>Nota:</strong> a tener en cuenta que si no hay una película en test cerrará el archivo fla. Está con el método del "click" porque con teclas (cmd+w) no acaba de ir bien... no sé porqué...</p></blockquote>
<p>&nbsp;<br/><br />
<strong><span style="text-decoration: underline;">Conclusión</span></strong></p>
<p>Si no quieres renunciar a seguir trabajando con FlashDevelop y Flash Professional en Mac, hay mecanismos suficientes para tener un workflow "perfecto" en el sistema de la manzana. Todo el tema de guardar/compilar quizá sea un poco geek, rebuscado o como se quiera llamar, pero funciona. Y de eso se trata la tecnología, de ponerla a nuestro servicio para facilitarnos las tareas.</p>
<p>Por otro lado siento lo larguísimo del post. Soy consciente de que lo podía haber acortado mucho, pero QuickSilver y AppleScript me han parecido herramientas terriblemente potentes, y creo que ha sido interesante hablar sobre ellas y que cada uno le saque partido no sólo para esto, sino para lo que se le pueda ocurrir que facilite los flujos de trabajo diarios. Me encantará si a alguien se le ocurren nuevos scripts y los comparte.</p>
<p>Por último, espero el comentario que diga "Pero vaya matada! si esto se puede hacer así y así de fácil" :) Aún así, volvería a pasar por este proceso. A veces nos tiramos tanto tiempo rodeados de Flash que nos creemos que únicamente somos programadores Flash, cuando al final ser programador es tener una base para enfrentar problemas y sacar soluciones.</p>
<p>Con mucha ayuda de Google, claro.</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2010/02/21/trabajando-con-flashdevelop-en-mac/#comments">11 comentarios</a> | <a href="http://llops.com/blog/2010/02/21/trabajando-con-flashdevelop-en-mac/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2010/02/21/trabajando-con-flashdevelop-en-mac/&title=Trabajando con FlashDevelop en Mac">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2010
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2010/02/21/trabajando-con-flashdevelop-en-mac/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Eligiendo editor de ActionScript en Mac</title>
		<link>http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/</link>
		<comments>http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 00:50:52 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[FDT]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[FlashDevelop]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=197</guid>
		<description><![CDATA[Desde que me pasé a Mac sólo había abierto Flash para probar un par de ejemplos,  así que no me había preocupado de montarme un entorno de desarrollo. Ahora que me he puesto a ello, ha sido un quebradero de cabeza.
Mientras leía artículos para decantarme por un editor, topé con esta frase que me encantó: [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que me pasé a Mac sólo había abierto Flash para probar un par de ejemplos,  así que no me había preocupado de montarme un entorno de desarrollo. Ahora que me he puesto a ello, ha sido un quebradero de cabeza.</p>
<p>Mientras leía artículos para decantarme por un editor, topé con esta frase que me encantó: "My mind continues to wander back to the days of using FlashDevelop, but I must push forward. Mac OS is my home now." Así que la hice mía y decidí probar Flash Builder primero y FDT después.</p>
<p>Adobe FB lo descarté en poco rato. Conozco sus bondades para trabajar en Flex (obviamente) o proyectos ActionScript, pero realmente no está pensado para trabajar con Flash Professional: la integración es nula.</p>
<p>Con FDT tenía bastantes esperanzas ya que mucha gente habla maravillas, pero a las 3 horas lo tuve descartado también. Aunque tiene algo más de integración con Flash, me pareció muy complejo la forma de "enlanzarlo", teniendo que crear una configuración específica para cada proyecto Flash, los Core Library, que copies una carpeta de clases en tu proyecto y no las reconozca hasta que hagas un "Add to classpath" explícito... Me agotó encontrar un "problema" cada 5 minutos y pasar 20 en Google para entender qué pasaba (con suerte!). E incluso a la hora de picar código, no me sentía del todo cómodo.</p>
<p>Así que visto lo visto, <strong>para mis necesidades</strong>, FlashDevelop sigue siendo la mejor opción:</p>
<ul>
<li>por su autocompletado y code hinting (el más potente de largo). Prácticamente no hace falta ni memorizar las variables: si tienes <em>_planeta_azul</em> y escribes "az" ya te ofrece la opción correcta</li>
<li>por Ctrl+Shift+1, que te crea funciones parametrizadas, variables de clases, getters/setters ...</li>
<li>por los snippets</li>
<li>por la cantidad de atajos básicos de los que no puedo prescindir (duplicar linea, intercambiar linea, comentar bloques, etc)</li>
<li>por su configuración mínima</li>
<li>por su perfecta integración con Flash</li>
<li>porque es gratis</li>
</ul>
<p>Y muy importante, que al contrario de FB y FDT, que están concebidos para trabajar con proyectos enteros, FlashDevelop sirve perfectamente para programar/editar clases sueltas (cosa que yo hago muchísimo).</p>
<blockquote><p>Soy consciente que algunas de las cosas que he listado las hacen igual o mejor los otros programas, y estoy convencido de que FDT es un magnífico editor, pero al final es un tema de compatibilidad: con el IDE de Flash y conmigo :)</p></blockquote>
<p>Así que volviendo a la frase del principio, Mac es ahora mi casa, pero voy a hacer un cuartito para un programa Windows. Hoy mismo publicaré un post explicando cómo lo tengo montado yo.</p>
<blockquote><p>Update: ayer no me dio tiempo porque he seguido trabajando en el workflow entre Flash y FlashDevelop. Ahora sí que sí lo tengo a medida :) Espero contarlo en unas horas...</p></blockquote>
<hr />
<p><small>
<a href="http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/#comments">9 comentarios</a> | <a href="http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/&title=Eligiendo editor de ActionScript en Mac">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2010
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2010/02/20/eligiendo-editor-de-actionscript-en-mac/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>¿Mac? ¡Mac!</title>
		<link>http://llops.com/blog/2009/11/20/mac/</link>
		<comments>http://llops.com/blog/2009/11/20/mac/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 23:29:12 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macbook]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=186</guid>
		<description><![CDATA[Después de pasar 12 años tocando únicamente PCs he decidido jubilar mi ordenador de sobremesa y comprarme un Macbook Pro de 15 pulgadas. Para alguien que ha sido un defensor a ultranza de Windows y que ha rajado muchísimo de los maqueros (jeje, no hay nada más fácil en el mundo que picar a un [...]]]></description>
			<content:encoded><![CDATA[<p>Después de pasar 12 años tocando únicamente PCs he decidido jubilar mi ordenador de sobremesa y comprarme un Macbook Pro de 15 pulgadas. Para alguien que ha sido un defensor a ultranza de Windows y que ha rajado muchísimo de los maqueros (jeje, no hay nada más fácil en el mundo que picar a un fanático de Apple), no es poca cosa.</p>
<p>No ha sido una decisión fácil, porque por la mitad de 1600 leuros te puedes comprar un Dell cojonudo, porque creía que no necesitaba un portátil sino un sobremesa, porque ya tengo una pantalla de 22 pulgadas y descartaba el iMac,  porque lo encargué un día antes de la salida de Windows 7, porque me encanta FlashDevelop, Tortoise, LiveWriter...</p>
<p>A favor jugaba tener a mis propios mac-evangelizadores, Cay y Vicente, las ganas de aprender a moverme por Mac OS (no había tocado nada de nada), querer probar las maravillas que todo el mundo cuenta y <a href="http://www.joangarnet.com/blog/?p=715" target="_blank">este post</a> de Joan Garnet, que acabó de darme el empujoncito ;)</p>
<p>Y desde el primer momento se aprecia qué supone tener un Mac: el packaging ya te hace sentir que estás manipulando un artículo de clase,  los acabados son preciosistas, el teclado perfecto, el trackpad exquisito... Baste decir que antes de sacarlo de la caja ya tenía a varios compañeros a mi alrededor (alguno más expectante que yo!), que me tiraron fotos y que esa tarde me felicitaron como unas 15 personas (más que en mi cumpleaños!) xD</p>
<p>Y bueno, del sistema operativo no voy a descubrir nada nuevo porque soy el último en llegar, pero como resumen decir que a las pocas horas ya sabía que había acertado con la decisión. Todavía me extrañan varias cosas y echo en falta algún funcionamiento/programa de Windows, pero las mil y una características compensan sobradamente. Cuando pase un buen tiempo vendré a contar mis experiencias desde el punto de vista de programador flash.</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/11/20/mac/#comments">12 comentarios</a> | <a href="http://llops.com/blog/2009/11/20/mac/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/11/20/mac/&title=¿Mac? ¡Mac!">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/11/20/mac/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Código fuente ¿se debe entregar?</title>
		<link>http://llops.com/blog/2009/11/05/codigo-fuente-%c2%bfse-debe-entregar/</link>
		<comments>http://llops.com/blog/2009/11/05/codigo-fuente-%c2%bfse-debe-entregar/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 21:31:36 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=171</guid>
		<description><![CDATA[Hoy he leído un post en decabeza titulado Archivos fuentes, ¿se deben entregar? que me ha parecido muy interesante. Como mi opinión es bastante extensa, he decidido continuar la conversación aquí (weedo, espero que no te importe ;) ) Como el título indica, el tema versa sobre si se debe entregar el código fuente al cliente y si [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy he leído un post en <a href="http://www.decabeza.net/" target="_blank">decabeza</a> titulado <a href="http://www.decabeza.net/2009/11/03/archivos-fuentes-se-deben-entregar/" target="_blank">Archivos fuentes, ¿se deben entregar?</a> que me ha parecido muy interesante. Como mi opinión es bastante extensa, he decidido continuar la conversación aquí (weedo, espero que no te importe ;) ) Como el título indica, el tema versa sobre si se debe entregar el código fuente al cliente y si éste debe pagar un plus por ello.<br />
<span id="more-171"></span><br />
Antes de nada, comentar que he estado en las dos bandas: programando para clientes hace tiempo y actualmente externalizando muchos proyectos en mi agencia. Por lo tanto, mi opinión está basada en las dos experiencias.</p>
<p>Para ponernos en situación: vamos a asumir que cuando hablamos de código fuente hay una parte que corresponde puramente al encargo, y en muchos proyectos hay otra parte de "valor añadido" (porque se está utilizando un framework propio, unas librerías muy complejas, una clase que facilita muchísimo x tarea, etc). Entiendo que con la primera no hay problema, porque al fin y al cabo te pagan por eso, y es en el segundo caso donde sabe mal "regalar" nuestro trabajo. A partir de aquí pienso todo el rato en situaciones con este "código de valor añadido".</p>
<p>Para mí, casi siempre se debe entregar el código fuente. Sino se hace así, el cliente está encadenado. ¿Qué le impediría luego al desarrollador pedir cantidades desorbitadas por cualquier cambio? En caso de que al cliente no le interese trabajar con el autor original, debe tener la posibilidad de modificar él mismo el programa o pasárselo a terceras personas. Obviamente habrá excepciones, por ejemplo desarrollos muy complejos donde se entra en un sistema de licencias para explotación.</p>
<p>Si el cliente puede (y debería) exigir los archivos, el programador también puede pedir una cantidad mayor. En el primer comentario del post original se lee "para entregarse los fuentes, tiene que haber mucho dinero encima", y me consta que hay muchísima gente de la misma opinión. Si un programador tiene el derecho de pedir mucho dinero, obviamente el cliente tiene el derecho de preguntar qué está comprando:</p>
<ul>
<li>¿una clase propia para validar un mail? ¿un gestor entero de contenidos?</li>
<li>¿y qué calidad tiene el código fuente? ¿tipo Grant Skinner o tipo estudiante de segundo curso?</li>
<li>¿está el código 100% libre de bugs?</li>
<li>¿es fácil de implementar? ¿es fácil de extender?</li>
<li>antes de que yo ponga encima de la mesa el dinero ¿me vas dejar investigar a ver si merece la pena?</li>
<li>y más allá del código en sí... ¿me puedes asegurar que es imprescindible utilizar ese código que aumenta tanto el presupuesto?</li>
</ul>
<p>Intento ilustrar las preguntas anteriores con un par de ejemplos:</p>
<p>1) Yo como "contratista", hago un encargo a un freelance que me pasa un presupuesto muy elevado porque incluye el código fuente de un motor de tweens que ha desarrollado durante 2 años. Habiendo librerías gratuitas tan buenas como GTween o TweenLite, me niego a pagar el coste (seguramente nadie lo haría)</p>
<p>Ahora lo hacemos extensible, por ejemplo, a un conjunto de Expresiones Regulares. El freelance se ha currado una librería durante meses con decenas de ellas, y piensa que el cliente podrá aprovecharse de ello para otros proyectos. Yo dudo si pagarlo, porque considero se pueden encontrar en google de manera más o menos fácil.</p>
<p>Y lo hacemos extensible a un algoritmo que se ha inventando Yugop para deformar imágenes y que no se consigue en ningún lado y blablabla y yo lo pago encantado.</p>
<p>¿Qué marca el límite sobre lo que es fácil de conseguir y lo que no? ¿qué es reutilizable y qué no? ¿qué es único y qué no? Y más importante, ¿tienen nuestros clientes un nivel de conocimientos suficiente para tratar estas cuestiones?</p>
<p>2) Un cliente me contrata para un proyecto. Decido utilizar mi package de utilidades, que simplifica un montón de tareas y me permitirá hacer el trabajo en 5 días. El cliente se niega a pagarme el código, así que yo rehago el presupuesto sin incluir mis "utils", lo voy a hacer todo de cero. Esto significa que en vez de 5 estaré 10 días y que doblo el presu final. Para el cliente no soy competitivo y se busca otra alternativa.</p>
<p>Son sólo dos ejemplos, pero a mí personalmente me responden muchas cuestiones. Y aún más, vamos a alejarnos un poquito de la perspectiva flash, por ejemplo pensando que hacemos un site en html+css+php, ¿no entregas todo? ¿el programador php teme que utilicen sus clases? ¿que aprovechen el css para otro site?</p>
<p>Mi conclusión final es que como programador siempre voy a dar el código fuente, y como cliente no voy a trabajar con nadie que no lo entregue. Y no voy a exigir más dinero al darlo, y no voy a pagar más si me lo dan. Para mí la gracia del negocio está en el valor que aporta el programador. Si trabajo con una persona que me resuelve cualquier problema, si puede aplicar cambios sin estar 4 días, si al pedir un cambio de funcionalidad no tiene que tirar media web abajo porque la implementó con patrones, si el código está perfectamente documentado... eso sí que no me importa pagarlo.  Y por contra, si el presupuesto es muy justo, pues se puede avisar de que se programará "rápido" (que no mal), que será más difícil de extender, poco modulable, etc.</p>
<p>Y en cuanto a nuestro trabajo de "valor añadido", pues seamos listos. Si no se le quiere dar un plus al cliente, pues no metamos el package entero, simplemente las funciones/clases imprescindibles; si se utiliza un módulo que se puede reutilizar para otros proyectos, pues se crea un biblioteca de clases (swc); si paga las horas justísimas, pues no se comenta el código por falta de tiempo; etcétera etcétera.</p>
<p>Y obviamente, lo expuesto aquí es mi opinión. Cada uno es libre de valorar su trabajo y sus horas como quiera. Al final, como cada proyecto, cada cliente y cada programador es un mundo, se convierte en una ecuación de infinitas posibilidades. Por eso, se piense como se piense, lo importante es dejarlo todo por escrito desde el principio.</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/11/05/codigo-fuente-%c2%bfse-debe-entregar/#comments">10 comentarios</a> | <a href="http://llops.com/blog/2009/11/05/codigo-fuente-%c2%bfse-debe-entregar/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/11/05/codigo-fuente-%c2%bfse-debe-entregar/&title=Código fuente ¿se debe entregar?">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/11/05/codigo-fuente-%c2%bfse-debe-entregar/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Palabras</title>
		<link>http://llops.com/blog/2009/09/29/palabras/</link>
		<comments>http://llops.com/blog/2009/09/29/palabras/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 22:59:23 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[bitmap]]></category>
		<category><![CDATA[bitmapData]]></category>
		<category><![CDATA[fuente]]></category>
		<category><![CDATA[pixel]]></category>
		<category><![CDATA[texto]]></category>
		<category><![CDATA[tipografia]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=147</guid>
		<description><![CDATA[Desde que empecé a programar, cada vez que veía una composición tipográfica, un collage de palabras o una letra imposible, me quedaba pensando qué básico y limitado es el texto en la web. Incluso en Flash, siempre un par de pasos por delante en cuanto a gráficos se refiere, estamos sometidos a una caja de [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que empecé a programar, cada vez que veía una composición tipográfica, un collage de palabras o una letra imposible, me quedaba pensando qué básico y limitado es el texto en la web. Incluso en Flash, siempre un par de pasos por delante en cuanto a gráficos se refiere, estamos sometidos a una caja de texto. Por más que le daba vueltas nunca se me ocurría una manera diferente de generar texto. Al menos hasta que Flash 8 introdujo la clase Bitmap, y ahí empecé a imaginarme un posible camino.</p>
<p>Básicamente lo que quería conseguir era que partiendo de cualquier tipografía y utilizando cualquier motivo, se pudiera representar cualquier texto de forma legible (y obviamente, de forma dinámica, que sino ya está photoshop). Y aquí está una demostración:</p>
<p><a href="http://llops.com/lab/palabras/" target="_blank"><img style="margin: 20px 0px" title="Palabras: Ripple" src="http://llops.com/blog/content/lab/palabras.jpg" alt="Palabras: Ripple" width="500" height="248" /></a></p>
<p>Los motivos que he escogido para este experimento son corazones, hojas, trazos y manchas de sangre; y las fuentes Supernova, Eras Demi, Kristen y Saginaw.</p>
<blockquote><p><strong>Nota:</strong> una vez elegido un motivo y el idioma, la única forma de volver a la home es clicar en "Recargar" o refrescar la página. Me daba muuucha pereza tener que limpiar todos los recursos para dejar el experimento en el inicio :p</p></blockquote>
<p>Puedes ver el experimento <a href="http://llops.com/lab/palabras/" target="_blank">aquí</a></p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/09/29/palabras/#comments">5 comentarios</a> | <a href="http://llops.com/blog/2009/09/29/palabras/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/09/29/palabras/&title=Palabras">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/09/29/palabras/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Medidas y resoluciones en Flash</title>
		<link>http://llops.com/blog/2009/09/19/medidas-y-resoluciones-en-flash/</link>
		<comments>http://llops.com/blog/2009/09/19/medidas-y-resoluciones-en-flash/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 16:50:20 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[diseño líquido]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[medidas]]></category>
		<category><![CDATA[resolución mínima]]></category>
		<category><![CDATA[resoluciones]]></category>
		<category><![CDATA[scroll]]></category>
		<category><![CDATA[swffit]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=131</guid>
		<description><![CDATA[Está en la naturaleza del html que su contenido se ajuste a las medidas del navegador, reposicionando el contenido automáticamente y generando scrolls cuando éste supera unas medidas mínimas. Un swf, por el contrario, simplemente es un objeto embebido en un html con unas dimensiones y una posición fija por defecto. Cualquier comportamiento extra que [...]]]></description>
			<content:encoded><![CDATA[<p>Está en la naturaleza del html que su contenido se ajuste a las medidas del navegador, reposicionando el contenido automáticamente y generando scrolls cuando éste supera unas medidas mínimas. Un swf, por el contrario, simplemente es un objeto embebido en un html con unas dimensiones y una posición fija por defecto. Cualquier comportamiento extra que deba adoptar un swf dentro del navegador para visualizarse correctamente recae sobre el programador.</p>
<p>Desde el punto de vista de Flex, esto no supone un gran problema ya que por defecto el framework está dotado de un sistema que permite crear una interfaz líquida con muy poco esfuerzo. Pero si hablamos de Flash, no existe un mecanismo que nos ayude a adaptar nuestra película a cualquier resolución.<br />
<span id="more-131"></span></p>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">Diseño líquido vs diseño estático</span></strong></p>
<p>Mientras que en html se han acuñado muchos términos a la hora de hablar de los diseños (fijo, estático, flexible, líquido, fluido, elástico…), en flash, básicamente, podemos hablar que un site tiene un diseño líquido o estático.</p>
<p>En un diseño líquido el contenido se posiciona en función del tamaño del navegador. El programador debe decidir elemento por elemento si está anclado, si se ha de reescalar, reposicionar, etc. Y dependiendo de la complejidad del site puede ser un trabajo realmente complejo y tedioso.</p>
<p>Por contra, en el diseño fijo le damos un alto y un ancho a nuestra película y todos los elementos quedan ubicados de manera absoluta. Aunque a nivel de diseño y de programación es comodísimo, el problema estriba en que si alguien accede con una resolución mucho mayor verá la página pequeña desperdiciando mucho espacio, y si es menor se generarán barras de scroll que pueden dificultar la experiencia y la navegación.</p>
<p>Se elija uno u otro, siempre hay que decidir qué <strong>resolución mínima</strong> tendrá nuestra web.</p>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">Resolución mínima</span></strong></p>
<p>Una de las primeras tareas que deberíamos hacer cuando empezamos un proyecto es decidir qué resolución mínima usaremos, o dicho de otra manera, a partir de que <strong>resolución de pantalla</strong> nuestros usuarios verán el contenido sin problemas. Hace unos años el estándard era 800x600, encontrándose ahora normalmente en 1024x768.</p>
<p>Aún tratándose de una web líquida, es recomendable fijar un mínimo para que los elementos no queden apelotonados cuando el navegador se reduce demasiado.</p>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">El problema</span></strong></p>
<p>De manera más o menos consciente, cualquier site está pensado para trabajar con una resolución mínima, pero el gran problema es que mucha gente <strong>se olvida de las resoluciones inferiores</strong>. La razón de escoger medidas es ofrecer garantías de que una web será visualizada correctamente en la mayoría de los casos, pero en aquellos que no se pueda, <strong>todo el contenido</strong> debe seguir siendo igualmente <strong>accesible</strong>.</p>
<blockquote><p><strong>Nota:</strong> en este contexto, accesible hace referencia a que el contenido se puede ver/clicar, no hablo de accesibilidad web.</p></blockquote>
<p>Y este problema no está asociado únicamente a nuevos programadores o gente inexperta. Sin ir más lejos, aquí hay dos ejemplos sacados del <a title="The Favourite Website Award" href="http://www.thefwa.com/" target="_blank">FWA</a> (ambos recientes, nada de buscar en el 2006):</p>
<ul>
<li><a href="http://www.energylab.tv">http://www.energylab.tv</a></li>
<li><a href="http://www.harrypottertweet.com">http://www.harrypottertweet.com</a></li>
</ul>
<p>En el primero de ellos reescalan el contenido, pero si tu resolución es de 800x600px se corta y no se puede acceder al menú inferior de opciones. En el segundo, con la misma resolución, no se puede acceder al botón para detener el audio.</p>
<p>En ambos casos, los programadores decidieron que la resolución mínima de sus webs sería de 1024x768, pero han descartado al resto. Detectando que la medida del navegador era inferior y añadiendo un scroll vertical posibilitarían que todo el mundo pudiera acceder a todos los elementos.</p>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">Un ejemplo de lo impredecible de la web</span></strong></p>
<p>Muchas veces nos creemos con derecho a descartar a x usuarios pensando que son una minoría, como cuando empezamos a dejar de lado a los usuarios con monitores de 800x600, pensando que una altura de 600px nunca más se daría.</p>
<p>Pues bien, un tiempo después empieza a proliferar un pequeño ordenador llamado <em>netbook</em>, cuya resolución estándard es de 1024x600. En los últimos 3 años, mientras que la venta de ordenadores cae de manera incremental, el crecimiento de los netbooks lleva un ritmo que nadie era capaz de predecir.</p>
<p>Yo, en mi netbook, ¿por qué no puedo navegar la web de energylab? ¿o porqué no puedo detener el volumen en la de harrypotter?</p>
<blockquote><p>No caigamos en la demagogia fácil de las minorías, en la que alguien pudiera decir “Pues no uses Flash entonces, que hay unos cuantos que no tienen el plugin”. Cualquiera, en función de objetivos, es libre de escoger la tecnología que mejor se ciñe a su propósito, así como la resolución. Si un artista considera que la resolución mínima para ver bien sus pinturas ha de ser de 1920x1050, perfecto. Pero si descarta las inferiores muchos sólo verán parte de la pintura, mientras que si habilita el scroll dará la posibilidad a todo el mundo de verla íntegra.</p></blockquote>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">Eligiendo una resolución</span></strong></p>
<p>Un error frecuente a la hora de elegir la resolución es pensar que el tamaño del swf puede ser el mismo. Se elige siempre una <strong>resolución de pantalla</strong>, pero a estas medidas hay que restar otros elementos como el menú del sistema operativo y el tipo de navegador, teniendo en cuenta además la configuración de éstos (con/sin favoritos, barras de estado, barras alternativas como la de Google, Yahoo, etc). Horizontalmente apenas afecta, pero verticalmente bastante.</p>
<p>Yo, a día de hoy, suelo plantear las webs con una resolución mínima de 1024x768. Esto se traduce en un tamaño de 996x578 para mis películas flash. Los 28px que resto horizontalmente lo hago contemplando la posibilidad de que se genere scroll vertical de sistema, mientras que los 90px que pierdo de altura corresponden a la configuración de un Firefox estándard en un sistema Windows.</p>
<blockquote><p><strong>Nota:</strong> a excepción de Chrome que cuenta con una interfaz muy limpia, el resto de navegadores cuentan con menús similares, así como los distintos sistemas operativos, que tienen un menú principal.</p>
<p>Como es imposible tener una medida que encaje en todas las combinaciones, es preferible dejar unos cuantos píxels de margen. A veces, por intentar ajustar demasiado se genera un scroll mínimo de 3 o 4 píxels que ensucia más que ayuda.</p></blockquote>
<p>Así pues, 996x578 es el tamaño mínimo que garantizo para que una web se vea correctamente. Si el navegador tiene menos espacio para mostrar, se generará scroll de sistema.</p>
<blockquote><p><strong>Nota:</strong> hay gente que prefiere utilizar un scroll propio en flash. Yo no soy muy partidario para este caso concreto.</p></blockquote>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">Swffit</span></strong></p>
<p>Para no tener que lidiar directamente con javascript, existe una utilidad llamada <a href="http://swffit.millermedeiros.com/" target="_blank">swffit</a> que permite fijar las medidas mínimas y máximas de tu película y se encarga de todo: mostrar el scroll cuando es necesario, reescalar la película para que ocupe todo el tamaño disponible, centrar la película, etc. Imprescindible.</p>
<p>&nbsp;<br />
<strong><span style="text-decoration: underline;">Resumiendo</span></strong></p>
<p>Los que trabajamos con Flash estamos acostumbrados a ver como la gente lo ataca por distintas razones. El tema de las resoluciones es una de ellas. Y con razón.</p>
<p>Resulta difícil de creer que programadores que hacen piezas tan espectaculares como para ganar un <em>Favourite</em> no tengan en cuenta este punto. Por no hablar de todos aquellos que "aprenden flash en 2 días" y venden webs al vecino.</p>
<p>Si queremos quitarle la razón a los detractores de Flash, tanto los diseñadores como los programadores debemos hacer las cosas bien, y esto pasa por empezar con las cosas básicas.</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/09/19/medidas-y-resoluciones-en-flash/#comments">3 comentarios</a> | <a href="http://llops.com/blog/2009/09/19/medidas-y-resoluciones-en-flash/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/09/19/medidas-y-resoluciones-en-flash/&title=Medidas y resoluciones en Flash">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/09/19/medidas-y-resoluciones-en-flash/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nuevo diseño</title>
		<link>http://llops.com/blog/2009/09/16/nuevo-diseno/</link>
		<comments>http://llops.com/blog/2009/09/16/nuevo-diseno/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 13:45:06 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=124</guid>
		<description><![CDATA[Desde que lancé el blog siempre me ha quedado la espinita de cambiar la cabecera, y ya que por fin le he metido mano, pues he modificado cositas aquí y allá, creo que suficientes para hablar de rediseño (esto no lo puedo decir nunca!). Si véis alguna cosa que se desmonta, que no está bien [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que lancé el blog siempre me ha quedado la espinita de cambiar la cabecera, y ya que por fin le he metido mano, pues he modificado cositas aquí y allá, creo que suficientes para hablar de rediseño (esto no lo puedo decir nunca!). Si véis alguna cosa que se desmonta, que no está bien en x navegador, etc. agradecidísimo si me informáis.</p>
<p>Por cierto, sino fuera programador creo que me gustaría trabajar maquetando. Los css tienen un rollito puzzle-lógico que me mola mucho...</p>
<p>Bueno, el próximo post relacionado con código. Lo juro :p</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/09/16/nuevo-diseno/#comments">4 comentarios</a> | <a href="http://llops.com/blog/2009/09/16/nuevo-diseno/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/09/16/nuevo-diseno/&title=Nuevo diseño">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/09/16/nuevo-diseno/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Volver</title>
		<link>http://llops.com/blog/2009/09/14/volver/</link>
		<comments>http://llops.com/blog/2009/09/14/volver/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 23:27:14 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=102</guid>
		<description><![CDATA[Han pasado casi 6 meses desde que publiqué la última entrada del blog. Durante este período algunas personas me han preguntado por la razón de estar tanto tiempo sin escribir, en qué andaba metido, si ya no iba a continuar con el blog... Así que creo que no está de más un  post de [...]]]></description>
			<content:encoded><![CDATA[<p>Han pasado casi 6 meses desde que publiqué la última entrada del blog. Durante este período algunas personas me han preguntado por la razón de estar tanto tiempo sin escribir, en qué andaba metido, si ya no iba a continuar con el blog... Así que creo que no está de más un  post de explicación.</p>
<p>A principios de 2009 pasé a ocupar el puesto de director técnico en mi agencia. En parte fue un formalismo, ya que venía encargándome de la mayoría de tareas asociadas a ese rol, pero por otro lado me obligó a tener un conocimiento global de todos los proyectos, a implicarme mucho más en la gestión de recursos, en la supervisión de externos, a consolidar el equipo técnico, etc. Así que para poder llevar todo esto a buen puerto (dentro de lo que cabe xD) tuve que renunciar a estar en los proyectos como programador. Al principio pensé que sería cosa de unas pocas semanas, pero al final he estado como medio año sin tocar una linea de código (que se dice pronto). Esto se tradujo en un abandono del blog: es difícil escribir sobre una temática  cuando no estás en el día a día, no surgen  buenas ideas para los posts... y no tenía ni tiempo ni ganas para liarme con experimentos.</p>
<p>La segunda parte de la historia es que en julio me metí en un gran proyecto no sólo en la planificiación y dirección, sino también programando. A parte de disfrutar, puedo decir que es uno de los desarrollos en los que más he aprendido. Esto se ha traducido en ganas de volver a escribir y de compartir conocimientos.  Así que, tras unas reparadoras vacaciones, todos estos elementos dan como resultado que a partir de ya retomo  el blog :)</p>
<p>Siempre es agradable volver.</p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/09/14/volver/#comments">9 comentarios</a> | <a href="http://llops.com/blog/2009/09/14/volver/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/09/14/volver/&title=Volver">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/09/14/volver/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>La Planta de Viento</title>
		<link>http://llops.com/blog/2009/03/26/la-planta-de-viento/</link>
		<comments>http://llops.com/blog/2009/03/26/la-planta-de-viento/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 00:25:52 +0000</pubDate>
		<dc:creator>llops</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[ikea]]></category>
		<category><![CDATA[plantas]]></category>
		<category><![CDATA[programación creativa]]></category>

		<guid isPermaLink="false">http://llops.com/blog/?p=77</guid>
		<description><![CDATA[En el post anterior hablaba de las plantas de IKEA. Pues bien, aquí está la primera: La Planta de Viento.
Como ya comenté, la original es una aplicación AIR, pero como de momento no puedo poner el .air para descargar he decidido adaptarla para navegador. Así se pierden algunas opciones y la gracia de tenerla en [...]]]></description>
			<content:encoded><![CDATA[<p>En el <a href="http://llops.com/blog/2009/03/23/las-plantas-de-ikea/">post anterior</a> hablaba de las plantas de IKEA. Pues bien, aquí está la primera: <strong>La Planta de Viento</strong>.</p>
<p>Como ya comenté, la original es una aplicación AIR, pero como de momento no puedo poner el .air para descargar he decidido adaptarla para navegador. Así se pierden algunas opciones y la gracia de tenerla en el escritorio, pero el resto es básicamente igual.<br />
<a href="http://llops.com/lab/plantaviento/" target="_blank"><img style="margin: 20px 0px 20px 20px;" title="La Planta de Viento" src="http://llops.com/blog/content/articulos/mar09/cartela_viento.png" alt="La Planta de Viento - Inicializando..." width="371" height="230" /></a><br />
<span id="more-77"></span></p>
<p><strong>Algo sobre el desarrollo</strong></p>
<p>Empecé este desarrollo en enero de 2008 (la teconología AIR todavía estaba en el Lab de Adobe) y, aunque a primera vista quizá no lo parezca, estuve con él casi cerca de 3 meses! Yo diría que hubo 3 motivos clave por los cuales se prolongó tanto:</p>
<ol>
<li> No era un proyecto en el que estuviera a full-time, llegando a estar periodos de 3-4 días sin tocarlo (con lo que cuesta coger el hilo tras un parón...)</li>
<li>No partimos de ninguna base gráfica para llegar al resultado final. Desde el principio toda la planta se construyó a partir de la programación: el tallo, la corola, las anteras, las composiciones de las 3 flores... Hasta que todos estuvimos satisfechos con el aspecto del diente de león tuve que hacer muchas muchas pruebas. El tiesto y el panel fue lo único que vino diseñado.</li>
<li>La interactividad se fraguó sobre la marcha: la relación entra la planta y el mouse, la fuerza del "viento", la elasticidad de los tallos, la pérdida de los filamentos, la regeneración, las explosiones finales... Si me hubieran dado un euro por cada vez que compilé...</li>
</ol>
<p>Así que una vez que estuvo cerrada, empaquetada y lista para mandar, fue como quitarse un peso gigante de encima. Eso sí, a pesar de lo cansado que fue en algunos momentos, de los proyectos en los que he participado como (seguramente mal llamado) "programador creativo", sin duda alguna es uno de los que más he disfrutado.</p>
<p>Y por último, esta guerra no fue sólo mía. Estuvo Román como arte, asegurándose que ningún píxel se salía de lugar, Castellote aportando poesía, Rafa Soto dándole el acabado imposible (siento que no lo consiguieras! xD ) y el señor Carlos Torrecilla echándonos un gran cable con el audio.</p>
<p><a href="http://llops.com/lab/plantaviento/" target="_blank">&gt;&gt; Ver La Planta de Viento</a></p>
<hr />
<p><small>
<a href="http://llops.com/blog/2009/03/26/la-planta-de-viento/#comments">4 comentarios</a> | <a href="http://llops.com/blog/2009/03/26/la-planta-de-viento/">Permalink</a> | 
Add to
<a href="http://del.icio.us/post?url=http://llops.com/blog/2009/03/26/la-planta-de-viento/&title=La Planta de Viento">del.icio.us</a>
<br/><br/>
<a href="http://llops.com/blog">LLops Blog</a>, 2009
</small></p>]]></content:encoded>
			<wfw:commentRss>http://llops.com/blog/2009/03/26/la-planta-de-viento/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
