<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>El blog imposible de diseño &#187; adobe</title>
	<atom:link href="http://ivanmendoza.net/tag/adobe/feed" rel="self" type="application/rss+xml" />
	<link>http://ivanmendoza.net</link>
	<description>por Iván E. Mendoza</description>
	<lastBuildDate>Wed, 01 Feb 2012 23:13:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ventana transparente en Adobe Air</title>
		<link>http://ivanmendoza.net/desarrollo-web/ventana-transparente-en-adobe-air?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ventana-transparente-en-adobe-air</link>
		<comments>http://ivanmendoza.net/desarrollo-web/ventana-transparente-en-adobe-air#comments</comments>
		<pubDate>Sun, 13 Apr 2008 20:31:54 +0000</pubDate>
		<dc:creator>Iván</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://ivanmendoza.net/?p=101</guid>
		<description><![CDATA[Anteriormente publique cómo crear una aplicación en Adobe Air, en esta ocasión voy a ampliar el artículo enfocandome en cómo crear una aplicación usando una ventana transparente además de utilizar algunas propiedades y métodos mas para manipularla. Importante: Es recomendable &#8230; <a href="http://ivanmendoza.net/desarrollo-web/ventana-transparente-en-adobe-air">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Anteriormente publique <a href="http://ivanmendoza.net/desarrollo-web/air-desarrollo-web/introduccion-a-adobe-air-2008-04-06">cómo crear una aplicación en Adobe Air</a>, en esta ocasión voy a ampliar el artículo enfocandome en cómo crear una aplicación usando una ventana transparente además de utilizar algunas propiedades y métodos mas para manipularla.</p>
<p style="text-align: center;background:#ffc;"><strong><span style="color: #000000;">Importante: Es recomendable que antes leas el tema anterior: <a href="http://ivanmendoza.net/desarrollo-web/air-desarrollo-web/introduccion-a-adobe-air-2008-04-06">Introducción a Adobe Air</a>.</span></strong></p>
<h3><strong>Cómo usar ventana transparente en Adobe Air</strong></h3>
<p>La idea es la misma, una aplicación que muestre el famoso Hola Mundo, pero en esta ocasión usando una ventana transparente o en otras palabras sin borde ni fondo. Para lograrlo usamos la propiedad <em>systemChrome</em> y <em>transparent</em> en la seccion <em>initialWIndow</em> del XML de la aplicación, de esta forma:<br />
<code><br />
&lt;initialWindow&gt;<br />
&lt;content&gt;HolaMundo-transparente.html&lt;/content&gt;<br />
&lt;visible&gt;true&lt;/visible&gt;<br />
&lt;width&gt;240&lt;/width&gt;<br />
&lt;height&gt;220&lt;/height&gt;<br />
<strong> &lt;systemChrome&gt;none&lt;/systemChrome&gt;<br />
&lt;transparent&gt;true&lt;/transparent&gt;</strong><br />
&lt;/initialWindow&gt;</code></p>
<p>La propiedad <em>systemChrome</em> hace referencia al &#8220;skin&#8221; del sistema operativo, que incluye la barra de titulo junto a los botones de maximizar, minimizar y cerrar, como en este caso no los deseamos usamos el valor <em>none</em> para desactivarlos. Además puede utilizar valores como . La propiedad <em>transparent</em>, como su nombre lo indica, define si deseamos fondo en nuestra aplicación o si preferimos fondo transparente, como en este caso es <em>true</em>.</p>
<p>Luego podemos trabajar normalmente en nuestra ventana transparente, obviamente evitando aplicar fondos con CSS para no perder el efecto, aunque con ayuda de imágenes semitransparentes (PNG) podemos lograr buenos efectos. Para continuar con el ejemplo del tema anterior, he usado el texto Hola Mundo junto a un genial icono de un mundo (tomado del paquete NX09 de MazeNL77):</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-99" title="Adobe Air - Hola Mundo Transparente" src="http://ivanmendoza.net/wp-content/cargas/2008/04/holamundo-transparente.png" alt="Adobe Air - Hola Mundo Transparente" width="404" height="219" /></p>
<p>Como se puede observar el efecto es muy bueno, icono sin bordes y el texto en un fondo semitransparente, solo utilizando imágenes PNG. Aunque debo aclarar que al usar ventanas transparente hay inconvenientes que resolver por el hecho de no usar el borde estandar, por ejemplo cómo mover la ventana o cerrarla.</p>
<h3>Cerrar una aplicación de Adobe Air</h3>
<p>Para cerrar la aplicación he incluido un icono dentro de un enlace (a) que ejecuta el código para cerrarla:</p>
<p><code>&lt;a class="cerrar" href="#" onclick="<strong>window.close();NativeApplication.exit();</strong>" title="Click para cerrar"&gt;X&lt;/a&gt;</code></p>
<p>La etiqueta tiene las siguientes propiedades: <em>class </em>para definir el estilo, <em>href </em>con valor # para obtener el efecto de enlace nada más, <em>title</em> para mostrar la descripción y el atributo <em>onclick</em> con el código que realmente importa. Este código hace referencia a dos metodos, el primero, <strong><em>window.close()</em></strong> cierra la ventana, y el segundo, <em><strong>NativeApplication.exit()</strong></em> finaliza la aplicación, es importante mencionar que cerrar la ventana no finaliza la aplicación ya que esta puede continuar ejecutándose sin necesidad de una ventana.</p>
<h3>Mover una ventana sin bordes en Adobe Air</h3>
<p>Como mencione anteriormente, al eliminar el borde estandar también perdemos funcionalidades sencillas como mover la ventana, la solución para ello es asignar un elemento encargado de &#8220;detectar&#8221; el movimiento y un que genere el evento adecuado para activar el movimiento de la ventana.</p>
<p>El elemento encargado de detectar el movimiento sera la imagen del mundo (ver imagen anterior):</p>
<p><code>&lt;div <strong>id="imagenMundo"</strong>&gt;&lt;img src="app:/imagenes/mundo.png" /&gt;&lt;/div&gt;</code></p>
<p>notese el id de la imagen (imagenMundo) porque a traves de él llamaremos al evento <em>onMove</em>. Luego en un script en el header colocamos el siguiente código:</p>
<p><code>&lt;script&gt;<br />
function inicio(){<br />
var imagenMundo = document.getElementById("imagenMundo");<br />
imagenMundo.addEventListener("mousedown",onMove,true);<br />
}<br />
var onMove = function(event){<br />
nativeWindow.startMove();<br />
}<br />
&lt;/script&gt;</code></p>
<p>La función <em>inicio</em> (llamada al cargar el body) asigna un detector (<em>EventListener</em>) a la imagen del mundo cuando este sea presionado con el mouse (<em>mousedown</em>) y lanza el evento <em>onMove</em>. Más adelante cuando el evento onMove sea ejecutado, este se encargará de iniciar el método <em>nativeWindow.startMove</em> que incorpora Air para el movimiento de la ventana.</p>
<h3>Posicionar la ventana de Air dentro de la pantalla</h3>
<p>Para finalizar este artículo solo hace falta mencionar cómo posicionar la ventana de la aplicación en Air dentro de la pantalla. En el caso de esta aplicación he decidido que inicie centrada en la pantalla, y para ello utilizo el siguiente código dentro de la funcion inicio (ver arriba):</p>
<p><code>function inicio(){<br />
var imagenMundo = document.getElementById("imagenMundo");<br />
imagenMundo.addEventListener("mousedown",onMove,true);<br />
<strong>nativeWindow.x=(air.Capabilities.screenResolutionX/2)-(nativeWindow.width/2);<br />
nativeWindow.y=(air.Capabilities.screenResolutionY/2)-(nativeWindow.height/2);</strong><br />
}</code></p>
<p>Con <em>nativeWindow</em> hacemos referencia a la ventana, <em>x</em> y <em>y </em>definen la posición de la ventana, a cada una le asigno el valor en el que deseo que aparezca la ventana en horizontal y vertical respectivamente. La &#8220;formula hablada&#8221; para centrar es la siguiente: La mitad de la resolución actual menos la mitad de las dimensiones de la ventana, de esa forma lograremos las coordenadas para centrarla.</p>
<p>Con <em>air.Capabilities.screenResolutionX</em> obtenemos el ancho de la resolución y con <em>air.Capabilities.screenResolutionY</em> el alto, mientras que con<strong> </strong><em>nativeWindow.width</em> obtenemos el ancho de la ventana y con <em>nativeWindow.height</em> el alto de la misma. Asignemos estos valores a la formula y obtendremos las coordenadas para centrar la aplicación.</p>
<p>A continuación una imagen de la aplicación en el centro de mi escritorio <img src='http://ivanmendoza.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-100" title="Adobe Air - Hola Mundo Transparente en escritorio" src="http://ivanmendoza.net/wp-content/cargas/2008/04/holamundo-transparente-escritorio.png" alt="Adobe Air - Hola Mundo Transparente en escritorio" width="365" height="291" /></p>
<p style="text-align: left;"><strong>Descargar archivos de Adobe Air del ejemplo:</strong> <a href="http://ivanmendoza.net/wp-content/cargas/2008/04/holamundo-transparente.zip">holamundo-transparente.zip</a> (33.4kb)</p>
<h3>Más información acerca del tema</h3>
<ul>
<li>AIR window basics: Información básica para trabajar con ventanas, tipos de ventana, systemChrome y combinaciones de ambos</li>
<li><a href="http://livedocs.adobe.com/air/1/jslr/index.html">Capabilities</a>: Referencia acerca de las funciones para conocer las capacidades del sistema (PC del usuario), como resolución, idioma, sistema operativo, etc.</li>
<li><a href="http://www.adobe.com/devnet/air/ajax/quickstart/custom_chrome.html">Customizing the look and feel of a window</a>: Tutorial bastante completo acerca de como personalizar la apariencia de una ventana, incluye uso de boton minimizar, cerrar, redimensionar y mover, entre otros.</li>
<li><a title="Introducción a Adobe Air" href="http://ivanmendoza.net/desarrollo-web/air-desarrollo-web/introduccion-a-adobe-air-2008-04-06">Introducción a Adobe Air</a>: Artículo anterior acerca de cómo iniciar el desarrollo de una aplicación en Adobe Air.</li>
</ul>
<p><a href="http://ivanmendoza.net/desarrollo-web/ventana-transparente-en-adobe-air?utm_source=feed&utm_medium=link&utm_content=footer&utm_campaign=comentarios&utm_term=5 comentarios#comments">5 comentarios</a></p>
<hr />
<p><small><a href="http://ivanmendoza.net?utm_source=feed&utm_medium=link&utm_content=footer&utm_campaign=creditos">ivanmendoza</a> 2008 - Bajo licencia <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/gt/">Creative Commons By-NC-SA</a>.</small></p>]]></content:encoded>
			<wfw:commentRss>http://ivanmendoza.net/desarrollo-web/ventana-transparente-en-adobe-air/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:thumbnail url="http://ivanmendoza.net/wp-content/uploads//home/content/i/m/e/imendoza/html/personal/wp-content/cargas/2008/04/holamundo-transparente.png" />
		<media:content url="http://ivanmendoza.net/wp-content/uploads//home/content/i/m/e/imendoza/html/personal/wp-content/cargas/2008/04/holamundo-transparente.png" medium="image">
			<media:title type="html">Adobe Air &#8211; Hola Mundo Transparente</media:title>
			<media:description type="html">Adobe Air - Hola Mundo Transparente</media:description>
		</media:content>
		<media:content url="http://ivanmendoza.net/wp-content/uploads//home/content/i/m/e/imendoza/html/personal/wp-content/cargas/2008/04/holamundo-transparente-escritorio.png" medium="image">
			<media:title type="html">Adobe Air &#8211; Hola Mundo Transparente en escritorio</media:title>
			<media:description type="html">Adobe Air - Hola Mundo Transparente en escritorio</media:description>
		</media:content>
	</item>
	</channel>
</rss>

