15 Junho 2007

Adobe Flash CS3 - Migrando para o ActionScript 3

Migrando para o ActionScript 3

O novo Flash CS3 diferentemente dos anteriores vem com uma linguagem que outro software já vinha utilizando (Adobe Flex), porém, nem mesmo assim alguns desenvolvedores conseguiram migrar com facilidade, a linguagem de programação mudou como nunca, nem mesmo a mudança do ActionScript 1 para o ActionScript 2 (Flash MX 2004) representava tantas novidades. A migração desta vez é realmente significativa tanto em performance quanto em metodologia de desenvolvimento e facilitará muito o entendimento da linguagem agora totalmente renovada.
Neste artigo tentarei passar o que desenvolvedores mais antigos podem estudar para a migração da versão, que está mais poderosa do que nunca.

Display Object Container x MovieClip

Na versão anterior, ActionScript 2, o Flash sempre abusou da classe MovieClip, que era a principal classe para a construção de elementos visuais no Flash. Hoje, devemos pensar um pouco diferente, devemos usar a MovieClip somente quando possuímos frames, uma timeline interna ao objeto. Isso porque a classe MovieClip representa muito mais espaço na memória que um simples Shape, ou mesmo um objeto do tipo Sprite.
Em ActionScript 3, Shape é representado por uma classe, onde esta exibe simplesmente um desenho no Stage, ela não pode conter outros objetos dentro, representa a display object.
Para inserir objetos dentro de outros, assim como é feito com a classe MovieClip em AS2, devemos utilizar um objeto que representa a display object container, que é o caso da classe MovieClip e Sprite. A Sprite significativamente menor que a MovieClip em relação à memória, isso porque ela não contém frames, pode conter outros objetos dentro, mas não possui métodos como o play(), específico para MovieClip.

Undefined x Null

Os objetos que eram criados na ActionScript sempre eram representados por undefined, um tipo de objeto primitivo, porém, associado ao valor de uma variável. Na ActionScript 3 é retornado null ao invés de undefined quando pedimos o tipo string. Exemplo:

ActionScript 2

var software:String;
trace(software);
//retorna undefined
var numero:Number;
trace(numero);
//retorna undefined

ActionScript 3

var software:String;
trace(software);
//retorna null
var numero:Number;
trace(numero);
//retorna NaN (not a number)

Onde ficou o undefined? Temos o resultado undefined quando tipificamos o objeto como sem tipo definido, isso mesmo, qualquer instância:

var software:*;
trace(software);
//retorna undefined

Ou ainda em retornos indefinidos em funções que é representado pela keyword void (não mais Void), exemplo:

private function init():void{
}

Constantes

Constantes são como variáveis, porém, representam algo e mantém seu valor inalterado, por exemplo, PI, da classe Math.
Hoje podemos realmente dizer ao compilador quem é uma constante, não só pela representação textual em caixa alta, mas também pela sua definição:

ActionScript 2
var NUMERO_MINIMO:Number = 1;

ActionScript 3
const NUMERO_MINIMO:Number = 1;

Muito interessante não? Agora usuários de sua constante não mais poderão alterar o valor dela.

Propriedades MovieClip

Seguindo a convenção de nomes, que muitos desenvolvedores adotam, a Adobe retirou os antigos sinais underscore ( _ ) do início das propriedades da classe MovieClip:

import flash.display.MovieClip;

var quadro:Sprite = new Sprite();
quadro.graphics.beginFill(0x990000);
quadro.graphics.drawRect(50, 50, 100, 100);
quadro.graphics.endFill ();
quadro.alpha = 50;
quadro.rotation = 45;

Lembrando que as propriedades se encontram na DisplayObject, não mais em MovieClip, objetos do tipo MovieClip apenas contêm essas propriedades por derivarem da classe Sprite, que por sua vez herda DisplayObjectContainer.

Document class

Para mim, uma mudança fundamental, aguardava essa implementação desde o Flash MX 2004, onde foram inseridas as classes.
Alterar a classe da root é fundamental pra que você controle o projeto 100% via ActionScript, sem se quer abrir o Flash. Anteriormente não era possível fazer isso, as opções que tínhamos era inserir código no primeiro frame da timeline ou inserir um MovieClip no primeiro frame da aplicação convertendo-o posteriormente em classe, para assim teoricamente substituir a classe do documento principal.

Depths

Antigamente utilizados para manipular o nível de cada objeto visual no stage, agora substituído pela childIndex, mantém um padrão mais fácil para inserção de objetos visuais no palco:

import flash.display.Sprite;
import flash.geom.Matrix;
var matrix:Matrix = new Matrix();
matrix.createGradientBox(100, 100, 0, 50, 50);
var colors = [0x990000, 0xFF0000];
var alphas = [100, 100];
var ratios = [0x00, 0xFF];
var desenho:Sprite = new Sprite();
desenho.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, matrix);
desenho.graphics.drawRoundRect(50, 50, 100, 50, 20);
desenho.graphics.endFill();
this.addChild(desenho);

Como vemos, os objeto são criados, porém só estão visíveis a partir do momento que utilizamos o método addChild() para anexa-los a algum objeto.

Event handling

Os tratadores de evento foram incluídos no ActionScript 3 num padrão único, utilizados antigamente somente por componentes do próprio Flash e componentes criados com a classe EventDispatcher. Os quais eram utilizados da seguinte maneira:

import mx.controls.Button;

var adiciona:Button;
var listener:Object = new Object();

listener.click = function(evt:Object):Void {
trace(evt.target);
};

adiciona.addEventListener("click",listener);

Em ActionScript 3 manipulamos todos os eventos da mesma forma, porém cada string pode ser representada por uma constante, como no exemplo abaixo, onde utilizo o enterFrame:

import flash.events.Event;
import flash.display.Sprite;

var objeto:Sprite = new Sprite();
objeto.graphics.beginFill(0x990000);
objeto.graphics.drawRect(50, 50, 50, 50);
objeto.graphics.endFill();
objeto.addEventListener(Event.ENTER_FRAME, _onEnterFrame);

function _onEnterFrame(evt:Event):void {
evt.target.x += 2;
}

this.addChild(objeto);

Finalização

O Flash hoje é totalmente manipulado pela ActionScript, possui uma Orientação a Objetos rígida e está indo para um ponto diferente, onde escalabilidade, manutenção e performance são o ponto diferencial, além de manter o rico apelo visual que o Flash sempre proporcionou. Neste artigo foquei apenas alterações básicas no código, porém o Flash CS3 ActionScript 3 proporciona muito mais que isso, onde entramos no assunto sobre classes, visando maior expansão e reutilização de código… Maiores informações ou mesmo cursos na área podem ser obtidos na ENG, onde ministro treinamentos em todos os módulos da ActionScript 1, 2 e 3, o site é www.eng.com.br.
Espero que tenham aproveitado e aproveitem mais ainda essa ferramenta que hoje é um grande presente para os desenvolvedores para a internet rica, que cresce cada vez mais!

Autor: Leandro Amano

Site: www.leandroamano.com.br
Sobre: Leandro Amano atualmente é desenvolvedor Adobe/Macromedia e desenvolve aplicativos ricos (RIA) desde 2002, Adobe User Group Leader do Flashfor, diretor de criação da Digital Bug e instrutor Adobe/Macromedia na ENG DTP & Multimídia em São Paulo - SP e Curitiba - PR.

Popularidade: 19%

9 Maio 2007

Concorrentes do Flash

A Microsoft e a Sun já adequaram suas tecnologias para concorrer com o Flash/Flex em RIA. Veja:

A Microsoft lança o software Silverlight para enriquecer a próxima geração de mídias para experiência na web.
O lançamento foi em LAS VEGAS, 15 de Abril. É um plug-in que funciona em qualquer plataforma, qualquer browser, que vem enriquecer a próxima geração em experiência web (RIA) em Microsoft .NET.
Página do SilverLight
Press Release

A Sun lança o JavaFX no evento JavaOne 2007.
É uma nova família do Java para criação de RIA. Vem com duas versões: JavaFX Script e JavaFX Mobile.
Página do JavaFX
openjfx: página do projeto OpenJFX que distribuirá ferramentas para o JavaFX Script.

Popularidade: 16%

7 Maio 2007

Convertendo Código em AS2 para AS3

O Patrick Mineault postou no seu blog sobre seu conversor de AS2 para AS3.

Para ver funcionando, clique aqui (formulário em javascript).
Para fazer o download, clique aqui.

Confira o post do Patrick Mineault.

Popularidade: 17%

25 Abril 2007

Games em Flashlite

Alessandro Crugnola, autor do site sephiroth.it, deixou disponível um tetris para flashlite 2.1. E algumas outras informações úteis para quem está desenvolvendo conteúdo para celular. Confira o post: Flashlite and python games for my Nokia

Popularidade: 19%

17 Abril 2007

Novo Flash Player 9.0.45 e patch para Flex

Para baixar a nova versão do Flash Player clique aqui.

E depois de instalar a última versão, se você desenvolve em Flex, aplique também o patch do Flex Builder 2, caso contrário, dará um erro toda vez que você estiver debugando um app (especialmente se estiver usando Firefox).

Para saber mais:
sephiroth.it

Popularidade: 6%

Yahoo! cria espaço para desenvolvedores Flash

Na página Flash Developer Center do Yahoo! encontra-se uma série de bibliotecas e componentes gratuitos. Além de documentação e tutoriais sobre como usar a API.

Confira.

Popularidade: 6%

10 Abril 2007

Você já viu seu site pelo celular? (continuação)

A pedidos, tirei algumas fotos de como aparecem os sites no celular. Ainda estou organizando as fotos, mas já podem ser vistas.
Acesse no flickr

E para complementar, recebi uma mensagem numa das listas que participo falando sobre acessibilidade para celular:
Ja navegou em seu site de um celular

Popularidade: 5%

4 Abril 2007

Você já viu seu site pelo celular?

Esta provavelmente vai ser uma pergunta recorrente em alguns anos no Brasil para quem tem site. Aqui no Japão ainda não é o que acontece, mas acho que em pouquíssimo tempo deve acontecer.

Estou trabalhando numa empresa que vende celulares para brasileiros no Japão, isso me dá acesso a tecnologias que não tinha antes. Hoje temos um portal que é alimentado por um sistema bem simples (provavelmente baseado em CGI) voltado aos clientes. O nome do site é web-celular.com. Neste site temos algumas notícias, dicas, dicionários, músicas, fotos, entre outros conteúdos mais voltadas para quem é cliente mesmo.

Tecnologia
Pediram para que eu criasse uma versão do site atual para mobile. Para ser sincera nunca tinha mexido com isso antes. Mas como pediram para fazer, comecei a fazer uns testes.

Só para ter uma idéia, aqui no Japão temos atualmente 5 operadoras: NTT DoCoMo, au by KDDI, willcom, SoftBank (ex-vodafone) e a quase extinta Tu-Ka (que foi recentemente comprada pela au by KDDI). Cada operadora tem uma tecnologia própria (linguagem HTML própria) e ainda algumas contam com browser compatível com sites para PC. É como se voltássemos na época que a internet ainda não tinha muitos padrões e com muito mais browsers diferentes. Para o lado do servidor é isso mesmo, ele reconhece diversos USER-AGENTs e assim que podemos direcionar para qual endereço que vai se a pessoa acessar por celular.

Bom, para minha feliz surpresa, fiz um teste montando o site todo em XHTML MP (XHTML Mobile Profile) também conhecido como WAP 2.0 e funcionou em todos os browsers. O que mostra que tem sim algum padrão (ainda bem!).

Arquitetura de Informação
Comecei a esboçar como seria a arquitetura de informação para poder então começar a pensar no design. Defini como seria a navegação, apesar de ainda ser apenas uma versão do site atual, precisava ser reestruturada para se adequar ao celular.

No celular, obviamente, não temos muito espaço disponível, além disso, as pessoas não lêem tanto quanto numa tela de computador e também não têm tanto tempo para navegar. O conteúdo é enxuto, o que dificulta bastante a navegação. Acabei estrurando o site através de links básicos. Por isso, não usei mais o paradigma de menu fixo. A arquitetura de navegação acabou ficando com muitos subníveis, desta forma, a arquitetura passou a ser mais vertical.

Design
Assim, comecei a fazer o design. Aí que começou o maior desafio, não fazia idéia de como era o design de sites para celular. Não sou uma aficcionada por tecnologia, apesar de muita gente achar isso, e não costumo acessar tantos sites no celular, aliás nem tenho muita paciência para isso e também não tenho o celular com a melhor tecnologia - meu celular nem roda flash, e só recentemente descobri que ele lê QR code (um código que funciona de forma semelhante ao código de barra, onde é possível encriptar uma url).

Por isso, tive que começar a acessar mais, felizmente na empresa tem muitos celulares justamente para gente fazer testes. E assim pude ver como funcionava os diversos sites para as diferentes operadoras e aparelhos.

Basicamente, o design da web para celular parece muito com o que víamos em 1997, 1998, sites muito simples e toscos. Não tem nada muito elaborado (o meio não permite também) sem muitas imagens e sem formatações para os textos também. Vi muitos sites em japonês e alguns poucos em inglês.

Em cima disso, comecei a pesquisar para ver se era possível encontrar alguma referência (artigos ou imagens) que me dessem alguma idéia para tentar sair disso, afinal era muito tosca a solução.

Falando de internet para celular realmente não dá para colocar muita imagem já que fica muito caro o acesso. Então tudo tem que ser o mais compacto possível. Como resultado da pesquisa, encontrei alguns artigos que realmente me ajudaram a pensar no design:
Mobile Web Design: State of the Mobile Web
Pocket-Sized Design: Taking Your Website to the Small Screen

Esses artigos resumidamente, falam da questão da tecnologia, usar XHTML e das imagens como disse acima. Um deles fala sobre a questão de minimizar tudo x simplificar. Um caminho seria pegar todo o site atual e redimensioná-lo para caber na telinha do celular ou no máximo, reaproveitar boa parte do design e reproduzir através de ícones o menu fixo por exemplo. Outro caminho - que acabei escolhendo - seria simplificar o site, diminuir o número de imagens - colocando no parametro ALT do tag IMG em cada uma delas, palavras-chave - ou seja, adaptar todo o site para que se ajustasse ao novo meio. Tirei todas as outras tecnologias como flash, javascript. E criei um CSS para todo o site. Fiz um template para página interna que se constituía de um título e o logotipo no topo (uma das poucas imagens que coloquei), no meio entraria o conteúdo e o rodapé.

Jig
Depois de montar todo esse site - que não foi um trabalho jogado fora, em breve colocarei no ar. Fiquei sabendo desse browser para celular, a principal característica ele tem a capacidade de ler o site para PC. Pediram para que eu navegasse um pouco com ele para ver como ficaria os sites existentes. Esse browser não tem suporte para flash e javascript, ah frames também. Então tentei acessar os sites mais conhecidos, primeiramente os portais, Uol, Terra, depois comecei a navegar outros sites. Entrei no orkut, gmail, hotmail. Só o gmail funcionou, e aí depois acabei descobrindo uma url para celular do gmail. O orkut e o hotmail devem usar ajax, por isso não rolou. O google nem tentei pois já tinham tentado. O meu site mesmo também não tentei afinal, ele é em flash. Experimentei o flickr, ele funciona, mostra as imagens, mas a navegação fica bem complicada. Entrei no youtube, mas nada (flash). Entrei no blogger, e no blog da globo - 8p, funcionaram bem. Tentei entrar em chat para ver como era, nenhum rolou também. Como já estava ficando impaciente em navegar no celular - aquela tela pequena incomoda ainda.. Resolvi parar por aí. Conclusão: sites com notícias ou blogs funcionam bem, mas só isso também. Ah, e o gmail na versão para celular.

Ainda tem mais coisas para falar sobre como são as coisas aqui em termos de internet para celular, mas como acho que acabei me extendendo demais, vou ficando por aqui. Outra hora coloco mais coisas.

Popularidade: 7%

13 Março 2007

Tweener, atualizações na classe MC Tween.

Galera, pra quem usava ou usa o MC Tween pra animações via código, eu queria anunciar que recentemente fiz uma nova classe de tweening. Ainda é baseada na idéia do MC Tween - tweens diretos/fáceis/rápidos em uma linha - mas usa uma sintaxe meio diferente. Esse novo, chamado de “Tweener”, é uma classe estática ao invés de prototypes, e é feito pra AS2 e AS3.

Ainda faltam alguns recursos, como tweening de filtros nativamente, mas eu pessoalmente acredito que funciona melhor que o MC Tween; cria um código mais legível e tem uns recursos a mais pra poder fazer tweenings muito complexos.

Pra quem estiver interessado, tem mais informações aqui (em inglês). Pra quem usa/usava MC Tween, tem uma comparação direta das diferenças aqui (também em inglês). Já o site em si, com downloads e documentação, é este (também em inglês).

Tweener já tem um ano e meio, mas só agora é “pública”. É ela que tenho usada em todos os projetos recentes do meu portfólio, por isso achei que seria legal divulgar aqui. Então, qualquer coisa, me desculpem pelo pimping.

publicado por zeh fernando no fórum.

Popularidade: 6%

8 Março 2007

Arte + Programação

Já faz uns anos que estou vendo isso na net. Não sei se alguém tem interesse no assunto, ou se é por falta de divulgação.. Estudei um pouco mais a fundo na pós graduação e foi lá que percebi que realmente gostava disso e que poucas pessoas sabem sobre isso. O assunto é sobre os trabalhos de alguns “artistas” digitais, que realizam seus projetos experimentais usando tecnologia para criar arte. Acho que um dos precursores é o John Maeda, que já escreveu diversos livros mostrando suas experiências.

Pra quem não conhece seu trabalho, pode visitar:
Maeda Studio

Sobre ele:
Conhecido mundialmente, designer gráfico, artista, cientista da computação no MIT Media Lab. Seu trabalho redefiniu o uso da mídia eletrônica como ferramenta de expressão combinando programação com a sensibilidade de um artista.
MIT Media Lab: John Maeda
John Maeda

Também tem um blog
Simplicity

Outro nome que vemos nessa área é o Joshua Davis. Ele é um designer que acabou também juntando programação (em Flash) com design, e aplicou tudo isso em trabalhos para clientes.

joshua davis | studios
Digital Web Magazine - Joshua Davis

Aí no meio disso tudo, veio a linguagem processing. Baseada em java, vem tentar preencher o espaço facilitando a produção de experiencias visuais através de programação para quem não necessariamente conhece tanto de programação assim: designers e artistas.

Processing 1.0 (BETA)

Além destes que já citei, tem mais algumas pessoas que criam experiências visuais com programação:
Levitated | the Exploration of Computation
flight404
GroupC / Casey REAS
P I T A R U
bredandawes.com / sketches
Gallery of Comptation | generative artifacts
ARSE i Am

Popularidade: 5%

Fechar
E-mail It