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

<channel>
	<title>2flash2furious :: diseño gráfico, web &#38; multimedia desde Oviedo, Asturias :: por [Q] interactiva</title>
	<atom:link href="http://www.q-interactiva.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.q-interactiva.com/blog</link>
	<description>[Q]interactiva cuenta su visión sobre diseño gráfico, web y multimedia en Oviedo, Asturias</description>
	<pubDate>Fri, 13 Aug 2010 12:54:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Talleres Subflash 2010 - Bilbao</title>
		<link>http://www.q-interactiva.com/blog/2010/08/talleres-subflash-2010-bilbao/</link>
		<comments>http://www.q-interactiva.com/blog/2010/08/talleres-subflash-2010-bilbao/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 12:54:27 +0000</pubDate>
		<dc:creator>[Q]boss</dc:creator>
		
		<category><![CDATA[[Q] interactiva]]></category>

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=364</guid>
		<description><![CDATA[
Pues ya no queda nada, y como todos los años [Q] cierra sus puertas un viernes para engancharlo con uno de los fines de semana más esperado para nosotros, los Talleres Subflash!. Este año (se dice pronto, pero ya van 8 años&#8230;) van a tener lugar en Bilbao, y contarán con la asistencia en modalidad [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.q-interactiva.com/blog/imagenes/subflash_2010.jpg" title="Talleres de Verano Subflash 2010, Bilbao, organizados por [Q] interactiva" alt="Talleres de Verano Subflash 2010, Bilbao, organizados por [Q] interactiva" /></p>
<p>Pues ya no queda nada, y como todos los años [Q] cierra sus puertas un viernes para engancharlo con uno de los fines de semana más esperado para nosotros, <a href="http://www.subflash.com/talleres/2010">los Talleres Subflash!</a>. Este año (se dice pronto, pero ya van 8 años&#8230;) van a tener lugar en Bilbao, y contarán con la asistencia en modalidad completa de 60 personas (para variar ya está prácticamente lleno, sólo quedan 4 plazas libres, asi que si tenías ganas de ir, <a href="http://www.subflash.com/talleres/2010/php/registro.php">te va tocando registarte</a>).</p>
<p>Allí acudirá gente de todas las partes de españa, podremos reencontrarnos con grandes amigos, <a href="http://www.subflash.com/talleres/2010/php/sesiones.php">aprender con las sesiones</a> de este año que tienen una pinta fantástica y hacer nuevos amiguitos. Si no tienes claro por qué, <a href="http://www.subflash.com/2010/08/10-ultra-high-end-quality-razones-de-peso-para-asisitir-a-subflash/#comments">nuestras razones tendremos</a>.</p>
<p>Como organizadores del evento, el mes pasado ya nos acercamos <a href="http://albergue.bilbao.net/cast/introcast.html">a las instalaciones</a> para ultimar los preparativos finales, y tenemos que decir que tanto el lugar donde nos alojaremos como el lugar donde tendrán lugar los talleres, están en perfectas condiciones y tienen buena pinta (no así tanto la web&#8230;). Ya no hablamos del entorno: Bilbao.</p>
<p>Todo esto ha sido gracias al esfuerzo conjunto de<a href="http://www.arketipo.net/"> Karmele y Diego</a>, que han buscado un luga apropiado y se han dejado la piel para que no hubiera problemas con las instalaciones ni con la reserva. Sin personas como ellos, muy pocos Subflash se hubieran hecho realidad. Evidentemente, también les damos las gracias a <a href="http://www.subflash.com/2010/08/ampliamos-patrocinadores/">nuestros </a>queridos <a href="http://www.subflash.com/2010/07/patrocinadores-subfash-2010/">patrocinadores</a>.</p>
<p>Así que ya sabéis, si el Viernes 27 no os cogemos el teléfono, no es que hayamos desaparecido, sino que estaremos en pleno <a href="http://www.subflash.com/">Subflash</a>! Nos vemos en Bilbao!</p>
<p><a href="http://www.subflash.com/talleres/2010/">Web oficial Talleres Subflash Bilbao 2010</a><br />
<a href="http://www.subflash.com/talleres/2010/php/registro.php">Registro a los Talleres</a><br />
<a href="http://www.google.es/search?q=vimeo:+subflash&#038;hl=es&#038;prmd=v&#038;source=univ&#038;tbs=vid:1&#038;tbo=u&#038;ei=Fz9lTNaLD8jR4waHvKjPCg&#038;sa=X&#038;oi=video_result_group&#038;ct=title&#038;resnum=4&#038;ved=0CCYQqwQwAw">Videos para que sepas lo que te espera</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/08/talleres-subflash-2010-bilbao/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Horario de verano 2010</title>
		<link>http://www.q-interactiva.com/blog/2010/07/horario-de-verano-2010/</link>
		<comments>http://www.q-interactiva.com/blog/2010/07/horario-de-verano-2010/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 09:09:52 +0000</pubDate>
		<dc:creator>Berto[Q]</dc:creator>
		
		<category><![CDATA[[Q] interactiva]]></category>

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

		<category><![CDATA[horario verano]]></category>

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

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=363</guid>
		<description><![CDATA[
Horario de Verano de Q-interactiva, Agosto de 2010
Como ya viene siendo habitual por estas fechas estivales, comunicaros que durante el próximo mes de agosto el horario de trabajo de nuestro estudio será de 8.00h a 15.00h.
El motivo no es otro que aprovechar la aparente calma del mes de agosto y así darnos un merecido respiro [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.q-interactiva.com/blog/imagenes/horarioverano2010.jpg" alt="Horario de Verano de Q-interactiva, Agosto de 2010" width="500" height="200" /></p>
<p>Horario de Verano de Q-interactiva, Agosto de 2010</p>
<p>Como ya viene siendo habitual por estas fechas estivales, comunicaros que durante el próximo mes de agosto el <strong>horario </strong>de trabajo de nuestro estudio será de <strong>8.00h a 15.00h</strong>.</p>
<p>El motivo no es otro que aprovechar la aparente calma del mes de agosto y así darnos un merecido respiro que nos vendrá bien para recargar las pilas, con las que poder afrontar nuevos proyectos y retos interesantísimos.</p>
<p>Además tenemos planes para el último fin de semana de agosto, por si aun no lo sabéis tenemos una nueva cita con los imprescindibles <a title="Talleres Subflash 2010" href="http://www.subflash.com/talleres/2010/php/index.php" target="_blank">Talleres de Verano Subflash</a>, este año en Bilbao, con lo que el viernes 27 no habrá mucha actividad por la oficina.</p>
<p>Sin más desde el estudio, aprovechamos para desearos un muy buen verano a todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/07/horario-de-verano-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>#17 Flash [Q] Tips: Trabajo con webservices en Flash Professional CS4 + ActionScript 3</title>
		<link>http://www.q-interactiva.com/blog/2010/07/17-flash-q-tips-webservices-en-flash-cs4/</link>
		<comments>http://www.q-interactiva.com/blog/2010/07/17-flash-q-tips-webservices-en-flash-cs4/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 08:00:57 +0000</pubDate>
		<dc:creator>[Q]boss</dc:creator>
		
		<category><![CDATA[AS3]]></category>

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

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

		<category><![CDATA[[Q] Tips]]></category>

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

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

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=358</guid>
		<description><![CDATA[Recientemente me ha tocado lidiar con un proyecto que basaba la toma de datos de un servidor remoto en el uso de comunicación mediante webservices. Cualquier que haya tenido que hacer algo similar con Flash CS4 o ActionScript 3 dentro de este IDE, se habrá dado cuenta que hemos perdido algo al respecto, más que [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente me ha tocado lidiar con un proyecto que basaba la toma de datos de un servidor remoto en el uso de comunicación mediante webservices. Cualquier que haya tenido que hacer algo similar con Flash CS4 o ActionScript 3 dentro de este IDE, se habrá dado cuenta que hemos perdido algo al respecto, más que nada los componentes que nos permitían sobrellevarlo de una manera bastante abstracta. </p>
<p>Si tratamos de tirar de AS3 puro y duro desde el IDE de flash, tampoco encontraremos la manera directa de comunicarnos con webservices... qué pasa, nos han dejado sin esta funcionalidad? Pues sí, pero al menos han dejado un regalo de consolación para que podamos apañárnoslas. Se trata de usar parte de las clases incluidas en el SDK de Flex, en nuestro proyecto Flash, y de esta manera importarlas y poder por tanto contar con clases como: WebService.<span id="more-358"></span></p>
<p>Lo primero que tenemos que hacer, es descargarnos el SDK de flex, que <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK">lo podemos hacer de forma gratuita desde este enlace</a>. Una vez que lo tenemos descargado y listo en alguna carpeta de nuestro equipo, tendremos que importar los SWC necesarios a nuestro proyecto, para ello vamos a File > Publish Settings > Apartado Flash > Settings de AS3 > Grupo External Library Path. Aqui vamos a pulsar el icono del SWC que se ve en la imagen </p>
<p><img src="http://www.q-interactiva.com/blog/imagenes/import_swc.png" title="Importando SWC del SDK de flex para poder acceder a servicios web desde flash cs4" alt="Importando SWC del SDK de flex para poder acceder a servicios web desde flash cs4" /></p>
<p>para incorporar al proyecto los siguientes SWC:</p>
<ul>
<li>framework.swc</li>
<li>rpc.swc</li>
</ul>
<p>Con esto ya podremos tener en nuestro proyecto FlashCS4 las clases necesarias para trabajar con webservices, como se muestra en el siguiente ejemplo:</p>
<div class="igBar"><span id="lactionscript-4"><a href="#" onclick="javascript:showPlainTxt('actionscript-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-4">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package com.<span style="color: #006600;">qinteractiva</span>.<span style="color: #006600;">blog</span>.<span style="color: #006600;">webservices</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">rpc</span>.<span style="color: #006600;">soap</span>.*;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">rpc</span>.<span style="color: #006600;">events</span>.*;</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:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> WebserviceQTip <span style="color: #0066CC;">extends</span> Sprite</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> ws:WebService;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> const WSDL_STOCKQUOTE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">'http://www.webservicex.net/stockquote.asmx?wsdl'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> WebserviceQTip <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws = <span style="color: #000000; font-weight: bold;">new</span> WebService<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"load"</span>, wsdlLoaded<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ws.<span style="color: #006600;">loadWSDL</span><span style="color: #66cc66;">&#40;</span>WSDL_STOCKQUOTE<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> wsdlLoaded<span style="color: #66cc66;">&#40;</span>evt:LoadEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> peticion:Operation;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; peticion = Operation<span style="color: #66cc66;">&#40;</span>ws.<span style="color: #006600;">getOperation</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"GetQuote"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; peticion.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"fault"</span>, onWSFault<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; peticion.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"result"</span>, onWSResult<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; peticion.<span style="color: #0066CC;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'SAN'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onWSFault<span style="color: #66cc66;">&#40;</span>evt:FaultEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>evt.<span style="color: #006600;">fault</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onWSResult<span style="color: #66cc66;">&#40;</span>evt:ResultEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">xml</span>:<span style="color: #0066CC;">XML</span> = <span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#40;</span>evt.<span style="color: #006600;">result</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">xml</span>.<span style="color: #006600;">toXMLString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Hemos decidido usar un webservice público sacado de <a href="http://www.webservicex.net">webservicex.net</a> (concretamente uno para consultar valores en bolsa), y básicamente los pasos para obtener respuesta son los siguientes:</p>
<blockquote><p>LINEAS 14-16: Conectamos con el webservice cargando su definición en la clase WebService mediante el WSDL del servicio. En nuestro caso obtenemos la URL del WSDL de <a href="http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=19">la página del webservice</a>.</p>
<p>LINEAS 21-25: Preparamos la petición que haremos al servicio web, mediante la clase Operation. Para ello empleamos el método getOperation del WebService, indicando el nombre de la operación a realizar. </p>
<p>LÍNEA 26: Lanzamos la petición, si requiere parámetros estos se pasan en el método send de forma secuencial, y en el orden en el que los recibe el servicio web. En este caso nos gustaría ver cómo van los negocios de nuestro querido amigo Botín.</p>
<p>LÍNEA 36-37: En el caso de que la respuesta de la petición sea correcta, en este caso lo único que hacemos es convertirla a un objeto XML, y sacarlo por trace para ver su estructura.</p></blockquote>
<p>Como complemento al TIP, os diremos que no es imprescindible el uso de la clase Operation, se podría hacer la petición con el siguiente código:</p>
<div class="igBar"><span id="lactionscript-5"><a href="#" onclick="javascript:showPlainTxt('actionscript-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-5">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_ws = <span style="color: #000000; font-weight: bold;">new</span> WebService<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_ws.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>LoadEvent.<span style="color: #0066CC;">LOAD</span>, wsConnected<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">_ws.<span style="color: #006600;">loadWSDL</span><span style="color: #66cc66;">&#40;</span>CONFIG_WS<span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>...</p>
<div class="igBar"><span id="lactionscript-6"><a href="#" onclick="javascript:showPlainTxt('actionscript-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-6">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">function</span> wsConnected<span style="color: #66cc66;">&#40;</span>ev:LoadEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _ws.<span style="color: #006600;">removeEventListeners</span><span style="color: #66cc66;">&#40;</span>LoadEvent.<span style="color: #0066CC;">LOAD</span>, wsConnected<span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _ws.<span style="color: #006600;">nombreMetodoServicio</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ResultEvent.<span style="color: #006600;">RESULT</span>, configLoaded<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _ws.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>FaultEvent.<span style="color: #006600;">FAULT</span>, onError<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _ws.<span style="color: #006600;">nombreMetodoServicio</span><span style="color: #66cc66;">&#40;</span>parametro<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Donde como podemos ver lo que cambia es que empleamos el nombre del método como método directamente del objeto WebService, y a dicha propiedad es a quien suscribimos el listener resultado. En vez de emplear el método send de Operation, aqui directamente llamamos a un método del webservice que tiene el mismo nombre, pasando los parámetros que se requieran.</p>
<p>Y para terminar, ármate de paciencia a la hora de compilar porque en cuanto incluyes en el proyecto SWCs de flex e importas algunas librerías (por cierto en este ejemplo concreto no hace falta importar los paquetes completos, o quizás alguno de los swc, pero son comunes cuando se quieren usar elementos del Flex Framework), el compilador de Flash Professional las empieza a pasar canutas, por tonto que sea el proyecto, personalmente lo he empleado en un proyecto en AIR reciente, y la compilación empezaba a ser una buena excusa para ir a tomar algo XD</p>
<p>Para quien le guste el videotraining, aquí os dejo <a href="http://www.webkitchen.be/2009/03/02/video-tutorial-use-the-flex-webservice-component-in-flash-cs4-projects/">esta entrada que trata este tema directamente</a>, y para quien os gusta meter las manos en la masa, los archivos fuentes del ejemplo: <a href="http://www.q-interactiva.com/blog/archivos/webservices/webservicesfpcs4.zip">webservicesfpcs4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/07/17-flash-q-tips-webservices-en-flash-cs4/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Diseño web Ewhere</title>
		<link>http://www.q-interactiva.com/blog/2010/07/diseno-web-ewhere/</link>
		<comments>http://www.q-interactiva.com/blog/2010/07/diseno-web-ewhere/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 08:00:28 +0000</pubDate>
		<dc:creator>skeku</dc:creator>
		
		<category><![CDATA[[Q] proyectos]]></category>

		<category><![CDATA[desarrollo web]]></category>

		<category><![CDATA[diseño web]]></category>

		<category><![CDATA[XHTML + CSS]]></category>

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=361</guid>
		<description><![CDATA[
Podemos sentirnos afortunados de guardar muy buenas relaciones con muchos de nuestros clientes. Y Treelogic es uno de ellos.
Si ya nos encargaron en su momento la elaboración del catálogo gráfico para su proyecto Ewhere y la posterior adaptación a otro idioma, ahora nos confiaron la tarea de trasladar toda esa información a la red.
El principal [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://img205.imageshack.us/img205/6006/ewhere.jpg" alt="Diseño web Ewhere" /></p>
<p>Podemos sentirnos afortunados de guardar muy buenas relaciones con muchos de nuestros clientes. Y <a href="http://www.treelogic.com/">Treelogic</a> es uno de ellos.</p>
<p>Si ya nos encargaron en su momento la elaboración del catálogo gráfico para su proyecto <strong>Ewhere</strong> y la posterior adaptación a otro idioma, ahora nos confiaron la tarea de trasladar toda esa información a la red.</p>
<p>El principal problema con el que contábamos inicialmente fue el limitadísimo tiempo de desarrollo para la página por lo que debíamos pensar y actuar rápido. Afortunadamente contábamos con mucho contenido ya creado para el catálogo y podríamos centrar esfuerzos en elaborar la idea gráfica y el posterior desarrollo técnico.</p>
<p>La web de Ewhere está disponible en tres idiomas (español, inglés y portugués). Empleamos en ella un reproductor de vídeo Flash creado en el estudio, una galería javascript y Cufón para el reemplazo de textos. El resultado es una web de corte sobrio y sin elementos recargados, manteniendo así los requisitos iniciales que Treelogic nos solicitó.</p>
<p>La web con el diseño final está disponible en <a href="http://www.ewhere.es/">www.ewhere.es</a> y también la tenemos en nuestra sección de <a href="http://q-interactiva.com/works-web-developer">trabajos de diseño web</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/07/diseno-web-ewhere/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Diseño web para Marbel</title>
		<link>http://www.q-interactiva.com/blog/2010/07/diseno-web-para-marbel/</link>
		<comments>http://www.q-interactiva.com/blog/2010/07/diseno-web-para-marbel/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 07:17:39 +0000</pubDate>
		<dc:creator>skeku</dc:creator>
		
		<category><![CDATA[[Q] proyectos]]></category>

		<category><![CDATA[desarrollo web]]></category>

		<category><![CDATA[diseño web]]></category>

		<category><![CDATA[XHTML + CSS]]></category>

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=360</guid>
		<description><![CDATA[
Hay veces que las necesidades para una página web son bastante concretas y no requieren de un desarrollo largo o de un proyecto excesivamente complicado. Buscar la presencia en Internet, explicar brevemente tus servicios y ofrecer un contacto directo con el cliente son las premisas que nuestro cliente buscaba en esta ocasión.
Para ello elaboramos una [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://img809.imageshack.us/img809/4932/marbel.jpg" alt="Diseño web marbel" /></p>
<p>Hay veces que las necesidades para una página web son bastante concretas y no requieren de un desarrollo largo o de un proyecto excesivamente complicado. Buscar la presencia en Internet, explicar brevemente tus servicios y ofrecer un contacto directo con el cliente son las premisas que nuestro cliente buscaba en esta ocasión.</p>
<p>Para ello elaboramos una web muy sencilla, realmente tampoco los contenidos necesitaban de una divisón en secciones, en la que aplicamos los elementos característicos del cliente: logo, tonos corporativos...</p>
<p>Simplemente por destacar algún punto en concreto, preparamos unas pequeñas ilustraciones para darle un aspecto más desenfadado a la web e hicimos uso del plugin de jQuery <a href="http://plugins.jquery.com/project/ScrollTo">scrollTo</a> para el efecto de desplazamiento vertical de scroll.</p>
<p>Actualmente la web es accesible desde <a href="http://iemarbel.com/">www.iemarbel.com</a>. También tenemos otros <a href="http://q-interactiva.com/works-web-developer">desarrollos web</a> a los que echar un vistazo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/07/diseno-web-para-marbel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bienvenido CSS3</title>
		<link>http://www.q-interactiva.com/blog/2010/06/bienvenido-css3/</link>
		<comments>http://www.q-interactiva.com/blog/2010/06/bienvenido-css3/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 12:17:15 +0000</pubDate>
		<dc:creator>skeku</dc:creator>
		
		<category><![CDATA[XHTML + CSS]]></category>

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

		<category><![CDATA[diseño web]]></category>

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

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=359</guid>
		<description><![CDATA[Aunque quizá sea demasiado pronto para darle una bienvenida con fuente de chocolate, figuritas de hielo y confeti sí que es buen momento para poder ir jugueteando con algunas de las características que esta nueva versión de CSS incluye y que nos van a poder permitir tener mayor libertad a la hora de crear gráficos [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque quizá sea demasiado pronto para darle una bienvenida con fuente de chocolate, figuritas de hielo y confeti sí que es buen momento para poder ir jugueteando con algunas de las características que esta nueva versión de CSS incluye y que nos van a poder permitir tener mayor libertad a la hora de crear gráficos para la web.</p>
<p>Realmente no tiene nada de malo el uso de imágenes estáticas pero el uso de propiedades CSS para generar los gráficos permite una mayor escalabilidad en el desarrollo y reduce algunos hipotéticos costes de producción. Si nos ponemos en un caso sencillo: creamos imágenes para unos botones en nuestra web y pasado un tiempo los queremos hacer más grandes. La imagen la tendríamos que rehacer por completo pero mediante el uso de algunas nuevas propiedades CSS nos podemos ahorrar estos pasos si hemos trabajado bien la hoja de estilos.</p>
<p>Me refiero a propiedades que te permiten crear sombras y degradados. ¿Cuántos botones hemos hecho hasta la fecha con alguno de estos elementos? Pues eso.</p>
<p>Si os dejáis caer por <a href="http://westciv.com/">esta web</a> vais a encontrar un montón de información y recursos sobre el uso de CSS y, los más interesante, un buen puñado de herramientas como <a href="http://westciv.com/tools/gradients/">Lineas Gradients</a> o <a href="http://westciv.com/tools/transforms/index.html">Transforms</a> para ir probando estas cositas y ver su efecto en tiempo real. Un lujazo para los juguetones como ya digo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/06/bienvenido-css3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comunicación en aplicaciones modulares en AIR: parentSandboxBridge y childSandboxBridge</title>
		<link>http://www.q-interactiva.com/blog/2010/06/comunicacion-en-aplicaciones-modulares-en-air-parentsandboxbridge-y-childsandboxbridge/</link>
		<comments>http://www.q-interactiva.com/blog/2010/06/comunicacion-en-aplicaciones-modulares-en-air-parentsandboxbridge-y-childsandboxbridge/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 08:00:56 +0000</pubDate>
		<dc:creator>[Q]boss</dc:creator>
		
		<category><![CDATA[AIR]]></category>

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

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

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

		<category><![CDATA[[Q] interactiva]]></category>

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

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

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

		<category><![CDATA[comunicación AIR - SWF]]></category>

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

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

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

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

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=356</guid>
		<description><![CDATA[
En web es muy habitual que un SWF principal cargue SWFs externos desde un servidor, ya sea el mismo (donde no tendremos ningún problema) u otro diferente (donde aprece ya el interesante mundo de los sandbox de seguridad de flash). Si esto lo llevamos a una aplicación AIR, nos topamos con un extra que es [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.q-interactiva.com/blog/imagenes/parentSandboxBridge.png" title="Comunicación en aplicaciones modulares en AIR, parentSandboxBridge y childSandboxBridge" alt="Comunicación en aplicaciones modulares en AIR, parentSandboxBridge y childSandboxBridge" /></p>
<p>En web es muy habitual que un SWF principal cargue SWFs externos desde un servidor, ya sea el mismo (donde no tendremos ningún problema) u otro diferente (donde aprece ya <a href="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes_02.html">el interesante mundo de los sandbox de seguridad de flash</a>). Si esto lo llevamos a una aplicación AIR, nos topamos <a href="http://www.adobe.com/devnet/air/articles/introduction_to_air_security.html">con un extra que es el sandbox de la propia aplicación</a>.</p>
<p>Una de las grandes caracterísiticas de flash es la capacidad de cargar películas que a su vez pueden funcionar como aplicaciones. Esta situación, además de común, nos permite estructurar las aplicaciones de forma modular y lograr una independencia interesante entre la base instalada, los contenidos y los datos que estos manejan. Extender aplicaciones al vuelo, o actualizarlas es una de las grandes virtudes que tendría este sistema.<br />
<span id="more-356"></span></p>
<p>Si bien Adobe AIR tiene la capacidad de detectar la versión instalada de la aplicación, contrastarla con un control de versiones en el servidor y auto descargarse y actualizarse con un código bastante sencillo, la tentación de tener los contenidos de forma externa a la aplicación, es demasiado grande, asi que el planteamiento está claro: una base instalada que sirve sólo como eso, base, para albergar módulos que funcionan como aplicaciones "independientes" y que al estar en el servidor, pueden ser actualizadas de manera totalmente transparente al usuario. ¿suena bien, no?</p>
<p>La clave está en "independientes"... ya que muy raro tiene que ser que lo que carguemos realmente no tenga nada que decirle a la base, o la base a lo que carguemos. Normalmente siempre se necesita una comunicación, por muy básica que sea. Ahi nos encontramos con un sandbox que nos limita, que es el de la aplicación AIR, y las técnicas habituales de allowDomain que funcionan en web, no nos sirven en este caso. (<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=security_3.html">Más sobre sandboxes</a>)</p>
<p>Documentándote sobre el tema darás en la referencia de AS3 con sharedEvents y con <a href="http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html#parentSandboxBridge">parentSandboxBridge </a>y <a href="http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html#childSandboxBridge">childSandboxBrige</a>. El primero funciona, nos permite a través de esta propiedad lanzar y escuchar eventos entre la base y el módulo cargado, pero hasta donde yo he podido trabajar, solamente permite Eventos básicos y no todos, menos aun no personalizados, con lo que si quieres pasar determinada información no te va a ser suficiente. Un ejemplo válido podría ser que la base detecte cuando se ha cerrado el módulo cargado, para liberarlo totalmente de memoria.</p>
<p>ParentSandboxBridge y childSanboxBridge forman el "bridge" que <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=security_5.html">se ha ideado en AIR para que esta comunicación pueda producirse</a>, pero su uso <a href="http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7e5c.html">no es tan trivial como se pinta en la ayuda</a> (<a href="http://www.adobe.com/devnet/air/ajax/quickstart/sandbox_bridge.html">en AIR a partir de HTML está bastante más documentado</a>), y saca a la luz problemas que no se mencionan en la ayuda, y que pueden desesperar a más de uno (no se si se nota el tono de "yo soy uno de esos quemaos", y me consuelo <a href="http://richardleggett.co.uk/blog/index.php/2009/04/02/loading-swfs-into-air-1-5-and-loaderinfo">viendo que no soy el único</a>). </p>
<p>Estas propiedades, que son dos objetos genéricos de la propiedad <a href="http://help.adobe.com/es_ES/AS3LCR/Flash_10.0/flash/display/LoaderInfo.html">loaderInfo </a>cuando hacemos una carga de un SWF, solamente están presentes cuando estamos compilando para Adobe AIR, pero para que la comunicación mediante el bridge (que no es más que dos clases que se exponen a través de estas propiedades, y que cada una de ellas da acceso a los métodos públicos de ambas partes, parent a los de la aplicación AIR y child a los de la película SWF cargada) pueda producirse de forma completa, es evidente que las tenemos que usar en la película cargada. Esta es la teoría.</p>
<p>La realidad nos dice que no podrás compilar tu pelicula SWF que será cargada si pones algo como esto (<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=security_5.html">sacado de la ayuda directamente</a>) en la clase que la controle:</p>
<div class="igBar"><span id="lactionscript-9"><a href="#" onclick="javascript:showPlainTxt('actionscript-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-9">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">Security</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PriceQuoter <span style="color: #0066CC;">extends</span> Sprite</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> storeRequester:<span style="color: #0066CC;">Object</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PriceQuoter<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; storeRequester = loaderInfo.<span style="color: #006600;">parentSandboxBridge</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>En cuanto tratas de compilar el SWF, que obviamente no está siendo compilado para AIR, te dice que parentSandboxBridge no es una propiedad de LoaderInfo, y con toda la razón, porque esa propiedad solo está disponible en AIR. Entonces ¿para qué coño me crean un bridge que no puedo usar? FAIL total de la ayuda. La verdad que la ayuda aqui se ha quedado más que coja, aqui os pego, más o menos, el código que he empleado en mi último proyecto :</p>
<div class="igBar"><span id="lactionscript-10"><a href="#" onclick="javascript:showPlainTxt('actionscript-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-10">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package com.<span style="color: #006600;">qinteractiva</span>.<span style="color: #006600;">blog</span>.<span style="color: #006600;">AIRmodules</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Modulo <span style="color: #0066CC;">extends</span> Sprite</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> texto_txt:<span style="color: #0066CC;">TextField</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _isInApp:<span style="color: #0066CC;">Boolean</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _bridge:<span style="color: #0066CC;">Object</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Modulo<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, init<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">try</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; accederAplicacion<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">catch</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:<span style="color: #0066CC;">Error</span><span style="color: #66cc66;">&#41;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Excepción: SWF fuera de un entorno AIR"</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _isInApp = <span style="color: #000000; font-weight: bold;">false</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> accederAplicacion<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>loaderInfo<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'parentSandboxBridge'</span><span style="color: #66cc66;">&#93;</span> != <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _isInApp = <span style="color: #000000; font-weight: bold;">true</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _bridge = loaderInfo<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'parentSandboxBridge'</span><span style="color: #66cc66;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _isInApp = <span style="color: #000000; font-weight: bold;">false</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span>ev:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; removeEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ADDED_TO_STAGE</span>, init<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>_isInApp<span style="color: #66cc66;">&#41;</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; texto_txt.<span style="color: #0066CC;">text</span> = _bridge.<span style="color: #006600;">getTexto</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; texto_txt.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">'No estamos en AIR'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Este código no solo evita el problema del error de compilación (y cuidado con el camelCase en el nombre de parentSandboxBridge, que me estoy aun acordando de mi "parentSandBoxBridge"), sino que además controla si se está ejecutando en un entorno de una App AIR o directamente de forma independiente, para evitar errores de ejecución. Desde aquí muchas gracias<a href="http://twitter.com/stray_and_ruby">a los consejos de un amigo sorpresa que me salió por twitter </a>, y que me ayudó a enfocar mejor este tema <img src='http://www.q-interactiva.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Adicionalmente, existe una técnica que me parece la más potente, pero que implica determinadas situaciones y mecanismos que en muchas ocasiones pueden ser más que sobrantes, y que <a href="http://blogs.adobe.com/emalasky/archives/2008/04/remote_plugins.html">se explica perfectamente por Ethan Malasky</a>, que básicamente consiste en descargars el SWF en binario, y guardarlo en el sandbox de la aplicación, para posteriormente cargarlo, y dado que ya forma parte de la misma no tener ninguna limitación (evidentemente teniendo cuidado con los riesgos de seguridad que ello conlleva). No obstante en mi opinión, para determinadas comunicaciones, esto se va totalmente del ámbito.</p>
<p>De regalito os dejo los ficheros fuentes del ejemplo para ver la comunicación completa entre una aplicación AIR y un módulo SWF cargado externamente desde un servidor remoto a través del bridge que AIR nos da. Lo debéis proba en el entorno de Flash, ya que no os he preparado la aplicación AIR como tal, no era el objetivo del ejemplo.</p>
<p><a href="http://www.q-interactiva.com/blog/archivos/AIRmodules/AIRmodules.zip">Ficheros Fuente del ejemplo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/06/comunicacion-en-aplicaciones-modulares-en-air-parentsandboxbridge-y-childsandboxbridge/feed/</wfw:commentRss>
		</item>
		<item>
		<title>#016 AS3 [Q] Tips: ActionScript 3 para la Plataforma Flash</title>
		<link>http://www.q-interactiva.com/blog/2010/06/016-as3-q-tips-actionscript-3-para-la-plataforma-flash/</link>
		<comments>http://www.q-interactiva.com/blog/2010/06/016-as3-q-tips-actionscript-3-para-la-plataforma-flash/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 12:11:29 +0000</pubDate>
		<dc:creator>[Q]boss</dc:creator>
		
		<category><![CDATA[AIR]]></category>

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

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

		<category><![CDATA[Flash Lite]]></category>

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

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

		<category><![CDATA[[Q] Tips]]></category>

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

		<category><![CDATA[Adobe AIR]]></category>

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

		<category><![CDATA[Flash Platform]]></category>

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

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=357</guid>
		<description><![CDATA[
Un recurso imprescindible para todos los que nos movemos por varios frentes dentro de la plataforma flash, que es el centro neurálgico de la documentación sobre AS3 aplicado a todos los entornos y programas donde lo podemos emplear.
ActionScript 3.0 Reference for the Adobe Flash Platform

Adobe Flash Player 10.1 y anteriores
Adobe Flash Professional CS5 y anteriores
Adobe [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.q-interactiva.com/blog/imagenes/as3fplatform.png" title="ActionScript 3 Reference for the Adobe Flash Platform" alt="ActionScript 3 Reference for the Adobe Flash Platform" /></p>
<p>Un recurso imprescindible para todos los que nos movemos por varios frentes dentro de la plataforma flash, que es el centro neurálgico de la documentación sobre AS3 aplicado a todos los entornos y programas donde lo podemos emplear.</p>
<p><a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html?filter_flash=cs5&#038;filter_flashplayer=10.1&#038;filter_air=2">ActionScript 3.0 Reference for the Adobe Flash Platform</a></p>
<ul>
<li>Adobe Flash Player 10.1 y anteriores</li>
<li>Adobe Flash Professional CS5 y anteriores</li>
<li>Adobe LiveCycle</li>
<li>Open Source Medria Framework 1.0</li>
<li>Adobe AIR 2.0 y anteriores</li>
<li>Adobe Flex 4 y anteriores</li>
<li>Adobe LiveCycle Data Services</li>
<li>Adobe Flash Lite 4</li>
<li>Adobe Cold Fusion 9 y anteriores</li>
<li>Adobe BlazeDS</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/06/016-as3-q-tips-actionscript-3-para-la-plataforma-flash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>#015 [Q] Tips: Timers responsables</title>
		<link>http://www.q-interactiva.com/blog/2010/05/015-q-tips-timers-responsables/</link>
		<comments>http://www.q-interactiva.com/blog/2010/05/015-q-tips-timers-responsables/#comments</comments>
		<pubDate>Fri, 21 May 2010 22:42:52 +0000</pubDate>
		<dc:creator>[Q]boss</dc:creator>
		
		<category><![CDATA[AS3]]></category>

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

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

		<category><![CDATA[[Q] Tips]]></category>

		<category><![CDATA[[Q] interactiva]]></category>

		<category><![CDATA[action script]]></category>

		<category><![CDATA[action script 3]]></category>

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

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

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

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

		<category><![CDATA[tips as3]]></category>

		<category><![CDATA[[Q]Tips]]></category>

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=355</guid>
		<description><![CDATA[La verdad que vamos hasta arriba de trabajo, pero cada viernes que pasa que no cumplo con el objetivo que me he marcado, me duele, asi que aprovecho cosas que salen en el día a día para tratar de trasladarlas al blog.
En Flash, muy lamentablemente (y no os quiero contar en Flash Lite) no podemos [...]]]></description>
			<content:encoded><![CDATA[<p>La verdad que vamos hasta arriba de trabajo, pero cada viernes que pasa que no cumplo con el objetivo que me he marcado, me duele, asi que aprovecho cosas que salen en el día a día para tratar de trasladarlas al blog.</p>
<p>En Flash, muy lamentablemente (y no os quiero contar en Flash Lite) no podemos llamar explícitamente al "garbage collector", sino que lo que hacemos es tratar de marcar los elementos a borrar de memoria dejandolos libres de referencias (bien con un delete, con un null, etc.) De esta manera, si logramos que no queden referencias sobre los objetos que hemos marcado para el borrado, lograremos que cuando el GC haga su tarea, sean liberados de memoria. </p>
<p>Un punto especialmente delicado en este proceso de borrado de referencias son los listeners, ya que son procesos en los que es facil que nos olvidemos eliminarlos, aunque seamos muy metódicos en nuestro código. Pues hoy os quiero hablar de un desliz que es bastante común cometer, y que también es bastante sencillo de solucionar: los listeners sobre TimerEvent de un Timer.<br />
<span id="more-355"></span><br />
<a href="http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/Timer.html">En la referencia de AS3 encontramos</a> lo siguiente:</p>
<div class="igBar"><span id="lactionscript-14"><a href="#" onclick="javascript:showPlainTxt('actionscript-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-14">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Timer</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">TimerEvent</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TimerExample <span style="color: #0066CC;">extends</span> Sprite <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> TimerExample<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> myTimer:Timer = <span style="color: #000000; font-weight: bold;">new</span> Timer<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;color:#800000;">1000</span>, <span style="color: #cc66cc;color:#800000;">2</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myTimer.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"timer"</span>, timerHandler<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myTimer.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> timerHandler<span style="color: #66cc66;">&#40;</span>event:TimerEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"timerHandler: "</span> + event<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>En este ejemplo no tenemos explícitamente un manejador para el evento TimerEvent.TIMER_COMPLETE, con lo que se hace más evidente, que en algún momento deberíamos desuscribir los eventos del Timer cuando no lo queramos usar más. En el código anterior, deberíamos tener de alguna manera la posibilidad de remover el Listener creado, y la verdad que la ayuda de flash en este caso no clarifica demasiado este punto.</p>
<p>Una cosa que hay que tener clara para comprender el problema es que ni aun cuando un TIMER se ha completado, los listeners son liberados, salvo que lo hagamos explícitamente. Para comprobarlo prueba este código en Flash:</p>
<div class="igBar"><span id="lactionscript-15"><a href="#" onclick="javascript:showPlainTxt('actionscript-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-15">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">package&nbsp; com.<span style="color: #006600;">qinteractiva</span>.<span style="color: #006600;">blog</span>.<span style="color: #006600;">demos</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Timer</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">TimerEvent</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DemoTimer <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">MovieClip</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> demo:Timer;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> const LAPSO:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;color:#800000;">2000</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> const ITERACIONES:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;color:#800000;">2</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> DemoTimer<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// constructor code</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; demo = <span style="color: #000000; font-weight: bold;">new</span> Timer<span style="color: #66cc66;">&#40;</span>LAPSO, ITERACIONES<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; demo.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, onTimer<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; demo.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER_COMPLETE</span>, onComplete<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; demo.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> onTimer<span style="color: #66cc66;">&#40;</span>ev:TimerEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"timer!"</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> onComplete<span style="color: #66cc66;">&#40;</span>ev:TimerEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"timer completado!"</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"listener timer: "</span>+demo.<span style="color: #006600;">hasEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"listener complete: "</span>+demo.<span style="color: #006600;">hasEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER_COMPLETE</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Cuando el Timer se completa, podemos ver que sus listeners siguen ahi, activos, y que el hecho de completarse no hace que se eliminen automáticamente, por tanto tenemos que tener claro que debemos removerlos manualmente si queremos poder marcar ese timer para ser borrado de memoria.<br />
En el caso del ejemplo, es una propiedad de la clase, con lo que tenemos bien clara la referencia para acceder a él.</p>
<p>Aunque el timer sea una variable local de una función, como en el ejemplo de la ayuda de AS3 del inicio del post, debemos eliminarlo, y un buen lugar para hacerlo es en el TIMER_COMPLETE, accediendo al timer desde el evento que recibe el manejador, algo como esto:</p>
<div class="igBar"><span id="lactionscript-16"><a href="#" onclick="javascript:showPlainTxt('actionscript-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript-16">
<div class="actionscript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> onComplete<span style="color: #66cc66;">&#40;</span>ev:TimerEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> demo:Timer = Timer<span style="color: #66cc66;">&#40;</span>ev.<span style="color: #0066CC;">target</span><span style="color: #66cc66;">&#41;</span>;</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:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; demo.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>...<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; demo.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>...<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Asi que recuerda, <strong>liberad al Timer!!!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/05/015-q-tips-timers-responsables/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Curso Flash Lite en Intelygenz</title>
		<link>http://www.q-interactiva.com/blog/2010/05/curso-flash-lite-en-intelygenz/</link>
		<comments>http://www.q-interactiva.com/blog/2010/05/curso-flash-lite-en-intelygenz/#comments</comments>
		<pubDate>Fri, 07 May 2010 11:22:20 +0000</pubDate>
		<dc:creator>[Q]boss</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flash Lite]]></category>

		<category><![CDATA[Formación]]></category>

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

		<category><![CDATA[[Q] interactiva]]></category>

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

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

		<category><![CDATA[feather framework]]></category>

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

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

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

		<guid isPermaLink="false">http://www.q-interactiva.com/blog/?p=354</guid>
		<description><![CDATA[Pues esta semana he tenido la suerte de poder compartir un poco de nuestra experiencia en desarrollo de aplicaciones reales en Flash Lite con la gente de Intelygenz (¡saludos a todos, alumnos, no alumnos y miriam!), y realmente aprovecho la entrade del blog para darles las gracias por haberme tratado taaaan bien, además de los [...]]]></description>
			<content:encoded><![CDATA[<p>Pues esta semana he tenido la suerte de poder compartir un poco de nuestra experiencia en desarrollo de aplicaciones reales en <a href="http://www.adobe.com/products/flashlite/">Flash Lite</a> con <a href="http://www.intelygenz.com/">la gente de Intelygenz</a> (¡saludos a todos, alumnos, no alumnos y miriam!), y realmente aprovecho la entrade del blog para darles las gracias por haberme tratado taaaan bien, además de los buenos ratos que hemos pasado.</p>
<p>Durante el curso hemos dado un repaso bastante curioso a un montón de tópicos en <a href="http://www.adobe.com/products/flashlite/">Flash Lite</a>, sobre todo al trabajo que se puede llegar a alcanzar en AS2 para que la programación no le resulte tan sucia a alguien que viene o está acostumbrado de AS3 (un ejemplo de un caso real, sobre cómo hacer algo cuiroso con AS2 es el <a href="http://opensource.blocketpc.com/es/featherframework/">Feather Framework</a> de Raúl Jiménez (@elecash) que liberamos en su día en <a href="http://www.blocketpc.com">BlocketPC</a>). </p>
<p>Por suerte <a href="http://labs.adobe.com/technologies/flashplayer10/">con FP10.1</a> esto se nos termina, pero hasta entonces, o si queremos alcanzar algunos termianles previos o de gama más baja, <a href="http://www.adobe.com/livedocs/flashlite/2/main/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part_api_ref.html">Flash Lite y AS2</a> siguen mandando. </p>
<p>La entrada en realidad es para poneros aquí un resumen de las herramientas básicas necesarias para lograrlo, y que son la base para poder trabajar con Delegates, despachado de eventos en condiciones, Tweens realmente optimizadas para Flash Lite, gestión de cargas y sus limitaciones, trabajo con JSON (si optáis por esta solución).</p>
<p>La lista de la comprá para un buen programador Flash Lite en AS2 no debería dejar de contener:</p>
<ul>
<li>Delegate con parámetros, por ejemplo <a href="http://blog.zarate.tv/articles/delegando-que-es-gerundio/">el de nuestro amigo Zárate</a>.</li>
<li><a href="http://www.gskinner.com/blog/archives/000027.html">GDispatcher de Grant Skinner</a>, para trabajar con eventos (¿por qué no hay en AS3 un removeAllEventListeners?)</li>
<li><a href="http://www.greensock.com/tweenlite/">TweenLite </a>para animación por código (a ser posible la TweenLite de hace tiempo, no la actual, que ha añadido complejidad y potencia, lo cual le sobra a FLite)</li>
<li>Clase <a href="http://www.json.org/">oficial de JSON</a> para AS2 si vamos a trabajar con este formato (ya no disponible en la web de JSON)</li>
<li><a href="http://www.actionscriptclasses.com/2008/queueloader-as2/">QueueLoader</a> (hay muchas) en la gestión de cargas en AS2 (y a ser posible mejorada creando unas propiedades públicas estáticas para los tipos de eventos que se generan, que <a href="http://opensource.blocketpc.com/featherframework/doc/files/de/betriebsraum/loading/QueueLoader-as.html">la original que empleamos en Feather Framework</a> viene con Strings "a pelo")</li>
<li>Un buen singleton para gestión de información (como por ejemplo el ModelLocator de Feather Framework)</li>
<li>Tener claro que el XML es malo para la salud <img src='http://www.q-interactiva.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<p>Con esto podréis cocinar muchas y ricas recetas con pocos recursos, pero con modernas herramientas como Eclipse + FDT, FlashDevelop, etc. ¡A degustarlo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.q-interactiva.com/blog/2010/05/curso-flash-lite-en-intelygenz/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
