<?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>Rando &#187; Flex</title>
	<atom:link href="http://rando.ramonasoft.com/category/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://rando.ramonasoft.com</link>
	<description>a.k.a. master_of_puppetz@cristalab!!!</description>
	<lastBuildDate>Sat, 05 Mar 2011 17:29:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Usar filterFunction en ArrayCollection para filtrar datos en AS3</title>
		<link>http://rando.ramonasoft.com/usar-filterfuncion-arraycollection-para-filtrar-datos/</link>
		<comments>http://rando.ramonasoft.com/usar-filterfuncion-arraycollection-para-filtrar-datos/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 23:49:03 +0000</pubDate>
		<dc:creator>rando</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[ArrayCollection]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[filterFunction]]></category>

		<guid isPermaLink="false">http://rando.ramonasoft.com/?p=95</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://rando.ramonasoft.com/usar-filterfuncion-arraycollection-para-filtrar-datos/' addthis:title='Usar filterFunction en ArrayCollection para filtrar datos en AS3 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>La clase ArrayCollection incluye una propiedad heredada de ListCollectionView llamada filterFunction con la cual podemos mandar llamar una función que nos devolverá un valor Boolean con el cual evaluaremos si al final el ArrayCollection muestra o no algún elemento. Antes de mostrar el ejemplo de uso, veamos como tenemos que construir la función que será [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://rando.ramonasoft.com/usar-filterfuncion-arraycollection-para-filtrar-datos/' addthis:title='Usar filterFunction en ArrayCollection para filtrar datos en AS3 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>La clase <a title="ArrayCollection" href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/ArrayCollection.html" target="_blank">ArrayCollection</a> incluye una propiedad heredada de <a title="ListViewCollection" href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html" target="_blank">ListCollectionView</a> llamada <a title="filterFunction" href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/ListCollectionView.html#filterFunction" target="_blank">filterFunction</a> con la cual podemos mandar llamar una función que nos devolverá un valor Boolean con el cual evaluaremos si al final el ArrayCollection muestra o no algún elemento.</p>
<p>Antes de mostrar el ejemplo de uso, veamos como tenemos que construir la función que será el valor de la propiedad filterFunction:<br />
<em>ff(item:Object):Boolean</em></p>
<p>El nombre de la función lo escoge el desarrollador, sin embargo, el parámetro de entrada y el tipo de dato de regreso si se tienen que especificar según lo indica la documentación. El parámetro de entrada tiene que ser de tipo Object, pues es cada elemento del proveedor de datos que estará mandando a la función para evaluar y el tipo de dato de regreso es de tipo Boolean, pues cuando sea true se agregará al proveedor y cuando sea false se ignorará.</p>
<p>A continuación un ejemplo de como un proveedor de datos tipo ArrayCollection funciona sobre ComboBox, List y DataGrid&#8217;s:</p>
<p><iframe src="http://rando.ramonasoft.com/tips/tippost95/" frameborder="0" width="400" height="370"></p>
<p>El navegador no soporta iframe.</p>
<p></iframe><br />
para ver el código y descargar el proyecto, click derecho sobre el swf y luego click en <i>View Source</i>.</p>
<p>Nota: el ejemplo fue hecho en Flash Builder 4 con el Flex SDK 4.0, si se quisiera probar en Flex Builder 3 únicamente se cambian los componentes por los mx y el código en AS3 quedaría igual.</p>
]]></content:encoded>
			<wfw:commentRss>http://rando.ramonasoft.com/usar-filterfuncion-arraycollection-para-filtrar-datos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar DataTips de ComboBox en Flex</title>
		<link>http://rando.ramonasoft.com/mostrar-datatips-de-combobox-en-flex/</link>
		<comments>http://rando.ramonasoft.com/mostrar-datatips-de-combobox-en-flex/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 04:17:44 +0000</pubDate>
		<dc:creator>rando</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[ClassFactory]]></category>
		<category><![CDATA[ComboBox]]></category>
		<category><![CDATA[dropdownFactory]]></category>
		<category><![CDATA[showDataTips]]></category>

		<guid isPermaLink="false">http://rando.ramonasoft.com/?p=60</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://rando.ramonasoft.com/mostrar-datatips-de-combobox-en-flex/' addthis:title='Mostrar DataTips de ComboBox en Flex '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Los que hemos trabajado en Flex con Listas o ComboBox hemos visto que algunas veces las etiquetas de cada item rebasan el tamaño del control provocando que esta no se vea por completo, para el control List podemos resolver eso fácilmente poniendo en true la propiedad showDataTips, sin embargo para el ComboBox no hay algo [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://rando.ramonasoft.com/mostrar-datatips-de-combobox-en-flex/' addthis:title='Mostrar DataTips de ComboBox en Flex '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Los que hemos trabajado en Flex con Listas o ComboBox hemos visto que algunas veces las etiquetas de cada item rebasan el tamaño del control provocando que esta no se vea por completo, para el control List podemos resolver eso fácilmente poniendo en <em>true</em> la propiedad <a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/listClasses/ListBase.html#showDataTips" target="_blank">showDataTips</a>, sin embargo para el ComboBox no hay algo tan directo como esto, la solución es crear un <a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ComboBox.html#dropdownFactory" target="_blank">dropdownFactory</a>, con esto creamos una nueva instancia del control List (pues el control que aparece en el drop down del ComboBox es un List) y podrémos modificar las propiedades que necesitemos, para este caso, que muestre dataTips y especificar quien será el dataTip o bien, crear una función para que sea la que despliegue la información.<br />
El código en AS3 quedaría así:</p>
<pre>private var ddf:ClassFactory
private var dp_ac:ArrayCollection = new ArrayCollection([
   {etiqueta: "Texto un poco laaaaaargo"},
   {etiqueta: "Texto un poco laaaaaargo"},
   {etiqueta: "Texto un poco laaaaaargo"},
   {etiqueta: "Texto un poco laaaaaargo"},
   {etiqueta: "Texto un poco laaaaaargo"},
   {etiqueta: "Texto un poco laaaaaargo"},
   {etiqueta: "Texto un poco laaaaaargo"}
]);

//donde init se dispara en el creationComplete del .mxml
private function init():void
{
   ddf = new ClassFactory(List);
   var propiedades:Object = {
      showDataTips: true,
      dataTipField: "etiqueta"
   }
   ddf.properties = propiedades;
   var cb:ComboBox = new ComboBox();
   cb.dropdownFactory = ddf;
   cb.dataProvider = dp_ac;
   cb.width = 75;
   cb.labelField = "etiqueta";
   this.addChild(cb);
}</pre>
<p>en caso de que el ComboBox se haga desde el MXML el código sería así (eliminando desde <em>var cb:ComboBox = new ComboBox();</em> hasta <em>this.addChild(cb);</em> del código anterior):</p>
<pre>&lt;mx:ComboBox id="cb" dataProvider="{dp_ac}" dropdownFactory="{ddf}" width="75" labelField="etiqueta"/&gt;</pre>
<p style="text-align: left;">y ya en la ejecución se vería como la siguiente imagen:</p>
<p style="text-align: center;">
<img class="aligncenter" src="http://l4c.me/uploads/combobox-1263009640_full550.png" border="0" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rando.ramonasoft.com/mostrar-datatips-de-combobox-en-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extendiendo el uso del trim() en AS3</title>
		<link>http://rando.ramonasoft.com/extendiendo-el-uso-del-trim-en-as3/</link>
		<comments>http://rando.ramonasoft.com/extendiendo-el-uso-del-trim-en-as3/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 03:01:22 +0000</pubDate>
		<dc:creator>rando</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[StringUtils]]></category>
		<category><![CDATA[trim]]></category>

		<guid isPermaLink="false">http://rando.ramonasoft.com/?p=43</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://rando.ramonasoft.com/extendiendo-el-uso-del-trim-en-as3/' addthis:title='Extendiendo el uso del trim() en AS3 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Como ya tenía harto, harto tiempo de no publicar un tip de Flex en el blog, hoy es momento de regresar a eso. Bien, en este tip mostraré como podemos hacer funcionar el trim() de AS3 como el trim() de PHP, la diferencia entre estos dos métodos, es que con el de PHP no solo [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://rando.ramonasoft.com/extendiendo-el-uso-del-trim-en-as3/' addthis:title='Extendiendo el uso del trim() en AS3 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Como ya tenía harto, harto tiempo de no publicar un tip de Flex en el blog, hoy es momento de regresar a eso.</p>
<p>Bien, en este tip mostraré como podemos hacer funcionar el <a href="http://livedocs.adobe.com/flex/3/langref/mx/utils/StringUtil.html" target="_blank">trim()</a> de AS3 como el <a href="http://php.net/manual/en/function.trim.php" target="_blank">trim()</a> de <a href="http://www.php.net" target="_blank">PHP</a>, la diferencia entre estos dos métodos, es que con el de PHP no solo podemos eliminar espacios en blanco la inicio y final de la cadena, sino que podemos definir caracteres que también sean eliminados.</p>
<p>La implementación de este trim() para AS3 fué tomada en base a la clase <a href="http://www.gskinner.com/blog/archives/2007/04/free_extension.html" target="_blank">StringUtils</a> del blog <a href="http://www.gskinner.com/" target="_blank">gskinner</a>.</p>
<p>el método original es el siguiente:</p>
<pre>public static function trim(p_string:String):String {
   if (p_string == null) { return ''; }
   return p_string.replace(/^\s+|\s+$/g, '');
}</pre>
<p>aquí la magia esta en la línea del <em>return</em>, donde le indica al método que regrese lo que reemplace de la cadena según la expresión regular que esta definiendo, lo que hace que elimine los espacios es el caracter <em>\s</em> por lo que este caracter es el que tenemos que sustituir en nuestro nuevo método, además de que tenemos que agregar otro parámetro para definir cual será el caracter a reemplazar, ya modificado el método nos quedaría algo así:</p>
<pre>public static function trimChar(p_string:String, p_char:String = ' '):String
{
   if (!p_string)
   {
      return '';
   }
   var regexp:RegExp = new RegExp("^" + p_char + "+|" + p_char + "+$", "g");
   return p_string.replace(regexp, '');
}</pre>
<p>suponiendo que el método se agregue a una clase llamada <em>StringUtils</em>, la utilización de esta clase sería:</p>
<pre>var foo:String = "   lDaniel Daniel   ";
trace(StringUtils.trimChar(foo)); //lDaniel Daniel
trace(StringUtils.trimChar(StringUtils.trimChar(foo), "l")); //Daniel Danie</pre>
<p>este método es para eliminar de ambos lados de la cadena, si solo se quisiera eliminar de un solo lado, se reemplaza el valor de la variable regexp según sea necesario o bien, se crean dos métodos nuevos cada uno con cada definición de la variable:</p>
<pre>//para hacer un trim de lado izquierdo
var regexp:RegExp = new RegExp("^" + p_char + "+", "g");
//para hacer un trim de lado derecho
var regexp:RegExp = new RegExp(p_char + "+$", "g");</pre>
<p>Espero que les sirva, Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://rando.ramonasoft.com/extendiendo-el-uso-del-trim-en-as3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

