logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Usando a classe ObjectUtil no Adobe Flex

Colocado por Leonardo França na(s) categoria(s): .NET, 1, 2009, 4, 6, action, Actionscript, ActionScript 3, Actionscript 3.0, Adobe, Adobe Air, Adobe Flex, api, Aplicativos, app, AR, BI, boolean, class, classe, comparação, custom, Desenvolvimento, Download, event, events, exemplo, Exemplos, flash, Flash Platform, Flex, for, framework, function, fundo, gc, handle, html, IE, if, image, int, label, library, mg, MXML, NaN, Number, O, on, Outros, PHP, platform, player, print, pt, reference, RIA, Ria’s Geral, spark, string, strings, TextInput, UI, utils, Widget, XML em 12 11th, 2010 | Sem comentários



O Adobe Flex[bb] é um framework feito para criação de aplicativos RIA com a Flash Platform e que pela sua facilidade vem se tornando muito popular nos ultimos anos. Há classe chamada ObjectUtil, uma classe estática com uma serie de métodos para ajudar e agilizar no desenvolvimento de suas aplicações. Vou mostrar alguns exemplos dos métodos que mais utilizo.

numericCompare é um método usado para comparar dois números, retorna 0 se os dois são nulos ou iguais, 1 se o primeiro parametro for maior que o segundo e -1 se o segundo parametro for maior que o primeiro. Veja um exemplo:

PLAIN TEXT
MXML:

  1. “1.0″ encoding=“utf-8″?>
  2. xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3. ? ? ? ? ? ? ? ?xmlns:s=“library://ns.adobe.com/flex/spark”
  4. ? ? ? ? ? ? ? ?xmlns:mx=“library://ns.adobe.com/flex/mx” minWidth=“955″ minHeight=“600″>
  5. ? ? >
  6. ? ? ? ?
  7. ? ? >
  8. ? ? >
  9. ? ? ? ? [CDATA[
  10. ? ? ? ? ? ? import mx.utils.ObjectUtil;
  11. ? ? ? ? ? ?
  12. ? ? ? ? ? ? private function isNumbersEqual(number1:Number,number2:Number):Boolean
  13. ? ? ? ? ? ? {
  14. ? ? ? ? ? ? ? ? var retorno:Boolean = false;
  15. ? ? ? ? ? ? ? ? var isEqual:int = ObjectUtil.numericCompare(number1,number2);
  16. ? ? ? ? ? ? ? ? if(isEqual == 0)
  17. ? ? ? ? ? ? ? ? {
  18. ? ? ? ? ? ? ? ? ? ? retorno = true;
  19. ? ? ? ? ? ? ? ? }
  20. ? ? ? ? ? ? ? ? return retorno;
  21. ? ? ? ? ? ? }
  22. ?
  23. ? ? ? ? ? ? protected function button1_clickHandler(event:MouseEvent):void
  24. ? ? ? ? ? ? {
  25. ? ? ? ? ? ? ? ? if(isNumbersEqual(Number(t1.text),Number(t2.text)))
  26. ? ? ? ? ? ? ? ? {
  27. ? ? ? ? ? ? ? ? ? ? lb.text = "Numbers are equals!";
  28. ? ? ? ? ? ? ? ? }
  29. ? ? ? ? ? ? ? ? else
  30. ? ? ? ? ? ? ? ? {
  31. ? ? ? ? ? ? ? ? ? ? lb.text = "Numbers are not equals!";
  32. ? ? ? ? ? ? ? ? }
  33. ? ? ? ? ? ? }
  34. ? ? ? ? ]]>
  35. ? ? >
  36. ? ? id=“t1″ x=“10″ y=“10″/>
  37. ? ? id=“t2″ x=“146″ y=“10″/>
  38. ? ? x=“282″ y=“10″ label=“Compare” click=“button1_clickHandler(event)”/>
  39. ? ? id=“lb” x=“363″ y=“19″/>
  40. >

compare é um método usado para comparar dois objetos. Ele usa um algoritimo para ir o mais profundo possivel no objeto e suas propriedades. Veja um exemplo:

PLAIN TEXT
MXML:

  1. “1.0″ encoding=“utf-8″?>
  2. xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3. ? ? ? ? ? ? ? ?xmlns:s=“library://ns.adobe.com/flex/spark”
  4. ? ? ? ? ? ? ? ?xmlns:mx=“library://ns.adobe.com/flex/mx” minWidth=“955″ minHeight=“600″ creationComplete=“application1_creationCompleteHandler(event)”>
  5. ? ? >
  6. ? ? ? ?
  7. ? ? >
  8. ? ? >
  9. ? ? ? ? [CDATA[
  10. ? ? ? ? ? ? import mx.events.FlexEvent;
  11. ? ? ? ? ? ? import mx.utils.ObjectUtil;
  12. ? ? ? ? ? ?
  13. ? ? ? ? ? ? private function isObjectEqual(obj1:Object,obj2:Object):Boolean
  14. ? ? ? ? ? ? {
  15. ? ? ? ? ? ? ? ? var retorno:Boolean = false;
  16. ? ? ? ? ? ? ? ? var isEqual:int = ObjectUtil.compare(obj1,obj2);
  17. ? ? ? ? ? ? ? ? if(isEqual == 0)
  18. ? ? ? ? ? ? ? ? {
  19. ? ? ? ? ? ? ? ? ? ? retorno = true;
  20. ? ? ? ? ? ? ? ? }
  21. ? ? ? ? ? ? ? ? return retorno;
  22. ? ? ? ? ? ? }
  23. ? ? ? ? ? ?
  24. ? ? ? ? ? ? protected function application1_creationCompleteHandler(event:FlexEvent):void
  25. ? ? ? ? ? ? {
  26. ? ? ? ? ? ? ? ? var a:Object = {name:"Leo", info:[1,2,3]};
  27. ? ? ? ? ? ? ? ? var b:Object = {name:“Leo”, info:[1,2,2]};
  28. ? ? ? ? ? ? ? ? if(isObjectEqual(a,b))
  29. ? ? ? ? ? ? ? ? {
  30. ? ? ? ? ? ? ? ? ? ? lb.text = “Objects are equals!”;
  31. ? ? ? ? ? ? ? ? }
  32. ? ? ? ? ? ? ? ? else
  33. ? ? ? ? ? ? ? ? {
  34. ? ? ? ? ? ? ? ? ? ? lb.text = “Objects are not equals!”;
  35. ? ? ? ? ? ? ? ? }
  36. ? ? ? ? ? ? }
  37. ? ? ? ? ]]>
  38. ? ? >
  39. ? ? id=“lb” x=“0″ y=“19″/>
  40. >

dateCompare Trabalhar com datas sempre gera um pouco de trabalho, pois você sempre tem que fazer uma serie de verificações, modificar formatos etc. Temos um método para comparação de datas que pode ser muito util e agilizar seu trabalho. Segue o mesmo esquema dos demais, retorna 0 se datas iguais, 1 se a primeira é maior que a segunda e -1 se a segunda é maior que a primeira. Veja um exemplo:

PLAIN TEXT
MXML:

  1. “1.0″ encoding=“utf-8″?>
  2. xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3. ? ? ? ? ? ? ? ?xmlns:s=“library://ns.adobe.com/flex/spark”
  4. ? ? ? ? ? ? ? ?xmlns:mx=“library://ns.adobe.com/flex/mx” minWidth=“955″ minHeight=“600″>
  5. ? ? >
  6. ? ? ? ?
  7. ? ? >
  8. ? ? >
  9. ? ? ? ? [CDATA[
  10. ? ? ? ? ? ? import mx.utils.ObjectUtil;
  11. ? ? ? ? ? ?
  12. ? ? ? ? ? ? private function isDateEqual(dt1:Date,dt2:Date):Boolean
  13. ? ? ? ? ? ? {
  14. ? ? ? ? ? ? ? ? var retorno:Boolean = false;
  15. ? ? ? ? ? ? ? ? var isEqual:int = ObjectUtil.dateCompare(dt1,dt2);
  16. ? ? ? ? ? ? ? ? if(isEqual == 0)
  17. ? ? ? ? ? ? ? ? {
  18. ? ? ? ? ? ? ? ? ? ? retorno = true;
  19. ? ? ? ? ? ? ? ? }
  20. ? ? ? ? ? ? ? ? return retorno;
  21. ? ? ? ? ? ? }
  22. ?
  23. ? ? ? ? ? ? protected function button1_clickHandler(event:MouseEvent):void
  24. ? ? ? ? ? ? {
  25. ? ? ? ? ? ? ? ? if(isDateEqual(dt1.selectedDate,dt2.selectedDate))
  26. ? ? ? ? ? ? ? ? {
  27. ? ? ? ? ? ? ? ? ? ? lb.text = "Date are equals!";
  28. ? ? ? ? ? ? ? ? }
  29. ? ? ? ? ? ? ? ? else
  30. ? ? ? ? ? ? ? ? {
  31. ? ? ? ? ? ? ? ? ? ? lb.text = "Date are not equals!";
  32. ? ? ? ? ? ? ? ? }
  33. ? ? ? ? ? ? }
  34. ? ? ? ? ]]>
  35. ? ? >
  36. ? ? id=“dt1″ x=“10″ y=“10″/>
  37. ? ? id=“dt2″ x=“113″ y=“10″/>
  38. ? ? x=“216″ y=“12″ label=“Compare” click=“button1_clickHandler(event)”/>
  39. ? ? id=“lb” x=“297″ y=“21″/>
  40. >

stringCompare é usado para comparar duas strings, um detalhe é que existe um terceiro parametro boolean para dizer se a comparação sera feita diferenciando letras maiusculas de minusculas ou não. Veja um exemplo:

PLAIN TEXT
MXML:

  1. “1.0″ encoding=“utf-8″?>
  2. xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3. ? ? ? ? ? ? ? ?xmlns:s=“library://ns.adobe.com/flex/spark”
  4. ? ? ? ? ? ? ? ?xmlns:mx=“library://ns.adobe.com/flex/mx” minWidth=“955″ minHeight=“600″>
  5. ? ? >
  6. ? ? ? ?
  7. ? ? >
  8. ? ? >
  9. ? ? ? ? [CDATA[
  10. ? ? ? ? ? ? import mx.utils.ObjectUtil;
  11. ? ? ? ? ? ?
  12. ? ? ? ? ? ? private function isStringsEqual(str1:String,str2:String):Boolean
  13. ? ? ? ? ? ? {
  14. ? ? ? ? ? ? ? ? var retorno:Boolean = false;
  15. ? ? ? ? ? ? ? ? var isEqual:int = ObjectUtil.stringCompare(str1,str2,true);
  16. ? ? ? ? ? ? ? ? if(isEqual == 0)
  17. ? ? ? ? ? ? ? ? {
  18. ? ? ? ? ? ? ? ? ? ? retorno = true;
  19. ? ? ? ? ? ? ? ? }
  20. ? ? ? ? ? ? ? ? return retorno;
  21. ? ? ? ? ? ? }
  22. ?
  23. ? ? ? ? ? ? protected function button1_clickHandler(event:MouseEvent):void
  24. ? ? ? ? ? ? {
  25. ? ? ? ? ? ? ? ? if(isStringsEqual(t1.text,t2.text))
  26. ? ? ? ? ? ? ? ? {
  27. ? ? ? ? ? ? ? ? ? ? lb.text = "Strings are equals!";
  28. ? ? ? ? ? ? ? ? }
  29. ? ? ? ? ? ? ? ? else
  30. ? ? ? ? ? ? ? ? {
  31. ? ? ? ? ? ? ? ? ? ? lb.text = "Strings are not equals!";
  32. ? ? ? ? ? ? ? ? }
  33. ? ? ? ? ? ? }
  34. ? ? ? ? ]]>
  35. ? ? >
  36. ? ? id=“t1″ x=“10″ y=“10″/>
  37. ? ? id=“t2″ x=“146″ y=“10″/>
  38. ? ? x=“282″ y=“10″ label=“Compare” click=“button1_clickHandler(event)”/>
  39. ? ? id=“lb” x=“363″ y=“19″/>
  40. >

toString funciona mais ou menos como o print_r do PHP, torna legivel um objeto e toda sua estrutura hierarquica. Veja um exemplo:

PLAIN TEXT
MXML:

  1. “1.0″ encoding=“utf-8″?>
  2. xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3. ? ? ? ? ? ? ? ?xmlns:s=“library://ns.adobe.com/flex/spark”
  4. ? ? ? ? ? ? ? ?xmlns:mx=“library://ns.adobe.com/flex/mx” minWidth=“955″ minHeight=“600″ creationComplete=“application1_creationCompleteHandler(event)”>
  5. ? ? >
  6. ? ? ? ?
  7. ? ? >
  8. ? ? >
  9. ? ? ? ? [CDATA[
  10. ? ? ? ? ? ? import mx.events.FlexEvent;
  11. ? ? ? ? ? ? import mx.utils.ObjectUtil;
  12. ?
  13. ? ? ? ? ? ? protected function application1_creationCompleteHandler(event:FlexEvent):void
  14. ? ? ? ? ? ? {
  15. ? ? ? ? ? ? ? ? var a:Object = {name:"Bob", info:[1,2,3]};
  16. ? ? ? ? ? ? ? ? var b:Object = {name:“Alice”, info:a};
  17. ? ? ? ? ? ? ? ? trace(b);
  18. ? ? ? ? ? ? ? ? trace(ObjectUtil.toString(b));
  19. ? ? ? ? ? ? ? ? //output in console
  20. ? ? ? ? ? ? ? ? /*
  21. ? ? ? ? ? ? ? ? first trace
  22. ? ? ? ? ? ? ? ? [object Object]
  23. ? ? ? ? ? ? ? ?
  24. ? ? ? ? ? ? ? ? second trace
  25. ? ? ? ? ? ? ? ? (Object)#0
  26. ? ? ? ? ? ? ? ? info = (Object)#1
  27. ? ? ? ? ? ? ? ? info = (Array)#2
  28. ? ? ? ? ? ? ? ? [0] 1
  29. ? ? ? ? ? ? ? ? [1] 2
  30. ? ? ? ? ? ? ? ? [2] 3
  31. ? ? ? ? ? ? ? ? name = “Bob”
  32. ? ? ? ? ? ? ? ? name = “Alice”
  33. ? ? ? ? ? ? ? ? */
  34. ? ? ? ? ? ? }
  35. ? ? ? ? ]]>
  36. ? ? >
  37. >

copy é usado para fazer uma cópia de um objeto usando um algoritimo de serialização nativa do Flash. Player. Muito útil para se trabalhar com objetos customizados e coleções.

DOWNLOAD SOURCE

Veja outros métodos:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/utils/ObjectUtil.html
ActionScript 3.0 Reference for the Adobe Flash Platform



Veja o post original no blog do autor aqui!  

Leonardo França

Escrito por Leonardo França @ http://www.leonardofranca.com.br
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» User Group Tour – Flash Platform
» Adobe TV Community Translation
» Proteção simples de conteudo com Flash Media Server

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com