Ultimas Entradas »
Ultimos Comentários »
Entradas Populares »

Tutorial Action Script 3 - 011

Escrito por Mário Santos em Julho 2, 2008 – 7:11 am

Em continuação com o tutorial…

Esta parte já foi incluída no livro aqui disponibilizado para download…

Vejamos o seguinte código de um package devidamente comentado:

package teste
{
import flash.events.Event;
import mx.containers.Panel;
import mx.controls.Label;
import mx.events.ChildExistenceChangedEvent;
import mx.events.FlexEvent;

public class teste extends Panel
{
//colocamos a imagem como embed (incoporada no nosso applicativo e definida
//com a variavel imediatamente em baixo (iconImg) disponivel na forma de class.

[Embed("flexBtn.png")]
private var iconImg:Class;

/*Esta propriedade estará disponivel como elitura/escrita por exemplo: 
meuPainel.nomePessoal */

[Bindable]
private var _nomePessoal:String;

//Disponivel como dataCriacao em modo de leitura apenas; meuPainel.dataCriacao
private var _dataCriacao:String;

//variavel temporaria usada para saber as horas/minutos/segundos usados em baixo
private var dados:Date = new Date;

public function teste()
{

//definimos o painel
this.width=270;
this.height=270;
this.x=0;
this.y=0;

//adicionamos o eventListner
this.addEventListener(FlexEvent.CREATION_COMPLETE, criado,false,0,true);

}

private function criado(evt:FlexEvent):void {

/*definimos a hora exacta da criação do painel, com recurso ao date, neste 
caso d variavel dados */

_dataCriacao=dados.getHours()+":"+dados.getMinutes()+":"+dados.getSeconds();

//adicionamos o icon ao painel
this.titleIcon=iconImg;

//verificamos se o nomePessoal foi definido
if(!_nomePessoal) {

/*se o nome nao tiver sido dados, damos um nome temporario, no caso será dados como:
Teste Painel "numero" onde o numero será um valor aleatorio entre 0 e 15, este
numero é conseguido através do Math.floor(Math.ramdom()*15); */

_nomePessoal="Teste Painel "+Math.floor(Math.random()*15);

}

/*vamos usar um label que indica o nomePessoal e a hora da ciração do painel, este
Label desaparecerá assim que forem adicionados filhos ao painel, para isso usamos 
um evenListner*/

var lbl:Label = new Label;
lbl.name="status";
lbl.x=0;
lbl.y=0;

//definimos o texto
lbl.text=_nomePessoal + " criado em: "+dataCriacao;

//adicionamos como child ao painel
this.addChild(lbl);

//event listner para sabermos quando foi adicionado um filho ao painel para
//podermos remover o label colocado em cima.

this.addEventListener(ChildExistenceChangedEvent.CHILD_ADD, remove, false, 0, true);

//despacha o evento terminado personalizado
this.dispatchEvent(new Event("btnsProntos"));

//remove o eventListner terminao, visto que apenas será disparado uma vez.
this.removeEventListener(FlexEvent.CREATION_COMPLETE, criado);

}

private function remove(evt:ChildExistenceChangedEvent):void {

//função para remover o label com o nome e hora de ciração, isto acontece quando é
//adicionado um filho ao painel.

//removemos o child 0 (é o child lbl usado em cima, é o numero zero porque nada 
//mais foi adicionado ao painel)

this.removeChildAt(0);

//removemos o event listner caso contrario se forem adicionados mais que um filho
//esta função vai remover sempre o ultimo inserido

this.removeEventListener(ChildExistenceChangedEvent.CHILD_ADD, remove);

}

/*como quero apenas que a propriedade de dataCriacao seja apenas de leitura, fazemos
apenas a função para ler esse valor, com o get, chamado getter */

public function get dataCriacao():String {

return _dataCriacao;

}

/*como quero que a propriedade _nomePessoal seja quer de leitura, quer de escrita,
tenho que dizer à nossa classe que pode disponibilizar ou receber conteudo de/nessa
variavel, fazendo isso com as funções get e set **/

public function get nomePessoal():String {

return _nomePessoal;

}

//Recebe uma string como nome
public function set nomePessoal(nome:String):void {
_nomePessoal=nome;

}

}

}

No exemplo em cima usei já uma class mais complexa, mas como está devidamente comentada será bem facil de perceber. Neste exemplo podemos entender o seguinte; É usado um Painel como base, (extends) e as suas propriedades…depois disso é automaticamente adicionado um titleIcon exemplificando atributos herdados do pai (Panel).

Read more »


Tags: , , , , , , ,
Escrito em Action Script & MXML, Flex | 1 Comentário »

Flex deepLinking - Parametros browser

Escrito por Mário Santos em Maio 13, 2008 – 10:07 am

Ontem tive um pequeno problema a desenvolver parte de um aplicativo (o frontend para o meu sistema imobiliário) onde necessitava de saber onde estava a correr o aplicativo, bem como o caminho relativo do servidor, já que tinha que obter varios caminhos para fotografias onde esses caminhos poderiam variar. Ou seja, precisava de saber o caminho onde as minhas fotos se encontravam, já que se estivesse a correr apenas em, por exemplo www.msdevstudio.com/immo/frontend/ saberia exactamente onde encontrar as minhas fotos, que estariam no caminho absoluto www.msdevstudio.com/immo/frontend/imgs mas o problema seria se mudasse de servidor, as fotos poderia passar a estar em www.meuserverto.com/imgs e aí teria que programar o flex para ir procurar as fotos a este caminho… mas dizem voces, porque não usar apenas source=”imgs/imgExempo1.png” ? pelo simples motivo que necessito de juntar algumas fotos a um HTML text, bem como dar a possibilidade do user mudar a directoria das imagens e os caminhos relativos. (não encontrei outra solução para já…)

Bom, dei de caras com as propriedades deepLink, que podem ser obtidas atravéz do browserManager/URLUtil, por isso fiz um pequeno exemplo que podem usar nas vossas aplicações, copiando o contudo do arquivo que disponibilizo em baixo para a raiz da vossa aplicação, depois basta fazerem o import na vossa aplicação:

import com.msdevstudio.urlUtils;

São então disponibilizadas as seguintes funções:

getPort():String

getProtocol():String

getServer():String

getDoc():String

getTodo():String

getPath():String

onde para receberem os respectivos elementos devem usar:

   1: var util:urlUtils = new urlUtils();
   2: //tomando como exemplo o link: http://msdevstudio.com/immo/backend/backend.html
   3:
   4: //buscar nome do servidor:
   5: var nomeServidor:String = util.getServer();
   6: //devolve: msdevstudio.com
   7:
   8: //buscar protocolo
   9: var protocolo:String = util.getProtocol();
  10: //devolve http
  11:
  12: //buscar porta
  13: var porta:String = util.getPort();
  14:
  15: //buscar url completo
  16: var urlCompleto:String = util.getTodo();
  17: //devolve http://msdevstudio.com/immo/backend/backend.html
  18:
  19: //buscar caminho relativo 
  20: var caminho:String = util.getPath();
  21: //devolve http://msdevstudio.com/immo/backend/
  22:
  23: //buscar o nome do portador do swf
  24: var documento:String = util.getDoc();
  25: // devolve backend.html

Isto não é nada mais que um simples package que simplifica as coisas em aplicações medias/grandes e que em muitas variadas situações se torna muito util.

Podem fazer o download aqui.

fiz um package pelo simples motivo de ajudar a quem ler a perceber como um package funciona, bem como se podem tornar simples a utilização destes packages principalmente pela sua reutilização por outros programadores e outras aplicações. Podem ver o código comentado também.

Aguarda-se feedback.

pdf Este artigo está disponivel em pdf para download.


Tags: , , , , , , , , ,
Escrito em Action Script & MXML, Flex | 1 Comentário »

15 Flex & AS3 Feed’s rss a não perder!

Escrito por Mário Santos em Maio 13, 2008 – 8:21 am

Que os feed’s foi a melhor coisa que inventaram eu não tenho duvida, e já à muito que uso o thunderbird como cliente de email e leitor de feed’s. (recomendo vivamente)

Alem de estar sempre a par das ultimas novidades em tudo quanto é área, podemos realmente ter acesso a feed’s de sites muito bons, que revelam muito boa qualidade.

Dos cerca de 120 feed’s que tenho no thunderbird, vou começar por ir deixando uma lista de vez a quando no blog, não se assustem porque quase todos os feed’s estão em inglês :( mas é onde se encontra muita informação de boa qualidade (não estou a desprezar o que se faz de bom em PT)

Aqui vai:

Flex Examples (não podia faltar) - http://feeds.feedburner.com/blogspot/PmCX?format=xml

Alex’s Flex Closet - http://blogs.adobe.com/aharui/atom.xml

Beedigital - http://www.beedigital.net/blog/feed/

Building blocks - http://joelhooks.com/feed/

Digital Backcountry - http://feeds.feedburner.com/ryanstewart

Eric feminella - http://www.ericfeminella.com/blog/wp-rss2.php

James Ward - http://www.jamesward.org/wordpress/feed

Metah AS3 - http://www.metah.ch/as3/rss.php

Ntt.cc - http://feeds.feedburner.com/Nttcc?format=xml

John Nack - http://blogs.adobe.com/jnack/index.xml

Mike Potter - http://feeds.feedburner.com/adobe/mpotter

Flex Doc Team - http://blogs.adobe.com/flexdoc/atom.xml

Kiwi Project - http://feeds.feedburner.com/kiwiproject

Penguin.SWF - http://blogs.adobe.com/penguin.swf/atom.xml

Adobe Design Center - http://feeds.feedburner.com/AdobeDesignCenter

Como repararam, muitos destes feed’s pertencem a blog oficialmente suportados pela adobe e seus programadores, ou seja, quero dizer que a adobe ainda é o melhor recurso para informação de qualidade em inglês… quanto a português, brevemente coloco alguns feed’s que bons blog’s que por aí se encontram :)

gp:


Tags: , , , , , , , , ,
Escrito em Action Script & MXML, Air, Flex | 2 Comentários »

Top 10 erros ao desenvolver aplicações Flex.

Escrito por Mário Santos em Abril 29, 2008 – 11:35 am

Vi um post bastante interessante no site www.infoq.com que fala dos Top 10 de “enganos/erros/confusões” a quando da programação de uma aplicação em Flex. Este post fala de aspectos muito interessantes e importantes que devemos ter em atenção ao construir uma aplicação em Flex. Como este post se encontra em inglês, vou tentar fazer uma tradução em português, para que seja mais fácil a sua compreensão, bem como adicionar algumas opiniões pessoais. Vale a pena ler!! Começando. 1. Usar uma framework RIA para construir aplicações Web 1.0 - (Nova tecnologia, velhos hábitos)

Um dos maiores desafios a quando da mudança de aplicações web 1.0 para o desenvolvimento de Ria’s é aprender a pensar diferente. O flex disponibiliza um conjunto de componentes que permite fazer coisas que eram impensáveis e impossíveis de fazer à apenas uns anos atrás. Por vezes essa possibilidade é esquecida e a framework acaba por ser utilizada apenas para implementar as tradicionais aplicações Web 1.0. Construir aplicações Web 2.0 é mais do que um actualizar parcial de uma pagina e adicionar cantos redondos em divs. Para isso é altamente recomendado recorrer apenas ao Javascript/Ajax e Css e não desperdiçar tempo com o Flex, porque o flex deve ser usado sim para oferecer um design e funcionalidade atractiva para os utilizadores. Se já são programadores java, aprender Action Script 3 e a linguagem de interface será brincadeira de criança. O maior desafio por vezes é que os programadores não estão habituados a “desenhar” visualmente a sua aplicação, e para o desenvolvimento de ria’s é um “must-know” ter alguns conhecimentos de design. A programação pode ser muito boa, mas a verdadeira “força” do Flex está no seu aspecto visual aliado à sua versatilidade.

2. Quebrando aspectos standard dos browsers.

Enquanto o Flex providencia uma excelente plataforma para melhorar a experiência e agradar o utilizador, continua a ser muito importante manter o aspecto “familiar” do site/aplicação como os botões anteriores e seguintes do browser, bookmarking e auto-complete. Ao contrário do que às vezes se pensa, estes aspectos não são difíceis de implementar no Flex. O flex 3 já inclui propriedades “deep-linking” para suportar os botões seguinte e anterior bem como bookmark. E aspectos como o “auto-complete” pode ser facilmente implementado, até mesmo usado alguns componentes. Deep Linking @ labs.adobe.com - Flex Wiki. Auto complete; Exemplo e componente @ AutoComplete Input

3. Muitos “containers” reduzem o desempenho da aplicação.

O flash player utiliza uma hierarquia gráfica para apresentar objectos parecida com objectos DOM em HTML. Quantos mais “containers” forem usados, mais tempo leva a rederização. No centro de desenvolvimento Flex da adobe (Adobe’s Flex Developer Center) pode-se encontrar um artigo que fala das melhores práticas relacionadas com a performance do Flex, incluindo o uso de “containers”. O maior inimigo da performance do Flex está relacionado com a tentação de usar muitos “containers” para melhorar o aspecto da nossa aplicação, mas isso aumenta muito negativamente a performance do Flex. Este é o pior inimigo da performance do Flex, e felizmente é 100% contornável, bastando fazer uso moderado destes mesmos containers.

4. Usar XML para transferência de dados em protocolos (já optimizados), reduz o desempenho.

O flex oferece aos programadores um grande número de opções de comunicação entre o Flex e tecnologias servidor, incluindo AMF3, XML, SOAP, e pedido HTTP directos. Podem ver um exemplo do uso destas tecnologias bem como os “benchmarks” aqui. O BlazeDS (open source) actualmente com suporte da adobe, deve ser uma escolha quase obrigatória em projectos que usem backend em Java, fazendo uso do protocolo AMF3. O AMF é um protocolo de transferência binária que facilmente se integra com o Java, PHP, Python ou praticamente qualquer linguagem server side, recorrendo a diversas variações especificas para as variadas linguagens e que oferece muito mais fiabilidade e performance.

5. Tentar contratar um programador Flex “pode não ser a melhor nem fácil escolha”.

Programadores Flex experientes e com credenciais, ainda são muito difíceis de encontrar e os que se encontram são pagos a peso de ouro. Actualmente o Flex encontra-se em vias de adopção como foi o java nos finais dos anos 90. O pedido de programadores flex continua a exceder as ofertas o que torna muito dificil encontrar um bom programador de Flex, mas ao mesmo tempo cria uma grande oportunidade para os programadores Java e não só expandirem os seus conhecimentos e adoptar o flex como framework de desenvolvimento. Muitas empresas que procuram programadores Flex acabam por contratar pessoas que conhecem bastante bem o Java ou outras linguagens de aplicativos Web, e dada a escassez de profissionais Flex, acabam mesmo por dar ao longo de algumas semanas acções de formação de Flex já que a sua linguagem e API’s são facilmente aprendidas por qualquer pessoa que esteja já familiarizada com programação Web e GUI’s.

6. Não usar exageradamente animações e efeitos.

Usando o flash como plataforma de distribuição, facilmente um programador flex se sente tentado a usar e abusar dos “one-line-effects” que o flex traz, mas os programadores apenas devem usar estes efeitos quando eles são mesmo necessários, e nunca os usar sabendo que o utilizador se distrairá do contexto da aplicação. O uso exagerado de efeitos pode cansar o utilizador!! Os efeitos no flex, bem como as suas durações devem ser tidos em conta, e se puderem contar com uma ajuda e percepção visual de um “Designer” melhor, assim com certeza que terão uma aplicação bem mais agradável. Muitas das animações são simplesmente muito longas, lentas, chatas e por vezes excessivas. Reduzam as animações!! Se existe alguma coisa que os utilizadores não gostam é ter que esperar pelo terminar de uma animação, que por vezes nem agrada, para poderem começar a usar o aplicativo. Não se pretende terminar com as animações no flex, mas sim sensibilizar para o bom uso das mesmas. Cada animação/efeito deve ter um propósito e serem aplicados moderadamente!! Podem ver um artigo bem interessante sobre animações e efeitos aqui.

7. Não definir um “eco-sistema” na empresa.

Como em todos os trabalhos de programação de projectos de software, também no flex é extremamente importante montar um “eco-sistema” para desenvolver aplicações. O TTD (Test Driven Development, ou desenvolvimento “assistido”), é um marco em qualquer projecto de qualquer empresa. Para o Flex, o FlexUnit framework serve precisamente para programar “unit tests”. No Adobe Developer Connection, o Neil Webb discute a utilização do TTD para programadores Flex, usando o FlexUnit. (podem ver o post aqui ). Existe também o Flexcover para “code coverage reporting”, algo como “relatórios de cobertura do código”. A integração contínua (CI), está provada como sendo uma boa pratica para construir e programar Flex quando o projecto é desenvolvido por mais que um programador. Em semelhança ao Java, as plugins Ant e Maven também estão disponíveis para integração contínua de aplicações Flex.

8. Não usar a framework por completo.

Existe um número elevado de “features” opcionais no Flex que devem ser consideradas no desenvolver de uma aplicação. Por exemplo Runtime Shared Libraries (RSL) podem ser usadas para diminuir bastante o tamanho das aplicações. O tamanho de uma aplicação pode ser reduzido utilizando referencia directas a ficheiros/imagens/scritps que podem ser separadamente transferidos do servidor para a cache do computador do utilizador. Esta operação obriga que varias aplicações que utilizem estes mesmos “assets” sejam carregados na “runtime”, mas o utilizador apenas as descarregará para o seu computador apenas uma vez. Estes ficheiros/imagens/scripts partilhados são chamados de Runtime Shared Libraries. Outra das “features” pouco usadas da framework, são as características de usabilidade já incluídas no Flex. Podem ler mais sobre estas características aqui. Quem deseja realmente respeitar e usar acessibilidade nas suas aplicações, o flex torna simples essa tarefa e oferece muitas características como podem ver aqui.

9. Não usar “renderers” complexos em DataGrid’s.

O itemRenderer original para as dataGrid’s já está muito optimizado! (e por consequência ao serem alterados ou implementados irão causar diminuição do desempenho, falado no ponto 3.) O número de “item renderers” que são “compilados” pela dataGrid multiplica-se pelas linhas e colunas da tabela, criando uma enorme quantidade de código. Para minimizar esse impacto, deve-se utilizar os “itemRenderers” quando são realmente necessários e estes devem ser o mais optimizados possível. Quando itemRenderes mais elaborados e complexos são mesmo necessários deve-se usar um UIComponent (ou outras classes “low-level”) e colocar o seu conteúdo para a linha/coluna manualmente.

10. Não preparar a nossa aplicação para modo Offline.

O modelo tradicional das Ria’s é orientado para o browser, mas tecnologias como o Adobe AIR ou o Google Gears actualmente permitem que as aplicações Flex sejam executadas offline. Não preparando as aplicações para uma possível execução offline, se o utilizador/cliente a desejar em modo offline, as coisas tornam-se bastante difíceis de transformar, já que teríamos que refazer grande parte do código da aplicação. Tipicamente, aplicações de negócio/empresariais, correm num servidor. Uma ria em modo offline, permite muito mais “expansão” para o cliente/utilizador, pelo que a arquitectura da aplicação deve poder ser facilmente implementada e transformada de/para modo online/offline.

Bom, e assim termino, a tradução não foi feita à letra, mas penso que a excelente qualidade informativa do post original, mereceu este meu trabalho de “tradução.”

Foi util??

Um abraço.

Este artigo está disponivel em pdf para download.


Tags: , , , ,
Escrito em Action Script & MXML, Air, Design & Web Design, Flash, Flex, photoshop | 3 Comentários »

Adobe video workshop - Mais uma pérola!!

Escrito por Mário Santos em Abril 28, 2008 – 6:51 pm

A adobe não para de me surpreender, depois do lançamento da Adobe Creative Suite 3 (CS3) que vinha acompanhada na sua “full release” com um dvd de “video tips”, eis senão que descubro no site da adobe, esse mesmo dvd (em vídeo, será?), que ainda não tive tempo para verificar se os vídeos são todos do conteúdo desse dvd que acompanha a CS3, mas pelos que vi parece mesmo que o conteúdo está todo lá.

Apesar de englobar apenas os produtos cs3, tais como o Ilustrador, Photoshop, Fireworks, Bridge, Contribute, Flash e não dedicar muito ao desenvolvimento de ria’s, é interessantíssimo para todos, mesmo os programadores, para todos ficarmos a ganhar com interfaces e conhecimentos da grande vantagem do conhecimento dos produtos da adobe.

Os vídeos online resultam de uma parceria da adobe com a lynda.com que resultou num excelente trabalho.

Bom, os curiosos já estão fartos de ler, por isso aqui vai o desejado link para o “Adobe Video Workshop” e paciência para os cerca de 180 vídeos Flex Powered!!

http://www.adobe.com/designcenter/video_workshop/

Um pérola, não?!

Edit: Só agora que descobri mais referençias a esse video workshop que afinal já está online desde a segunda metade do ano passado… epah…!! ando atrasado!! mas é um boa noticia na mesma, pode ser que não seja o unico a nao saber!! :P

Abraço.


Tags: , , , , , ,
Escrito em Design & Web Design, Flash, Notícias, Tutoriais, photoshop | Sem Comentários »

Seminarios Adobe Online, finalmente os downloads!!

Escrito por Mário Santos em Abril 17, 2008 – 2:50 pm

image

Depois de muito procurar e virar de “ponta-cabeça” o site da adobe não consegui encontar nada que referisse aos tais seminários que notifiquei aqui no post seminários adobe online coisa que achei bem estranha já que na altura da subscrição desses mesmos seminários era-nos dito que seriam gravados e disponibilizados para download, coisa que parece que ainda não foi propriamente feita…

Depois de algum trabalho pelos meandros de vários motores de busca lá consegui começar a colher informações de onde se encontravam estes seminários… ainda não estão propriamente disponíveis para download, mas já podem ser vistos no centro “multimédia” do Adobe Acrobat Connect.

Apenas não consegui encontrar 3 destes seminários, mas em contra-partida encontrei alguns também bem interessantes, então deixo aqui a lista:

Flex Architecture - http://seminars.adobe.acrobat.com/p13859376/

AIR Native Drag and Drop - http://seminars.adobe.acrobat.com/p48733864/

ILOG Elixir: Your Remedy for Vibrant Data Visualization - http://seminars.adobe.acrobat.com/p97866770/

The Essential Guide to Dreamweaver CS3 with CSS, Ajax, and PHP - http://seminars.adobe.acrobat.com/p67172044/

Flex Visual Data & Charting - http://seminars.adobe.acrobat.com/p29446240/

Adding Live Chat with ColdFusion & Adobe Blaze DS - https://admin.adobe.acrobat.com/_a227210/p41591416/

Flex Data Services - http://seminars.adobe.acrobat.com/p41615224/

Flex and Java - https://admin.adobe.acrobat.com/_a227210/p87391680/ & http://seminars.adobe.acrobat.com/p60809699/

ColdFusion Powered Rich Applications for the Internet and Desktop - http://seminars.adobe.acrobat.com/p71068630/

Flash Lite and Flex for Tourism - http://seminars.adobe.acrobat.com/p45858446/

Adobe AIR Local Data Storage Options With Emphasis on Using Embedded SQL Databases - http://seminars.adobe.acrobat.com/p78202681/

Dreamweaver: Effective Standards-based Workflows for Ajax - http://seminars.adobe.acrobat.com/p31899782/

Building AIR Applications with Flash CS3 - http://seminars.adobe.acrobat.com/p69012000/

Integrating Salesforce.com and Flex - http://eminars.adobe.acrobat.com/p59832774/

Building Rich Internet Applications with Flex 3 - http://seminars.adobe.acrobat.com/p34983052/

What’s New in ColdFusion 8 - http://seminars.adobe.acrobat.com/p91837280/

Extending Web to the Desktop with AIR - http://seminars.adobe.acrobat.com/p36566625/

Extras:

Introduction to Flex Data Services - http://seminars.adobe.acrobat.com/p41615224/

AIR applications with ColdFusion and Flex 3 - http://adobechats.adobe.acrobat.com/p12001735/

BlazeDS Revealed - http://experts.acrobat.com/p90783934/

Debugging Flex Applications - Atl Flash/Flex UG - http://adobechats.adobe.acrobat.com/p91186888/

Introduction to Ant - http://experts.acrobat.com/p53858056/

Flex Application Frameworks - https://admin.adobe.acrobat.com/_a200985228/p12266504/

Load Testing Flex Applications with WebLOAD - https://admin.adobe.acrobat.com/_a227210/p18269627/

ColdFusion 8 and Flex 3: RIAs development just got easier - https://admin.adobe.acrobat.com/_a227210/p73818848/

Flex for .NET - https://admin.adobe.acrobat.com/_a227210/p78614671/

Bem, acabou a lista, bem grande por sinal, mas com a certeza de muita utilidade!

Cumprimentos.


Tags: , , , , , , , , , , , , , , ,
Escrito em Action Script & MXML, Air, Ajax, Análises, Design & Web Design, Flash, Flex, HTML, XHTML, CSS, Java Script, Notícias, PHP, RIA's Geral, Source Code, Tecnologia, Tutoriais | 1 Comentário »