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

<channel>
	<title>Enrique Chávez Garcia- Desarrollo de Web &#187; AS3</title>
	<atom:link href="http://tmeister.net/category/as3/feed/" rel="self" type="application/rss+xml" />
	<link>http://tmeister.net</link>
	<description>Blog acerca de desarrollo orientado hacia Flash, Flex y Actionscript.</description>
	<lastBuildDate>Thu, 19 Jan 2012 20:25:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Starlight, Disponible en GitHub</title>
		<link>http://tmeister.net/2011/04/06/starlight-disponible-en-github/</link>
		<comments>http://tmeister.net/2011/04/06/starlight-disponible-en-github/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 20:55:40 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=648</guid>
		<description><![CDATA[Recuerdan Starlight, bueno pues se quedo ahí mismo como muchas otras cosas mas y cuando murió mi laptop vieja creí que se había perdido el código, pero hoy me di una vuelta por mi cuenta de gitHub y ahi esta el codigo =) En fin, si quieren descargarlo y modificarlo, adelante es todo suyo lo [...]]]></description>
			<content:encoded><![CDATA[<p>
<object width="700" height="400">
<param name="movie" value="http://tmeister.net/starlight/starlight.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="transparent"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<param name="allowScriptAccess" value="always"></param>
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="700" height="400" src="http://tmeister.net/starlight/starlight.swf" quality="high" bgcolor="#ffffff" wmode="transparent" menu="false" allowFullScreen="true" ></embed>
</object>
</p>
<p>Recuerdan Starlight, bueno pues se quedo ahí mismo como muchas otras cosas mas y cuando murió mi laptop vieja creí que se había perdido el código, pero hoy me di una vuelta por mi cuenta de gitHub y ahi esta el codigo =)</p>
<p>En fin, si quieren descargarlo y modificarlo, adelante es todo suyo lo puedes descargar desde <a href="https://github.com/Tmeister/Starlight" target="_blank">https://github.com/Tmeister/Starlight</a>, el proyecto esta hecho 100% con AS3 usando <a href="http://www.flashdevelop.org/" target="_blank">FlashDevelop</a>.</p>
<p>El ejemplo de que estan descargando lo pueden ver en <a href="http://tmeister.net/2010/10/12/starlight-slideshow-freebie-preview/" target="_blank">Starlight, SlideShow freebie preview</a></p>
<p>De nuevo el link de gitHub <a href="https://github.com/Tmeister/Starlight" target="_blank">https://github.com/Tmeister/Starlight</a></p>
<p>Saludos!!</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2011/04/06/starlight-disponible-en-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starlight, SlideShow freebie preview</title>
		<link>http://tmeister.net/2010/10/12/starlight-slideshow-freebie-preview/</link>
		<comments>http://tmeister.net/2010/10/12/starlight-slideshow-freebie-preview/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 04:51:16 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=640</guid>
		<description><![CDATA[Que tal gente. Últimamente habia estando escuchando muy buenas cosas sobre FDT 4.0 y la verdad es que quería probarlo asi que lo instale y me puse a probar y que mejor que haciendo algo util y que valga la pena, de estas pruebas nació Starlight un slideshow de imágenes. Por ahora lo tengo aun en estado alpha pero funcional, el [...]]]></description>
			<content:encoded><![CDATA[<p>Que tal gente.</p>
<p>Últimamente habia estando escuchando muy buenas cosas sobre <a href="http://fdt.powerflasher.com">FDT 4.0</a> y la verdad es que quería probarlo asi que lo instale y me puse a probar y que mejor que haciendo algo util y que valga la pena, de estas pruebas nació <strong>Starlight</strong> un slideshow de imágenes.</p>
<p>Por ahora lo tengo aun en estado alpha pero funcional, el resultado final lo dare como freebie para que pueda ser usado donde se desee =).</p>
<p>La configuración es mediante un archivo XML comun y corriente no se necesita compilar nada de nuevo con el SWF basta y sobra, esta configuracion hasta ahora soporta +35 opciones y 15 efectos de transición  entre imagenes, se puede configurar el numero de columnas y filas para &#8220;cortar&#8221; la imagen y logar los efectos de transición, ademas de que el SWF final solo pesa 10Kb.</p>
<p>La idea de este post es que, ya que sera liberado y espero que sea algo útil para todos, me digan que características podemos agregar para  que realmente sobresalga de los demás =)</p>
<h2>Demo</h2>
<div align="center">
<object width="700" height="400">
<param name="movie" value="http://tmeister.net/starlight/starlight.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="transparent"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<param name="allowScriptAccess" value="always"></param>
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="700" height="400" src="http://tmeister.net/starlight/starlight.swf" quality="high" bgcolor="#ffffff" wmode="transparent" menu="false" allowFullScreen="true" ></embed>
</object>
</div>
<p><span id="more-640"></span><br />
El archivo de configuración que se puede ver abajo, podemos configurar efecto global así como efectos por imagen etc etc.</p>
<p>Así que espero sus comentarios, <strong>¿Que características desearían que estuvieran disponibles?</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;starlight
	width=&quot;640&quot;
	height=&quot;320&quot;
	swfBackgroundColor=&quot;0xffffff&quot;
	backgroundColor=&quot;0xffffff&quot;
	backgroundAlpha=&quot;.8&quot;
	cornerRadius=&quot;10&quot;
	borderColor=&quot;0xf4f4f4&quot;
	borderAlpha=&quot;1&quot;
	defaultTransition=&quot;NORMAL_FROM_TOP&quot;
	defaultColumns=&quot;20&quot;
	defaultRows=&quot;1&quot;
	defaultTimeSlideEffect=&quot;.5&quot;
	defaultTimeSlideEffectDelay=&quot;.02&quot;
	shadow=&quot;true&quot;
	blurEffect=&quot;true&quot;
	&gt;
	&lt;timer
		enabled=&quot;true&quot;
		timetoWait=&quot;3&quot;
		color=&quot;0xffffff&quot;
		alpha=&quot;.3&quot;
	/&gt;
	&lt;shadow
		color=&quot;0xd4d4d4&quot;
		alpha=&quot;.8&quot;
		distance=&quot;10&quot;
		blurX=&quot;20&quot;
		blurY=&quot;20&quot;
		angle=&quot;90&quot;
	/&gt;
	&lt;navButton
		activeColor=&quot;0xffffff&quot;
		activeAlpha=&quot;.3&quot;
		activeBorderColor=&quot;0x000000&quot;
		activeBorderAlpha=&quot;.1&quot;
		inactiveColor=&quot;0xffffff&quot;
		inactiveAlpha=&quot;.2&quot;
		inactiveBorderColor=&quot;0x000000&quot;
		inactiveBorderAlpha=&quot;.1&quot;
	/&gt;
	&lt;preload
		color=&quot;0x000000&quot;
		alpha=&quot;.5&quot;
		thickness=&quot;2&quot;
	/&gt;
	&lt;images&gt;
		&lt;image src=&quot;http://tmeister.net/starlight/images/1.jpg&quot; /&gt;
		&lt;image src=&quot;http://tmeister.net/starlight/images/2.jpg&quot;
			transition=&quot;NORMAL_FROM_TOP&quot;
			columns=&quot;15&quot;
			rows=&quot;1&quot;
			timeSlideEffect=&quot;1&quot;
			timeSlideEffectDelay=&quot;.1&quot; /&gt;
		&lt;image src=&quot;http://tmeister.net/starlight/images/1.jpg&quot;
			transition=&quot;NORMAL_FROM_BOTTOM&quot;
			columns=&quot;10&quot;
			rows=&quot;10&quot;
			timeSlideEffect=&quot;.3&quot;
			timeSlideEffectDelay=&quot;.03&quot; /&gt;
		&lt;image src=&quot;http://tmeister.net/starlight/images/3.jpg&quot;
			transition=&quot;RANDOM_FROM_TOP&quot;
			columns=&quot;15&quot;
			rows=&quot;1&quot;
			timeSlideEffect=&quot;1&quot;
			timeSlideEffectDelay=&quot;.1&quot; /&gt;
	&lt;/images&gt;
&lt;/starlight&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2010/10/12/starlight-slideshow-freebie-preview/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Air 2.0 Conexi&#243;n IMAP mediante SecureSocket</title>
		<link>http://tmeister.net/2010/02/26/air-2-0-conexin-imap-mediante-securesocket/</link>
		<comments>http://tmeister.net/2010/02/26/air-2-0-conexin-imap-mediante-securesocket/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 01:56:24 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[AIR 2.0]]></category>
		<category><![CDATA[FlashBuilder]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=546</guid>
		<description><![CDATA[Una de las nuevas características de Adobe Air 2.0 es la conexión a servidores mediante sockets encriptados (SSL). Uno de los servicios mas comunes que utiliza una conexión encriptado son los proveedores de correo usando IMAP. Para este ejemplo vamos a conectarnos al servidor IMAP de Gmail y obtener el numero de mensajes nuevos y [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://tmeister.net/wp-content/uploads/2010/02/Adobe_Air-logo-8BE840B3A1.gif" alt="" title="Adobe_Air-logo-8BE840B3A1" width="200" height="200" class="alignright size-full wp-image-548" /><br />
Una de las nuevas características de Adobe Air 2.0 es la conexión a servidores mediante sockets encriptados (SSL).</p>
<p>Uno de los servicios mas comunes que utiliza una conexión encriptado son los proveedores de correo usando IMAP.</p>
<p>Para este ejemplo vamos a conectarnos al servidor IMAP de Gmail y obtener el numero de mensajes nuevos y mensajes en total que existen en nuestra cuenta.</p>
<p>Para fines prácticos de este ejemplo necesitamos:</p>
<ul>
<li>Una cuenta de Gmail, <a href="http://mail.google.com/mail/#settings/fwdandpop">con IMAP habilitado</a></li>
<li><a href="http://labs.adobe.com/technologies/flashbuilder4/">FlashBuilder</a></li>
<li><a href="http://labs.adobe.com/technologies/air2/">Adobe AIR 2.0</a></li>
</ul>
<p><span style="font-family: Georgia;">Lo primero es crear una interfaz sencilla en donde se pueda insertar el nombre de usuario, la contraseña, campos de output y un boton para iniciar el proceso.</span></p>
<pre class="brush: xml; light: true; title: ; notranslate">
	&lt;s:Label x=&quot;10&quot; y=&quot;17&quot; text=&quot;Gmail username:&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;45&quot; text=&quot;Gmail password:&quot;/&gt;
	&lt;s:TextInput y=&quot;10&quot; id=&quot;username_txt&quot; change=&quot;_username = username_txt.text&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:TextInput y=&quot;40&quot; id=&quot;password_txt&quot; change=&quot;_password = password_txt.text&quot; displayAsPassword=&quot;true&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:Button y=&quot;70&quot; label=&quot;Tell me!!&quot; click=&quot;start()&quot; right=&quot;10&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;100&quot; width=&quot;280&quot; id=&quot;result_txt&quot;/&gt;
	&lt;s:TextArea id=&quot;out_txt&quot; editable=&quot;false&quot; right=&quot;10&quot; bottom=&quot;10&quot; top=&quot;130&quot; left=&quot;10&quot;/&gt;
</pre>
<p><span id="more-546"></span></p>
<p>El resultado de esto se ve de esta forma:</p>
<div align="center">
<img src="http://tmeister.net/wp-content/uploads/2010/02/gmailSSL.png" alt="" title="gmailSSL" width="308" height="280" class="aligncenter size-full wp-image-547" />
</div>
<p>Despues de tener nuestra interfaz vamos a declarar todas la variables y constantes que vamos a necesitar:</p>
<pre class="brush: as3; light: true; title: ; notranslate">
			/******************************************************************
			 *	Datos de la cuenta (Gmail IMAP)
			 * ***************************************************************/

			private static const INCOMING_SERVER:String = &quot;imap.gmail.com&quot;;
			private static const PORT:int = 993;
			private var _username:String = &quot;&quot;;
			private var _password:String = &quot;&quot;;

			/******************************************************************
			 * Socket &amp;&amp; Stuff
			 * ***************************************************************/ 

			private var _server:Socket;
			private var _buffer:ByteArray;
			private var _action:String;
			private var _totalMessages:String;
			private var _newMessages:String;

			/******************************************************************
			 * Respuestas del servidor (para filtar el contenido)
			 * http://tools.ietf.org/html/draft-gahrns-imap-namespace-00
			 * ****************************************************************/

			private static const CONNECT:String = &quot;*&quot;;
			private static const LOGIN:String = &quot;A002&quot;;
			private static const STATUS:String = &quot;A006&quot;;
			private static const CRLF:String = &quot;\r\n&quot;;
			private var _regSearch:RegExp = RegExp(&quot;\\&quot;+_action+&quot;\\r\\n&quot;);
</pre>
<p>Aqui hay un par de cosas que debo resaltar:</p>
<pre class="brush: as3; light: true; title: ; notranslate">
			private var _buffer:ByteArray;
</pre>
<p>En esta variable almacenaremos las respuestas que nos envié el servidor.</p>
<pre class="brush: as3; light: true; title: ; notranslate">
			private var _regSearch:RegExp = RegExp(&quot;\\&quot;+_action+&quot;\\r\\n&quot;);
</pre>
<p>Con esta expresion regular verificaremos si el mensaje que recibimos del servidor es util para nosotros.</p>
<pre class="brush: as3; light: true; title: ; notranslate">
			private static const CONNECT:String = &quot;*&quot;;
			private static const LOGIN:String = &quot;A002&quot;;
			private static const STATUS:String = &quot;A006&quot;;
</pre>
<p>Estas constantes son los identificadores de los mensajes que se mandan desde y hacia el servidor para saber mas de estos identificadores recomiendo esta lectura <a href="http://tools.ietf.org/html/draft-gahrns-imap-namespace-00">http://tools.ietf.org/html/draft-gahrns-imap-namespace-00</a></p>
<p>Ahora nos queda inicializar nuestro socket y crear los eventos que usaremos para comunicarnos con el servidor</p>
<pre class="brush: as3; light: true; title: ; notranslate">
				_server = new SecureSocket();
				_server.addEventListener(Event.CONNECT, onConnect);
				_server.addEventListener(Event.CLOSE, onClose);
				_server.addEventListener(ProgressEvent.SOCKET_DATA, onData);
				_server.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
</pre>
<p>El único cambio con respecto a trabajar con Sockets sin encriptar es el constructor de la clase en lugar de usar </p>
<pre class="brush: as3; light: true; title: ; notranslate">
				_server = new Socket();
</pre>
<p>Ahora debemos utilizar</p>
<pre class="brush: as3; light: true; title: ; notranslate">
				_server = new SecureSocket();
</pre>
<p>Así de simple; Bien, hemos seteado los listeners para CONNECT, SOCKET_DATA, CLOSE y IO_ERROR vamos a concentranos solamente en SOCKET_DATA que es el evento que se dispara al momento de recibir un mensaje del servidor.</p>
<pre class="brush: as3; light: true; title: ; notranslate">
			private function onData(e:ProgressEvent):void
			{
				out_txt.text += &quot;Data &quot; + e+&quot;\n&quot;;
				var socket:Socket = e.target as Socket;
				var bufferString:String;
				socket.readBytes(_buffer, _buffer.length, socket.bytesAvailable);
				bufferString = _buffer.toString();
				out_txt.text += &quot;SERVER: &quot; + _buffer.toString()+&quot;\n&quot;;
				if (  bufferString.search( _regSearch ) )
				{
					out_txt.text += &quot;Es una respuesta valida parsea\n&quot;;
					parseResponse();
				}
				cursorManager.removeBusyCursor()
			}
</pre>
<p>En esta función recibimos el evento y tomamos el contenido del mensaje mediante el método readBytes y lo almacenamos en la variable _buffer</p>
<pre class="brush: as3; light: true; title: ; notranslate">
				socket.readBytes(_buffer, _buffer.length, socket.bytesAvailable);
</pre>
<p>Verificamos que el mensaje corresponda a nuestra petición, en este caso solo usamos 3 peticiones CONNECT, LOGIN, STATUS y si el mensaje es correcto parseamos el contenido.</p>
<p>El primer mensaje que recibimos del servidor es el de conexión</p>
<p><strong>SERVER: * OK Gimap ready for requests from 189.216.40.184 14if7528374pzk.62</strong></p>
<p>Una vez que estemos conectados mandamos nuestras credenciales para que el servidor nos autentique y cambiamos el mensaje a LOGIN indicando que estamos esperando el mensaje de respuesta de la solicitud de logueo.</p>
<pre class="brush: as3; light: true; title: ; notranslate">
				if ( _action == CONNECT )
				{
					out_txt.text += &quot;Es es tag de conexion manda login\n&quot;;
					_server.writeUTFBytes(LOGIN + &quot; LOGIN &quot; + _username + &quot; &quot; + _password + CRLF);
					_action = LOGIN;
					_server.flush();
					return;
				}
</pre>
<p>Se envia el mensaje y de inmediato recibimos la respuesta del servidor, en caso de login correcto:</p>
<p><strong>A002 OK tmeister@gmail.com authenticated (Success)</strong></p>
<p>Si es incorrecto:</p>
<p><strong>A002 NO [ALERT] Invalid credentials (Failure)</strong></p>
<p>Con esto es muy fácil saber el resultado de la operación, usemos indexOf para saber si la palabra &#8220;OK&#8221; existe</p>
<pre class="brush: as3; light: true; title: ; notranslate">
				if ( _action == LOGIN )
				{
					out_txt.text += &quot;Es la respuesta del login\n&quot;;
					if( bufferString.indexOf(&quot;OK&quot;) != -1 )
					{
						out_txt.text += &quot;El login es correcto, estamos autenticados - Pedir correos sin leer\n&quot;;
						_action = STATUS;
						_server.writeUTFBytes(STATUS + &quot; STATUS inbox (MESSAGES UNSEEN)&quot; + CRLF);
						_server.flush();
					}else
					{
						out_txt.text += &quot;Ooops!! Las credenciales no son validas.\n&quot;;
						Alert.show(&quot;Ooops!! Las credenciales no son validas.&quot;, &quot;Error&quot;);
						_server.close();
					}
					return;
				}
</pre>
<p>Excelente estamos autenticados, Ahora que? solo nos falta pedir el estatus de la cuenta pidiendo los mensajes totales y los mensajes nuevos de la carpeta Inbox</p>
<pre class="brush: as3; light: true; title: ; notranslate">
						_server.writeUTFBytes(STATUS + &quot; STATUS inbox (MESSAGES UNSEEN)&quot; + CRLF);
</pre>
<p>El ultimo paso es recibir el mensaje del servidor con la información que pedimos y parsearla, al ser texto solo tenemos que usar indexOf y substring para acceder a lo que nos interesa</p>
<p><strong>STATUS &#8220;inbox&#8221; (MESSAGES 61298 UNSEEN 5)</strong></p>
<pre class="brush: as3; light: true; title: ; notranslate">
				if( _action == STATUS )
				{
					out_txt.text += &quot;Es la respuesta del Status &quot; + bufferString+&quot;\n&quot;;
					var startSub:int = bufferString.indexOf(&quot;(&quot;);
					var endSub:int = bufferString.indexOf(&quot;)&quot;);
					var message:String = bufferString.substring(startSub+1, endSub);
					var slides:Array = message.split(&quot; &quot;);
					var count:int = 0;
					for each( var slide:String in slides )
					{
						switch( slide )
						{
							case &quot;MESSAGES&quot;:
								_totalMessages = slides[count + 1];
								break;
							case &quot;UNSEEN&quot;:
								_newMessages = slides[count + 1];
								break;
						}
						count++;
					}
					result_txt.text = _newMessages + &quot; mensajes nuevos, de &quot; + _totalMessages + &quot; en total&quot;;
					out_txt.text += _totalMessages;
					out_txt.text += _newMessages;
					_action = null;
					_server.close();
				}
			}
</pre>
<p>Sin duda, lo mas complejo al momento de trabajar con Sockets es saber utilizar e implementar el protocolo de comunicación pero esa ya es otra historia.</p>
<p>Por ultimo les dejo el código completo</p>
<pre class="brush: as3; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:WindowedApplication xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
					   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
					   xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
					   creationComplete=&quot;init(event)&quot;
					    width=&quot;300&quot; height=&quot;250&quot;&gt;
	&lt;fx:Script&gt;
		&lt;![CDATA[
			import flash.events.Event;
			import flash.events.IOErrorEvent;
			import flash.events.MouseEvent;
			import flash.events.ProgressEvent;
			import flash.net.SecureSocket;
			import flash.net.Socket;
			import flash.utils.ByteArray;

			import mx.controls.Alert;
			import mx.events.FlexEvent;

			private static const INCOMING_SERVER:String = &quot;imap.gmail.com&quot;;
			private static const PORT:int = 993;
			private var _username:String = &quot;&quot;;
			private var _password:String = &quot;&quot;;

			private var _server:Socket;
			private var _buffer:ByteArray;
			private var _action:String;
			private var _totalMessages:String;
			private var _newMessages:String;

			private static const CONNECT:String = &quot;*&quot;;
			private static const LOGIN:String = &quot;A002&quot;;
			private static const STATUS:String = &quot;A006&quot;;
			private static const CRLF:String = &quot;\r\n&quot;;
			private var _regSearch:RegExp = RegExp(&quot;\\&quot;+_action+&quot;\\r\\n&quot;);

			protected function init(event:FlexEvent):void
			{

				_server = new SecureSocket();
				_server.addEventListener(Event.CONNECT, onConnect);
				_server.addEventListener(Event.CLOSE, onClose);
				_server.addEventListener(ProgressEvent.SOCKET_DATA, onData);
				_server.addEventListener(IOErrorEvent.IO_ERROR, onIOError);

				_buffer = new ByteArray()
			}
			private function onConnect(e:Event):void
			{
				out_txt.text += &quot;Conexion establecida &quot; + e.toString()+&quot;\n&quot;;
			}
			private function onClose(e:Event):void
			{
				out_txt.text += &quot;Conexion cerrada &quot; + e+&quot;\n&quot;;
			}
			private function onData(e:ProgressEvent):void
			{
				out_txt.text += &quot;Data &quot; + e+&quot;\n&quot;;
				var socket:Socket = e.target as Socket;
				var bufferString:String;
				socket.readBytes(_buffer, _buffer.length, socket.bytesAvailable);
				bufferString = _buffer.toString();
				out_txt.text += &quot;SERVER: &quot; + _buffer.toString()+&quot;\n&quot;;
				if (  bufferString.search( _regSearch ) )
				{
					out_txt.text += &quot;Es una respuesta valida parsea\n&quot;;
					parseResponse();
				}
				cursorManager.removeBusyCursor()
			}
			private function onIOError(e:IOErrorEvent):void
			{
				out_txt.text += &quot;IOError &quot; + e+&quot;\n&quot;;
			}

			private function parseResponse():void
			{
				var bufferString:String = _buffer.toString();
				_buffer.clear();
				if ( _action == CONNECT )
				{
					out_txt.text += &quot;Es es tag de conexion manda login\n&quot;;
					_server.writeUTFBytes(LOGIN + &quot; LOGIN &quot; + _username + &quot; &quot; + _password + CRLF);
					_action = LOGIN;
					_server.flush();
					return;
				}
				if ( _action == LOGIN )
				{
					out_txt.text += &quot;Es la respuesta del login\n&quot;;
					if( bufferString.indexOf(&quot;OK&quot;) != -1 )
					{
						out_txt.text += &quot;El login es correcto, estamos autenticados - Pedir correos sin leer\n&quot;;
						_action = STATUS;
						_server.writeUTFBytes(STATUS + &quot; STATUS inbox (MESSAGES UNSEEN)&quot; + CRLF);
						_server.flush();
					}else
					{
						out_txt.text += &quot;Ooops!! Las credenciales no son validas.\n&quot;;
						Alert.show(&quot;Ooops!! Las credenciales no son validas.&quot;, &quot;Error&quot;);
						_server.close();
					}
					return;
				}
				if( _action == STATUS )
				{
					out_txt.text += &quot;Es la respuesta del Status &quot; + bufferString+&quot;\n&quot;;
					var startSub:int = bufferString.indexOf(&quot;(&quot;);
					var endSub:int = bufferString.indexOf(&quot;)&quot;);
					var message:String = bufferString.substring(startSub+1, endSub);
					var slides:Array = message.split(&quot; &quot;);
					var count:int = 0;
					for each( var slide:String in slides )
					{
						switch( slide )
						{
							case &quot;MESSAGES&quot;:
								_totalMessages = slides[count + 1];
								break;
							case &quot;UNSEEN&quot;:
								_newMessages = slides[count + 1];
								break;
						}
						count++;
					}
					result_txt.text = _newMessages + &quot; mensajes nuevos, de &quot; + _totalMessages + &quot; en total&quot;;
					out_txt.text += _totalMessages;
					out_txt.text += _newMessages;
					_action = null;
					_server.close();
				}
			}

			private function start():void
			{
				out_txt.text = &quot;iniciando Conexion\n&quot;;
				if( _server != null &amp;&amp; _server.connected )
				{
					_server.close();
				}
				if( _username.length &amp;&amp; _password.length )
				{
					_action = CONNECT;
					_server.connect(INCOMING_SERVER, PORT);
					cursorManager.setBusyCursor();
				}else
				{
					Alert.show(&quot;Escribe tus credenciales..&quot;, &quot;Error&quot;);
				}
			}

		]]&gt;
	&lt;/fx:Script&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;17&quot; text=&quot;Gmail username:&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;45&quot; text=&quot;Gmail password:&quot;/&gt;
	&lt;s:TextInput y=&quot;10&quot; id=&quot;username_txt&quot; change=&quot;_username = username_txt.text&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:TextInput y=&quot;40&quot; id=&quot;password_txt&quot; change=&quot;_password = password_txt.text&quot; displayAsPassword=&quot;true&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:Button y=&quot;70&quot; label=&quot;Tell me!!&quot; click=&quot;start()&quot; right=&quot;10&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;100&quot; width=&quot;280&quot; id=&quot;result_txt&quot;/&gt;
	&lt;s:TextArea id=&quot;out_txt&quot; editable=&quot;false&quot; right=&quot;10&quot; bottom=&quot;10&quot; top=&quot;130&quot; left=&quot;10&quot;/&gt;
&lt;/s:WindowedApplication&gt;
</pre>
<h1>Descarga</h1>
<p>Rendering of template dTemplate.php failed</p>
<p>Espero les sea de ayuda y nos estamos leyendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2010/02/26/air-2-0-conexin-imap-mediante-securesocket/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe Influxis Latin Flash Tour</title>
		<link>http://tmeister.net/2009/10/22/adobe-influxis-latin-flash-tour/</link>
		<comments>http://tmeister.net/2009/10/22/adobe-influxis-latin-flash-tour/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 03:16:56 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=455</guid>
		<description><![CDATA[Evento enfocado a todos los entusiastas de la Plataforma Flash en México. Se hablarán de las próximas novedades Flash para iPhone, Flash CS5, Flash Builder, Flash Catalyst y más&#8230; Fecha: 18 de Noviembre 2009. Hora: 9:00 am. a 2:00 pm. Lugar: Universidad Iberoamericana. Dirección: Prolongación Paseo de la Reforma 880, Lomas de Santa Fe, Mexico [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Evento enfocado a todos los entusiastas de la Plataforma Flash en México. Se hablarán de las próximas novedades Flash para iPhone, Flash CS5, Flash Builder, Flash Catalyst y más&#8230;</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">
<div align='center'>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><a title="Sitio del Evento" href="http://latinflashtourmx.eventbrite.com" target="_blank"><img class="aligncenter size-full wp-image-463" title="Sitio del Evento" src="http://tmeister.net/wp-content/uploads/2009/10/latinflash.jpg" alt="latinflash" width="450" height="130" /></a></p>
</div>
<p><strong>Fecha:</strong> 18 de Noviembre 2009.<br />
<strong>Hora:</strong> 9:00 am. a 2:00 pm.<br />
<strong>Lugar:</strong> Universidad Iberoamericana.<br />
<strong>Dirección:</strong> Prolongación Paseo de la Reforma 880, Lomas de Santa Fe, Mexico D.F.</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><strong>Patrocinado por:</strong></p>
<p><a style="color: #3a3a3a; text-decoration: underline;" href="http://www.adobe.com/" target="_blank">Adobe</a> | <a style="color: #3a3a3a; text-decoration: underline;" href="http://influxis.com/" target="_blank">Influxis</a></p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Twitter: <a style="color: #3a3a3a; text-decoration: underline;" href="http://twitter.com/latinflashtour" target="_blank">@latinflashtour</a> hashtag oficial #latinflashtour</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><span style="text-decoration: underline;">Para ingresar al evento se debe presentar impreso el registro</span></p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><strong>Conferencistas Magistrales:</strong></p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Todos ellos evangelistas de Adobe para la Plataforma Flash.</p>
<ul>
<li>Lee Brimelow (<a style="color: #3a3a3a; text-decoration: underline;" href="http://theflashblog.com/" target="_blank">The Flash Blog</a> &amp; <a style="color: #3a3a3a; text-decoration: underline;" href="http://www.gotoandlearn.com/" target="_blank">GotoAndLearn</a>)</li>
<li>Enrique Duvos (<a style="color: #3a3a3a; text-decoration: underline;" href="http://www.duvos.com/" target="_blank">RIA Excellence</a> &amp; <a style="color: #3a3a3a; text-decoration: underline;" href="http://www.madeinflex.com/" target="_blank">Made In Flex</a>)</li>
<li>Mike Chambers (<a style="color: #3a3a3a; text-decoration: underline;" href="http://www.mikechambers.com/blog/" target="_blank">Mike&#8217;s Blog</a>)</li>
</ul>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Organizadores:</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><a style="color: #3a3a3a; text-decoration: underline;" href="http://www.riactive.com/" target="_blank">RIActive</a> | <a style="color: #3a3a3a; text-decoration: underline;" href="http://www.riahispano.org/" target="_blank">RIAhispano</a> | <a style="color: #3a3a3a; text-decoration: underline;" href="http://flashmc.org/">Flash MC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/10/22/adobe-influxis-latin-flash-tour/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tweckr, Nuevo proyecto en linea</title>
		<link>http://tmeister.net/2009/08/05/tweckr-nuevo-proyecto-en-linea/</link>
		<comments>http://tmeister.net/2009/08/05/tweckr-nuevo-proyecto-en-linea/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 15:44:51 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Tweckr]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=445</guid>
		<description><![CDATA[En las ultimas semanas he estado trabajando en un nuevo proyecto llamado Tweckr, el cual es un buscador de imágenes en tiempo real para twitter. El día de hoy fue el lanzamiento oficial de este nuevo proyecto y los invito a que lo visiten y me dejen sus impresiones, comentarios, o sugerencias en el blog [...]]]></description>
			<content:encoded><![CDATA[<p>En las ultimas semanas he estado trabajando en un nuevo proyecto llamado Tweckr, el cual es un buscador de imágenes en tiempo real para twitter.</p>
<p>El día de hoy fue el lanzamiento oficial de este nuevo proyecto y los invito a que lo visiten y me dejen sus impresiones, comentarios, o sugerencias en el <a href="http://blog.tweckr.com/">blog de desarrollo</a> del proyecto donde pueden encontrar los <a href="http://blog.tweckr.com/2009/08/hello-world-tweckr-is-alive/">detalles del lanzamiento</a> .</p>
<p>En verdad agradeceré todo el feedback.</p>
<p>Enlace: <a href="http://tweckr.com/">Tweckr, The eyes of twitter</a><br />
Blog: <a href="http://blog.tweckr.com/">Tweckr, The eyes of twitter &#8211; Dev Blog.</a><br />
Twitter: <a href="http://twitter.com/tweckr">@Tweckr</a></p>
<p>Saludos! <img src='http://tmeister.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/08/05/tweckr-nuevo-proyecto-en-linea/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe en Vivo 2009 en su version onLine</title>
		<link>http://tmeister.net/2009/07/08/adobe-en-vivo-2009-en-su-version-online/</link>
		<comments>http://tmeister.net/2009/07/08/adobe-en-vivo-2009-en-su-version-online/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 16:12:04 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=432</guid>
		<description><![CDATA[Como ya saben, Adobe en Vivo es una seria de conferencias internacionales que son de forma presencial organizadas por Adobe User Group Perú (Garage Flash), invitando a los expositores a pasar una semana en Perú, dando conferencias gratuitas y talleres privados. Como este evento se hace de forma anual, hemos pensado hacer una versión onLine [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya saben, <a href="http://www.garageflash.com/adobe-en-vivo-version-online-del-14-al-18-de-julio/" target="_blank">Adobe en Vivo</a> es una seria de conferencias internacionales que son de forma presencial organizadas por <a href="http://www.garageflash.com/" target="_blank">Adobe User Group Perú (Garage Flash)</a>, invitando a los expositores a pasar una semana en Perú, dando conferencias gratuitas y talleres privados. Como este evento se hace de forma anual, hemos pensado hacer una versión onLine con 21 conferencistas entre manager, co-manager, lideres de comunidad y de opinión web.</p>
<p><a href="http://tmeister.net/wp-content/uploads/2009/07/aev_logo.png"><img class="aligncenter size-full wp-image-433" title="aev_logo" src="http://tmeister.net/wp-content/uploads/2009/07/aev_logo.png" alt="aev_logo" width="272" height="93" /></a></p>
<h2></h2>
<h1>Martes 14</h1>
<p><strong>Realidad Aumentada</strong><br />
Perú &#8211; <a href="http://www.garageflash.com/" target="_blank">Elder Vásquez</a> (eldervaz)</p>
<p><strong>Entrelazado vs progresivo en After Effects</strong><br />
España &#8211; <a href="http://www.adobelabo.com/" target="_blank">Jorge Mochon</a></p>
<p><strong>Contenido dinámico con InDesign</strong><br />
Colombia &#8211; <a href="http://xpert.com.co/" target="_blank">Marlon Ceballos</a></p>
<p><strong>Haciendo la Web más Dinámica con Premiere, Encore y After Effects</strong><br />
Rep.Dominicana &#8211; <a href="http://www.sdq.com.do/" target="_blank">Luis Sosa</a></p>
<h1>Miércoles 15</h1>
<p><strong>Experiencia del Usuario</strong><br />
México &#8211; <a href="http://www.activ.com.mx/" target="_blank">Edgar Parada</a></p>
<p><strong>Coldfusion 9</strong><br />
Ecuador &#8211; <a href="http://www.adobeenvivo.com/" target="_blank">Michael Borbor</a></p>
<p><strong>LiveCycle</strong><br />
Chile &#8211; <a href="http://www.garageflash.com/" target="_blank">Héctor Castro</a></p>
<p><strong>Técnicas de Alto Rendimiento en Sitios Web</strong><br />
Argentina &#8211; <a href="http://groups.adobe.com/groups/93e61be362/summary" target="_blank">Maximiliano R. Firtman</a></p>
<h1>Jueves 16</h1>
<p><strong>AIR vs Flash Player API&#8217;s</strong><br />
España &#8211; <a href="http://www.joangarnet.com/blog" target="_blank">Joan Garnet</a></p>
<p><strong>Trabajo con Adobe BrowserLab</strong><br />
España &#8211; <a href="http://www.dwug.es/" target="_blank">Andres Cayon</a></p>
<p><strong>ActionScript 3.0</strong><br />
México &#8211; <a href="http://www.activ.com.mx/" target="_blank">Alberto Gonzalez</a></p>
<p><strong>Soluciones para real-time applications</strong><br />
Perú &#8211; <a href="http://funciton.com/" target="_blank">Fernando Flórez</a> (fernando)</p>
<h1>Viernes 17</h1>
<p><strong>Mobile Video &#8211; Dandelion Player for Flash Lite</strong><br />
España &#8211; <a href="http://www.blocketpc.com/" target="_blank">Raul Jimenez</a> (elecash)</p>
<p><strong>Juegos en Flash Lite</strong><br />
España &#8211; <a href="http://www.blocketpc.com/" target="_blank">Marcos González</a></p>
<p><strong>Flash Builder 4 &#8211; Data Centric Development</strong><br />
España &#8211; <a href="http://groups.adobe.com/groups/d542f14d2e/summary" target="_blank">David Lopez</a></p>
<p><strong>ADOBE</strong><br />
EEUU &#8211; <a href="http://groups.adobe.com/pages/home" target="_blank">John Koch</a> &#8211; Community Manager<br />
International Developer Relations Manager</p>
<h1>Sábado 18</h1>
<p><strong>Flash Catalyst</strong><br />
España &#8211; <a href="http://groups.adobe.com/groups/3924ff1ac2/summary" target="_blank">Guillermo de la Iglesia</a> (Zguillez)</p>
<p><strong>El impacto de los Medios sociales</strong><br />
Bolivia &#8211; <a href="http://www.aeromental.com/" target="_blank">Daniel Sempértegui</a> (DanielSemper)</p>
<p><strong>Semántica en XHTML</strong><br />
Perú &#8211; <a href="http://aprendiendoweb.com/" target="_blank">Germán Martínez</a></p>
<p><strong>Promete algo útil</strong><br />
Colombia &#8211; <a href="http://foros.cristalab.com/" target="_blank">Freddie Vega</a> (freddie)</p>
<p><strong>Progressive Enhancement</strong><br />
Venezuela &#8211; <a href="http://thefricky.wordpress.com/" target="_blank">César Frick</a> (thefricky)</p>
<p><strong>Equipos Web en el Mundo Real™</strong><br />
Perú &#8211; <a href="http://indexante.com/" target="_blank">César Soplín</a> (cesars)<br />
Esta conferencia será transmitida por Adobe Connect, y para ello solo tienes que ingresar a la dirección web que será publicada el mismo día del evento.<br />
Verifica la fecha y hora de cada charla en:  <a href="http://www.adobenvivo.com/online/" target="_blank">http://www.adobenvivo.com/online/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/07/08/adobe-en-vivo-2009-en-su-version-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweetcoding, Unos meses atrasado, ve el resultado =)</title>
		<link>http://tmeister.net/2009/07/03/tweetcoding-unos-meses-atrasado-ve-el-resultado/</link>
		<comments>http://tmeister.net/2009/07/03/tweetcoding-unos-meses-atrasado-ve-el-resultado/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 00:38:16 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=418</guid>
		<description><![CDATA[Hace meses @gskinner convoco a un concurso en donde el reto era hacer una pieza de codigo de menos de 140 caracteres que pudiera ser enviado usando un tweet, Obviamente este codigo debe hacer algo XD, en fin hoy despues de extrañar flash (Ultimamente solo estoy haciendo PHP), me puse a jugar y el resultado [...]]]></description>
			<content:encoded><![CDATA[<p>Hace meses <a href="http://twitter.com/gskinner/">@gskinner</a> convoco a un <a href="http://gskinner.com/playpen/tweetcoding.html">concurso</a> en donde el reto era hacer una pieza de codigo de menos de 140 caracteres que pudiera ser enviado usando un tweet, Obviamente este codigo debe hacer algo XD, en fin hoy despues de extrañar flash (Ultimamente solo estoy haciendo PHP), me puse a jugar y el resultado es este.</p>
<p><strong>La forma del dibujo cambia con cada refresh asi actualiza el navegador unas cuantas veces para que veas la diferencia. <img src='http://tmeister.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </strong></p>
<p><strong><span id="more-418"></span><br />
</strong></p>
<p>[FLASH]http://tmeister.net/wp-content/uploads/2009/07/tweet.swf, 400,400[/FLASH]</p>
<p><a href="http://twitter.com/Tmeister/status/2462268077">Aqui encuentran el Tweet original.</a></p>
<p>Y este el codigo completo</p>
<p>[as]</p>
<p>g=graphics;<br />
mt=g.moveTo;<br />
lt=g.lineTo;<br />
ls=g.lineStyle;<br />
m=Math;<br />
r=m.random;<br />
s=m.sin;<br />
i=0;<br />
o={};</p>
<p>function f(e)<br />
{<br />
if(o.k==null){a=3000;c=.1;x=y=200;o.k=r()*20}i-=.2;w=i*s(a*.1);e=i*m.cos(a*.1);g.beginFill(r()*000099,c);g.drawCircle(w,e,7);c+=.0002;a-=o.k<br />
}<br />
addEventListener(&#8220;enterFrame&#8221;,f);</p>
<p>[/as]</p>
<p>Saludos <img src='http://tmeister.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/07/03/tweetcoding-unos-meses-atrasado-ve-el-resultado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Blueprint, Referencias a la mano.</title>
		<link>http://tmeister.net/2009/06/12/adobe-blueprint-referencias-a-la-mano/</link>
		<comments>http://tmeister.net/2009/06/12/adobe-blueprint-referencias-a-la-mano/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 19:04:59 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=383</guid>
		<description><![CDATA[El día de ayer descubrí gracias a un tweet hecho por @yacaFx, un plugin para Flex y Flash Builder llamado BluePrint. Blueprint como ya dije es un plugin que se instala en Flex Builder o Flash Builder el cual permite un acceso rápido a referencias de código sobre un componente, clase o función haciendo la [...]]]></description>
			<content:encoded><![CDATA[<p>El día de ayer descubrí gracias a un <a href="http://twitter.com/yacaFx/status/2124361268" target="_blank">tweet </a>hecho por <a href="http://twitter.com/yacaFx/">@yacaFx</a>, un <a href="http://labs.adobe.com/technologies/blueprint/">plugin</a> para Flex y Flash Builder llamado <a href="http://labs.adobe.com/technologies/blueprint/">BluePrint</a>.</p>
<p><a href="http://labs.adobe.com/technologies/blueprint/">Blueprint </a>como ya dije es un plugin que se instala en Flex Builder o Flash Builder el cual permite un acceso rápido a referencias de código sobre un componente, clase o función haciendo la vida de los desarrolladores un poco mas sencilla (Si eso es posible :p ).</p>
<p>Con una combinacion de teclas ALT+b para Windows o  CTRL+b para Mac, se lanza una ventana de ayuda con las referencias de codigo del elemento seleccionado.</p>
<p>Blueprint se<a href="http://labs.adobe.com/wiki/index.php/Blueprint:Installation_Instructions"> instala de una manera simple y sencilla</a> y sin duda es de gran ayuda.</p>
<p><a href="http://tmeister.net/wp-content/uploads/2009/06/blueprint.jpg"><img class="aligncenter size-full wp-image-384" title="blueprint" src="http://tmeister.net/wp-content/uploads/2009/06/blueprint.jpg" alt="blueprint" width="570" height="425" /></a></p>
<p>[Enlace] <a href="http://labs.adobe.com/technologies/blueprint/">Blueprint</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/06/12/adobe-blueprint-referencias-a-la-mano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips para mejorar el rendimiento de aplicaciones AIR</title>
		<link>http://tmeister.net/2009/05/07/tips-para-mejorar-el-rendimiento-de-aplicaciones-air/</link>
		<comments>http://tmeister.net/2009/05/07/tips-para-mejorar-el-rendimiento-de-aplicaciones-air/#comments</comments>
		<pubDate>Thu, 07 May 2009 21:53:07 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=359</guid>
		<description><![CDATA[Hoy, a partir de un post en el blog de Grant Skinner en donde habla de que el rendimiento de las aplicaciones creadas en AIR no es la optima, han salido a la luz varias recomendaciones o &#8220;Buenas Practicas&#8221; que debemos tener en cuenta al momento de desarrollar una aplicación AIR con Flash. Sin duda [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy, a partir de un <a href="http://www.gskinner.com/blog/archives/2009/05/idle_cpu_usage.html">post en el blog </a>de <a href="http://www.gskinner.com/">Grant Skinner</a> en donde habla de que el rendimiento de las aplicaciones creadas en AIR no es la optima, han salido a la luz varias recomendaciones o &#8220;Buenas Practicas&#8221; que debemos tener en cuenta al momento de desarrollar una aplicación AIR con Flash.</p>
<p>Sin duda son puntos sólidos a temer en cuenta, aquí un par de links que hablan sobre el tema.</p>
<ul>
<li><a href="http://arno.org/arnotify/2009/05/writing-well-behaved-efficient-air-applications/">Writing well-behaved, efficient, AIR applications</a></li>
<li><a href="http://blogs.adobe.com/air/2009/05/performance_tips_for_adobe_air.html">Performance Tips for Adobe AIR </a></li>
</ul>
<p>Saludos! <img src='http://tmeister.net/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/05/07/tips-para-mejorar-el-rendimiento-de-aplicaciones-air/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Facebook &amp; Adobe: Creando aplicaciones sociales con Flash.</title>
		<link>http://tmeister.net/2009/03/31/facebook-adobe-creando-aplicaciones-sociales-con-flash/</link>
		<comments>http://tmeister.net/2009/03/31/facebook-adobe-creando-aplicaciones-sociales-con-flash/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 23:54:05 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[connect]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=295</guid>
		<description><![CDATA[El día de hoy Facebook &#38; Adobe anunciaron una sociedad y han lanzado una librería para Flash, esto es para hacer la vida del desarrollador un poco más fácil (Si eso es posible ) al momento de crear aplicaciones sociales basadas en el API de Facebook. Al día de hoy ya existen varias librerías para [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy <a href="http://facebook.com/">Facebook</a> &amp; <a href="http://www.adobe.com">Adobe</a> anunciaron una sociedad y han lanzado una <a href="http://code.google.com/p/facebook-actionscript-api/">librería para Flash</a>, esto es para hacer la vida del desarrollador un poco más fácil (Si eso es posible <img src='http://tmeister.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) al momento de crear aplicaciones sociales basadas en el <a href="http://wiki.developers.facebook.com/index.php/API">API de Facebook</a>.</p>
<p>Al día de hoy ya existen varias librerías para consumir el API de facebook en  AS3, pero están incompletas, son muy bugies etc., Es por ello que facebook de asocio con Adobe para crear una librería de AS3 que este a la altura.</p>
<p>Esta librería es oficial y se une a la lista de librerías oficiales, PHP, iPhone y javascript.</p>
<p>Sin duda una de las más grandes ventajas de ser una librería oficial es el hecho de que cuenta con gran documentación e información.</p>
<p>El link de descarga de la librería es  <a href="http://code.google.com/p/facebook-actionscript-api/">ActionScript 3.0 Client Library for Facebook</a><br />
<a href="http://wiki.developers.facebook.com/index.php/Flash/ActionScript">Documentación oficial de facebook</a><br />
<a href="http://www.adobe.com/devnet/facebook/">Documentación oficial de Adobe</a></p>
<p>Bien, con esto tenemos para jugar por un buen tiempo; Así que a programar se ha dicho <img src='http://tmeister.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2009/03/31/facebook-adobe-creando-aplicaciones-sociales-con-flash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Acceder el Stage desde cualquier clase AS3</title>
		<link>http://tmeister.net/2008/11/13/acceder-el-stage-desde-cualquier-clase-as3/</link>
		<comments>http://tmeister.net/2008/11/13/acceder-el-stage-desde-cualquier-clase-as3/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 22:48:06 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Clases]]></category>
		<category><![CDATA[singlenton]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=224</guid>
		<description><![CDATA[Al trabajar con clases AS3 en nuestros proyectos hay ocasiones en los que debemos acceder al stage principal de nuestra aplicación desde clases que no extienden a “DisplayObject”, haciendo que debamos pasar como parámetro dicho stage a las clases, esto funciona pero en realidad es un poco “sucio”. Una solución simple es crear una clase [...]]]></description>
			<content:encoded><![CDATA[<p>Al trabajar con clases AS3 en nuestros proyectos hay ocasiones en los que debemos acceder al stage principal de nuestra aplicación desde clases que no extienden a  “DisplayObject”, haciendo que debamos pasar como parámetro dicho stage a las clases, esto funciona pero en realidad es un poco “sucio”.</p>
<p>Una solución simple es crear una clase singleton, en la cual, podemos almacenar no solo el stage principal, sino cualquier otro valor que necesitemos en varias clases. Algo así como _global de AS2, lo recuerdan?<br />
Aquí la clase</p>
<p>[as]<br />
package net.tmeister.utils<br />
{<br />
	public dynamic class Global<br />
	{<br />
		private static var global : Global</p>
<p>		public static function getInstance() : Global<br />
		{<br />
			if ( global == null )<br />
			{<br />
				global = new Global( arguments.callee );<br />
			}<br />
			return global;<br />
		}</p>
<p>		public function Global( caller : Function = null )<br />
		{<br />
			if ( caller != Global.getInstance )<br />
			{<br />
				throw new Error (&#8220;Global is a singleton class, use getInstance() instead&#8221;);<br />
			}<br />
			if ( Global.global != null )<br />
			{<br />
				throw new Error( &#8220;Only one Global instance should be instantiated&#8221; );<br />
			}<br />
		}<br />
	}<br />
}<br />
[/as]</p>
<p>Y su modo de uso.</p>
<p>[as]<br />
package<br />
{<br />
	import flash.display.MovieClip;<br />
	import net.tmeister.utils.Global<br />
	public class Main extends MovieClip<br />
	{<br />
		private var global:Global;</p>
<p>		public function Main()<br />
		{<br />
			global = Global.getInstance();<br />
			global.stage = stage<br />
			trace(&#8216;global.stage&#8217; + global.stage)<br />
			global.algunOtroValor = new MovieClip()<br />
			trace(&#8216;global.algunOtroValor &#8216; + global.algunOtroValor)<br />
		}<br />
	}<br />
}<br />
[/as]</p>
<p>Simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2008/11/13/acceder-el-stage-desde-cualquier-clase-as3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flash CS4, A la vuelta de la esquina.</title>
		<link>http://tmeister.net/2008/10/10/flash-cs4-a-la-vuelta-de-la-esquina/</link>
		<comments>http://tmeister.net/2008/10/10/flash-cs4-a-la-vuelta-de-la-esquina/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 23:14:09 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=213</guid>
		<description><![CDATA[Como ya sabrán, la nueva suite de Adobe esta por ser lanzada, y para abrir boca, la documentación ya esta disponible. Main help portal http://help.adobe.com/en_US/Flash/10.0_Welcome/ New features http://help.adobe.com/en_US/&#8230;html Programming ActionScript 3.0 http://help.adobe.com/&#8230;./ ActionScript 3.0 Language and Components Reference http://help.adobe.com/en_US/AS3LCR/Flash_10.0/index.html Extending Adobe Flash Professional CS4 http://help.adobe.com/&#8230;/index.html Con esto, sin duda, ya tenemos para entretenernos un bien [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya sabrán, la nueva suite de Adobe esta por ser lanzada, y para abrir boca, la documentación ya esta disponible.</p>
<p><strong>Main help portal</strong><br />
<a href="http://help.adobe.com/en_US/Flash/10.0_Welcome/">http://help.adobe.com/en_US/Flash/10.0_Welcome/</a></p>
<p><strong>New features</strong><br />
<a href="http://help.adobe.com/en_US/Flash/10.0_UsingFlash/WS9F717870-8AED-438d-B324-44ACCE6871E8a.html">http://help.adobe.com/en_US/&#8230;html</a></p>
<p><strong>Programming ActionScript 3.0</strong><br />
<a href="http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/">http://help.adobe.com/&#8230;./</a></p>
<p><strong>ActionScript 3.0 Language and Components Reference</strong><br />
<a href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/index.html">http://help.adobe.com/en_US/AS3LCR/Flash_10.0/index.html</a></p>
<p><strong>Extending Adobe Flash Professional CS4</strong><br />
<a href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/index.html">http://help.adobe.com/&#8230;/index.html</a></p>
<p>Con esto, sin duda, ya tenemos para entretenernos un bien tiempo.</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2008/10/10/flash-cs4-a-la-vuelta-de-la-esquina/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clase TiledBackground</title>
		<link>http://tmeister.net/2008/07/04/clase-tiledbackground/</link>
		<comments>http://tmeister.net/2008/07/04/clase-tiledbackground/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 23:00:11 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Background]]></category>
		<category><![CDATA[tiled]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=204</guid>
		<description><![CDATA[Que tal gente. Hace un buen rato que no posteo, pero aquí estoy de vuelta con algo sencillo. TiledBackground es una clase simple la cual toma una imagen externa (jpg, gif, png) y la repite tantas veces quepa en el navegador tal y como lo hiciéramos en CSS Además de que tiene un par de [...]]]></description>
			<content:encoded><![CDATA[<p>Que tal gente.</p>
<p>Hace un buen rato que no posteo, pero aquí estoy de vuelta con algo sencillo.<br />
TiledBackground es una clase simple la cual toma una imagen externa (jpg, gif, png) y la repite tantas veces quepa en el navegador tal y como lo hiciéramos en CSS <img src='http://tmeister.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Además de que tiene un par de parámetros, se puede sobreponer un gradiente radial para hacer un efecto sobre el fondo. Los colores y alphas del gradiente se pueden configurar.</p>
<p>TiledBackground</p>
<pre class="brush: as3; title: ; notranslate">
package net.tmeister.utils.background
{

import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.geom.Matrix;
import flash.net.URLRequest;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.GradientType;

public class TiledBackground extends Sprite
{
private var _pattern:String;
private var _container:Sprite;
private var _image:Loader;
private var _stage:Stage;
private var _gradient:Boolean = true;
private var _gProperties:Object = {};

public function TiledBackground(stage:Stage)
{
_stage = stage
_stage.scaleMode = StageScaleMode.NO_SCALE;
_stage.align = StageAlign.TOP_LEFT;
_stage.addEventListener(Event.RESIZE, resize);
}
public function set pattern (urlPattern:String):void
{
_pattern = urlPattern;
loadPattern();
}
public function get pattern():String
{
return _pattern;
}
public function set radialGradient(value:Boolean):void
{
_gradient = value;
}
public function get radialGradient():Boolean
{
return _gradient;
}
public function set gradientProperties(properties:Object):void
{
_gProperties = properties;
}
public function get gradientProperties():Object
{
return _gProperties;
}
private function loadPattern():void
{
var patternLoader:Loader = new Loader();
var patternUrl:URLRequest = new URLRequest(_pattern);
patternLoader.load(patternUrl);
patternLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPatternLoaded);
}
private function onPatternLoaded(e:Event):void
{
_image = e.target.loader;
createBackground();
createRadialGradient()
}
private function createBackground():void
{
if (_container != null)
{
removeChild(_container);
_container = null;
}
var bitmap:BitmapData = new BitmapData (_image.width, _image.height);
bitmap.draw(_image)
_container = new Sprite();
_container.graphics.beginBitmapFill(bitmap);
_container.graphics.drawRect(0,0, _stage.stageWidth , _stage.stageHeight);
_container.graphics.endFill();
addChild(_container);
}

private function createRadialGradient():void
{
if (! _gradient )
{
return;
}
var matrix:Matrix = new Matrix();
var gType:String = GradientType.RADIAL;
matrix.createGradientBox(_stage.stageWidth,_stage.stageHeight,0,0,0);
var gColors:Array = [(_gProperties.insideColor) ? _gProperties.insideColor : 0xffffff, (_gProperties.outsideColor) ? _gProperties.outsideColor : 0xffffff];
var gAlphas:Array = [(_gProperties.insideColorAlpha) ? _gProperties.insideColorAlpha : .15 ,(_gProperties.outsideColorAlpha) ? _gProperties.outsideColorAlpha : 0];
var gRatio:Array = [0,255];
var bound:Sprite = new Sprite();
bound.graphics.beginGradientFill(gType,gColors,gAlphas,gRatio,matrix);
bound.graphics.drawRect(0,0,_stage.stageWidth,_stage.stageHeight);
addChild(bound);
}
private function resize(e:Event):void
{
createBackground();
createRadialGradient()
}
}
}
</pre>
<p>Uso:</p>
<p>[as]<br />
package<br />
{<br />
import flash.display.Sprite;<br />
import net.tmeister.utils.background.TiledBackground</p>
<p>public class sampleTiled extends Sprite<br />
{<br />
public function sampleTiled()<br />
{<br />
var background:TiledBackground = new TiledBackground(stage);<br />
background.pattern = &#8220;bg1.gif&#8221;<br />
background.gradientProperties = {insideColor:0xffffff, outsideColor:0xffffff, insideColorAlpha:.05, outsideColorAlpha:0}<br />
addChild(background)<br />
}<br />
}<br />
}<br />
[/as]</p>
<p><a href="http://tmeister.net/tiled/">Aquí el ejemplo</a> y como siempre los archivos fuente están disponibles.</p>
<div class="legend">
<h3 class="legend-title">Archivos para descarga</h3>
<table>
<tbody>
<tr>
<td><p>Rendering of template dTemplate.php failed</p></td>
</tr>
</tbody>
</table>
</div>
<p>Saludos!!</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2008/07/04/clase-tiledbackground/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Obteniendo los hijos de un DisplayObject [AS3]</title>
		<link>http://tmeister.net/2008/04/01/obteniendo-los-hijos-de-un-displayobject-as3/</link>
		<comments>http://tmeister.net/2008/04/01/obteniendo-los-hijos-de-un-displayobject-as3/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 20:51:28 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Clases]]></category>
		<category><![CDATA[DisplayObject]]></category>
		<category><![CDATA[Utils]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=201</guid>
		<description><![CDATA[Está en una clase simple pero muy útil, al menos para mí, que recorre todos los hijos contenidos en un DisplayObject, la clase cuenta con 2 funciones: getAllChilds Regresa todos los hijos contenidos en el “target” getChildsByType Regresa solo los hijos que sean de un tipo específico, por ejemplo solo MovieClips, o solo Botones. DisplayObjectUtils [...]]]></description>
			<content:encoded><![CDATA[<p>Está en una clase simple pero muy útil, al menos para mí, que recorre todos los hijos contenidos en un DisplayObject, la clase cuenta con 2 funciones:</p>
<p><strong>getAllChilds</strong></p>
<p>Regresa todos los hijos contenidos en el “target”</p>
<p><strong>getChildsByType</strong></p>
<p>Regresa solo los hijos que sean de un tipo específico, por ejemplo solo MovieClips, o solo Botones.</p>
<h2>DisplayObjectUtils</h2>
<p>[as]<br />
package net.tmeister.utils<br />
{<br />
	/**<br />
	 * @author Enrique Chavez aka Tmeister<br />
	 */<br />
	import flash.display.DisplayObject;<br />
	public class DisplayObjectUtils<br />
	{<br />
		/**<br />
		 *<br />
		 * @param	target<br />
		 * @return Array<br />
		 */<br />
		public static function getAllChilds(target:*):Array<br />
		{<br />
			var listTmp:Array = []<br />
			for (var a = 0; a < target.numChildren; a++ )<br />
			{<br />
				listTmp.push (target.getChildAt(a) )<br />
			}<br />
			return listTmp<br />
		}<br />
		/**<br />
		 *<br />
		 * @param	target<br />
		 * @param	type<br />
		 * @return<br />
		 */<br />
		public static function getChildsByType(target:*, type:*):Array<br />
		{<br />
			var listTmp:Array = []<br />
			for (var a = 0; a < target.numChildren; a++ )<br />
			{<br />
				if (target.getChildAt(a) is type)<br />
				{<br />
					listTmp.push (target.getChildAt(a) )<br />
				}<br />
			}<br />
			return listTmp<br />
		}<br />
	}<br />
}<br />
[/as]</p>
<p>Su uso es el siguiente:</p>
<p>Primero creamos unos Movieclips y unos botones para tener algo que buscar.</p>
<p>[as]<br />
import net.tmeister.utils.DisplayObjectUtils;<br />
import fl.controls.Button</p>
<p>createMovieClips()<br />
createButtons()<br />
getChilds()</p>
<p>function createButtons()<br />
{<br />
	for(var a:Number = 0; a<2; a++)<br />
	{<br />
		var tmp:Button = new Button();<br />
		tmp.x = Math.random()*400<br />
		tmp.y = Math.random()*400<br />
		tmp.label = &#8220;buton&#8221;+a<br />
		addChild(tmp)<br />
	}<br />
}<br />
function createMovieClips()<br />
{<br />
	for(var a:Number = 0; a<5; a++)<br />
	{<br />
		var tmp:MovieClip = new MovieClip();<br />
		tmp.graphics.beginFill(0x2a2a2a, .5)<br />
		tmp.graphics.drawRect(Math.random()*500, Math.random()*300, Math.random()*100, Math.random()*100);<br />
		tmp.graphics.endFill();<br />
		tmp.name = &#8220;mc&#8221;+a;<br />
		addChild(tmp)<br />
	}<br />
}<br />
function getChilds()<br />
{<br />
	trace(&#8220;All Childs: &#8221; + DisplayObjectUtils.getAllChilds(this) )<br />
	trace(&#8220;=====================================================================================&#8221;)<br />
	trace(&#8220;Movieclips:  &#8221; + DisplayObjectUtils.getChildsByType(this, MovieClip))<br />
	trace(&#8220;=====================================================================================&#8221;)<br />
	trace(&#8220;Buttons:  &#8221; + DisplayObjectUtils.getChildsByType(this, Button))</p>
<p>}</p>
<p>[/as]</p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2008/04/01/obteniendo-los-hijos-de-un-displayobject-as3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Advanced round class AS3</title>
		<link>http://tmeister.net/2008/03/31/advanced-round-as3/</link>
		<comments>http://tmeister.net/2008/03/31/advanced-round-as3/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 01:06:02 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Clases]]></category>
		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://tmeister.net/?p=200</guid>
		<description><![CDATA[Esta es una clase de mucha ayuda para cuando queramos redondear números de una forma más avanzada. AS3 cuenta con su Math.round pero esta función lo único que hace es redondear el numero al entero más cercano. Pero qué pasa si quiero redondear un número en múltiplos de 5 por ejemplo. Para ello escribí esta [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es una clase de mucha ayuda para cuando queramos redondear números de una forma más avanzada.</p>
<p>AS3 cuenta con su Math.round pero esta función lo único que hace es redondear el numero al entero más cercano. Pero qué pasa si quiero redondear un número en múltiplos de 5 por ejemplo.</p>
<p>Para ello escribí esta sencilla clase que lo permite.</p>
<p>[as]<br />
package net.tmeister.utils<br />
{<br />
	/**<br />
	 *<br />
	 * Advanced Round Class<br />
	 * @version 0.1<br />
	 * @author Enrique Chavez aka Tmeister<br />
	 *<br />
	*/<br />
	public class MathUtils<br />
	{<br />
		/**<br />
		 *<br />
		 * Rounds a Number to the nearest multiple<br />
		 * @param	number Number to Round<br />
		 * @param	precision multiple to be rounded<br />
		 * @return 	A number round<br />
		 *<br />
		 */<br />
		public static function roundToNear(number:Number, precision:Number)<br />
		{<br />
			return Math.round( number / precision) * precision;<br />
		}<br />
		/**<br />
		 *<br />
		 * Rounds a Number up to the nearest multiple<br />
		 * @param	number Number to Round<br />
		 * @param	precision multiple to be rounded<br />
		 * @return 	A number Up round<br />
		 *<br />
		 */<br />
		public static function roundToUpNear(number:Number, precision:Number)<br />
		{<br />
			return Math.ceil( number / precision) * precision;<br />
		}<br />
		/**<br />
		 *<br />
		 * Rounds a Number down to the nearest multiple<br />
		 * @param	number number Number to Round<br />
		 * @param	precision multiple to be rounded<br />
		 * @return 	A number down round<br />
		 *<br />
		 */<br />
		public static function roundToDownNear(number:Number, precision:Number)<br />
		{<br />
			return Math.floor( number / precision) * precision;<br />
		}<br />
	}<br />
}<br />
[/as]</p>
<p>Modo de uso es tan simple como esto.</p>
<p>[as]<br />
import net.tmeister.utils.MathUtils;</p>
<p>const number:Number = 38<br />
const precision:Number = 5</p>
<p>trace(MathUtils.roundToNear(number, precision)) // 40<br />
trace(MathUtils.roundToUpNear(number, precision)) // 40<br />
trace(MathUtils.roundToDownNear(number, precision)) // 35<br />
[/as]</p>
<p>Enjoy <img src='http://tmeister.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tmeister.net/2008/03/31/advanced-round-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Object Caching 1045/1179 objects using disk: basic

Served from: tmeister.net @ 2012-02-04 03:32:04 -->

<!-- W3 Total Cache: Db cache debug info:
Engine:             disk: basic
Total queries:      71
Cached queries:     7
Total query time:   0.0550
SQL info:
    # | Time (s) |    Caching (Reject reason)     |   Status   | Data size (b) | Query
    1 |   0.0005 |  disabled (Query is rejected)  | not cached |             0 | SHOW TABLES LIKE 'wp_tla_data'
    2 |    0.001 |  disabled (Query is rejected)  | not cached |             0 | SHOW COLUMNS FROM wp_tla_data LIKE 'xml_key'
    3 |   0.0005 |            enabled             |   cached   |          4215 | SELECT * FROM wp_tla_data
    4 |   0.0002 |            enabled             | not cached |           672 | SELECT wp_term_taxonomy.term_id
					FROM wp_term_taxonomy
					INNER JOIN wp_terms USING (term_id)
					WHERE taxonomy = 'category'
					AND wp_terms.slug IN ('as3')
    5 |   0.0008 |            enabled             | not cached |           634 | SELECT term_taxonomy_id
					FROM wp_term_taxonomy
					WHERE taxonomy = 'category'
					AND term_id IN (12)
    6 |   0.0001 |            enabled             | not cached |          3451 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'category' AND t.slug = 'as3' LIMIT 1
    7 |   0.0021 |  disabled (Query is rejected)  | not cached |             0 | SELECT SQL_CALC_FOUND_ROWS  wp_posts.* FROM wp_posts  INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1  AND ( wp_term_relationships.term_taxonomy_id IN (13) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 15
    8 |   0.0039 |  disabled (Query is rejected)  | not cached |             0 | SELECT FOUND_ROWS()
    9 |   0.0003 |            enabled             |   cached   |          3451 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'category' AND t.slug = 'as3' LIMIT 1
   10 |   0.0012 |            enabled             | not cached |          3557 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (648) ORDER BY t.name ASC
   11 |   0.0005 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (648) ORDER BY t.name ASC
   12 |   0.0005 |            enabled             | not cached |          1829 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (648)
   13 |   0.0007 |            enabled             | not cached |          9883 | SELECT * FROM wp_posts WHERE ID = 648 LIMIT 1
   14 |   0.0005 |            enabled             | not cached |          3557 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (640) ORDER BY t.name ASC
   15 |   0.0006 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (640) ORDER BY t.name ASC
   16 |    0.001 |            enabled             | not cached |          2086 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (640)
   17 |   0.0003 |            enabled             | not cached |         12632 | SELECT * FROM wp_posts WHERE ID = 640 LIMIT 1
   18 |   0.0002 |            enabled             | not cached |          4578 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (546) ORDER BY t.name ASC
   19 |   0.0012 |            enabled             | not cached |          3830 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (546) ORDER BY t.name ASC
   20 |   0.0025 |            enabled             | not cached |          5449 | SELECT wp_drainhole_files.*,wp_drainhole_version.version,wp_drainhole_version.created_at FROM wp_drainhole_files INNER JOIN wp_drainhole_version ON (wp_drainhole_files.version_id=wp_drainhole_version.id OR wp_drainhole_files.version_id=0) AND wp_drainhole_files.id='11' GROUP BY id
   21 |   0.0008 |            enabled             | not cached |          3073 | SELECT wp_drainhole_holes.*,SUM(wp_drainhole_files.hits) AS hits,COUNT(wp_drainhole_files.id) AS files FROM wp_drainhole_holes LEFT JOIN wp_drainhole_files ON wp_drainhole_holes.id=wp_drainhole_files.hole_id WHERE wp_drainhole_holes.id=3 GROUP BY wp_drainhole_holes.id
   22 |   0.0005 |            enabled             | not cached |          2006 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (546)
   23 |   0.0008 |            enabled             |   cached   |          5449 | SELECT wp_drainhole_files.*,wp_drainhole_version.version,wp_drainhole_version.created_at FROM wp_drainhole_files INNER JOIN wp_drainhole_version ON (wp_drainhole_files.version_id=wp_drainhole_version.id OR wp_drainhole_files.version_id=0) AND wp_drainhole_files.id='11' GROUP BY id
   24 |   0.0007 |            enabled             |   cached   |          3073 | SELECT wp_drainhole_holes.*,SUM(wp_drainhole_files.hits) AS hits,COUNT(wp_drainhole_files.id) AS files FROM wp_drainhole_holes LEFT JOIN wp_drainhole_files ON wp_drainhole_holes.id=wp_drainhole_files.hole_id WHERE wp_drainhole_holes.id=3 GROUP BY wp_drainhole_holes.id
   25 |   0.0008 |            enabled             | not cached |         25487 | SELECT * FROM wp_posts WHERE ID = 546 LIMIT 1
   26 |   0.0008 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (455) ORDER BY t.name ASC
   27 |   0.0003 |            enabled             | not cached |          3807 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (445) ORDER BY t.name ASC
   28 |   0.0009 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (445) ORDER BY t.name ASC
   29 |   0.0002 |            enabled             | not cached |          1693 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (445)
   30 |   0.0003 |            enabled             | not cached |          9703 | SELECT * FROM wp_posts WHERE ID = 445 LIMIT 1
   31 |   0.0008 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (432) ORDER BY t.name ASC
   32 |   0.0007 |            enabled             | not cached |          3557 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (418) ORDER BY t.name ASC
   33 |   0.0107 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (418) ORDER BY t.name ASC
   34 |   0.0007 |            enabled             | not cached |          1693 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (418)
   35 |   0.0008 |            enabled             | not cached |         10110 | SELECT * FROM wp_posts WHERE ID = 418 LIMIT 1
   36 |   0.0005 |            enabled             | not cached |          3804 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (383) ORDER BY t.name ASC
   37 |   0.0012 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (383) ORDER BY t.name ASC
   38 |   0.0004 |            enabled             | not cached |          1810 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (383)
   39 |   0.0005 |            enabled             | not cached |         10296 | SELECT * FROM wp_posts WHERE ID = 383 LIMIT 1
   40 |   0.0004 |            enabled             | not cached |          3808 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (359) ORDER BY t.name ASC
   41 |   0.0006 |            enabled             | not cached |          3312 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (359) ORDER BY t.name ASC
   42 |   0.0003 |            enabled             | not cached |          1810 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (359)
   43 |   0.0004 |            enabled             | not cached |          9874 | SELECT * FROM wp_posts WHERE ID = 359 LIMIT 1
   44 |   0.0003 |            enabled             | not cached |          3811 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (295) ORDER BY t.name ASC
   45 |   0.0007 |            enabled             | not cached |          4311 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (295) ORDER BY t.name ASC
   46 |   0.0002 |            enabled             | not cached |          1810 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (295)
   47 |   0.0003 |            enabled             | not cached |         10374 | SELECT * FROM wp_posts WHERE ID = 295 LIMIT 1
   48 |   0.0002 |            enabled             | not cached |          3822 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (224) ORDER BY t.name ASC
   49 |   0.0009 |            enabled             | not cached |          4333 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (224) ORDER BY t.name ASC
   50 |   0.0002 |            enabled             | not cached |          1585 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (224)
   51 |   0.0004 |            enabled             | not cached |         10562 | SELECT * FROM wp_posts WHERE ID = 224 LIMIT 1
   52 |   0.0004 |            enabled             | not cached |          3822 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (213) ORDER BY t.name ASC
   53 |   0.0007 |            enabled             | not cached |          3823 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (213) ORDER BY t.name ASC
   54 |   0.0002 |            enabled             | not cached |          1468 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (213)
   55 |   0.0003 |            enabled             | not cached |          9987 | SELECT * FROM wp_posts WHERE ID = 213 LIMIT 1
   56 |   0.0003 |            enabled             | not cached |          3822 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (204) ORDER BY t.name ASC
   57 |   0.0008 |            enabled             | not cached |          4331 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (204) ORDER BY t.name ASC
   58 |   0.0003 |            enabled             | not cached |          5435 | SELECT wp_drainhole_files.*,wp_drainhole_version.version,wp_drainhole_version.created_at FROM wp_drainhole_files INNER JOIN wp_drainhole_version ON (wp_drainhole_files.version_id=wp_drainhole_version.id OR wp_drainhole_files.version_id=0) AND wp_drainhole_files.id='8' GROUP BY id
   59 |   0.0004 |            enabled             |   cached   |          3073 | SELECT wp_drainhole_holes.*,SUM(wp_drainhole_files.hits) AS hits,COUNT(wp_drainhole_files.id) AS files FROM wp_drainhole_holes LEFT JOIN wp_drainhole_files ON wp_drainhole_holes.id=wp_drainhole_files.hole_id WHERE wp_drainhole_holes.id=3 GROUP BY wp_drainhole_holes.id
   60 |   0.0002 |            enabled             | not cached |          1817 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (204)
   61 |   0.0004 |            enabled             |   cached   |          5435 | SELECT wp_drainhole_files.*,wp_drainhole_version.version,wp_drainhole_version.created_at FROM wp_drainhole_files INNER JOIN wp_drainhole_version ON (wp_drainhole_files.version_id=wp_drainhole_version.id OR wp_drainhole_files.version_id=0) AND wp_drainhole_files.id='8' GROUP BY id
   62 |   0.0004 |            enabled             |   cached   |          3073 | SELECT wp_drainhole_holes.*,SUM(wp_drainhole_files.hits) AS hits,COUNT(wp_drainhole_files.id) AS files FROM wp_drainhole_holes LEFT JOIN wp_drainhole_files ON wp_drainhole_holes.id=wp_drainhole_files.hole_id WHERE wp_drainhole_holes.id=3 GROUP BY wp_drainhole_holes.id
   63 |   0.0004 |            enabled             | not cached |         13114 | SELECT * FROM wp_posts WHERE ID = 204 LIMIT 1
   64 |   0.0002 |            enabled             | not cached |          3822 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (201) ORDER BY t.name ASC
   65 |    0.001 |            enabled             | not cached |          4587 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (201) ORDER BY t.name ASC
   66 |   0.0003 |            enabled             | not cached |          1585 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (201)
   67 |   0.0009 |            enabled             | not cached |         11409 | SELECT * FROM wp_posts WHERE ID = 201 LIMIT 1
   68 |   0.0003 |            enabled             | not cached |          3822 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (200) ORDER BY t.name ASC
   69 |   0.0012 |            enabled             | not cached |          4319 | SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (200) ORDER BY t.name ASC
   70 |   0.0004 |            enabled             | not cached |          1585 | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (200)
   71 |   0.0004 |            enabled             | not cached |         10790 | SELECT * FROM wp_posts WHERE ID = 200 LIMIT 1
-->

<!-- W3 Total Cache: Page cache debug info:
Engine:             disk: enhanced
Cache key:          category/as3/feed/_index.html
Caching:            disabled
Reject reason:      DONOTCACHEPAGE constant is defined
Status:             not cached
Creation Time:      0.853s
Header info:
X-Pingback:         http://tmeister.net/xmlrpc.php
Last-Modified:      Thu, 19 Jan 2012 20:25:41 GMT
ETag:               "5128b61493d147f8e15e42f284d2c6d2"
X-Powered-By:       W3 Total Cache/0.9.2.4
Content-Type:       text/xml; charset=utf-8
-->
