Jun 15

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: 23%

Jun 5

Microsoft Surface

Para que ainda não viu a novidade da Microsoft, vale o clique:
Microsoft Surface

Se vc não conseguiu navegar no site por que usa Firefox ou Safari, ou outro browser diferente do IE, tem os vídeos disponíveis no ViuIsso?. Também vale a pena ouvir o Podcrer #15 que fala sobre o MS Surface e do iPhone, além do encontro Bill Gates e Steve Jobs.

O Luli Radfahrer deu sua opinião sobre o assunto no seu blog. E o designer Marcos Nähr também no seu blog.

Popularidade: 17%

Mi 28

A busca pela sintaxe perfeita do efeito tween com bezier

Já vai fazer 1 mês que vi o artigo no blog do zeh fernando e ainda não tive tempo de traduzí-la. Para não ficar sem o post, vou deixar só o link em inglês mesmo. De qquer forma, vale o clique já que foi um upgrade razoável na classe Tweener.

Para quem sabe o que são curvas bezier, o zeh deu um upgrade na classe para que, a partir de alguns dados, seja possível criar uma curva bezier e um movimento de um movieclip seguindo esta curva.

No post do blog, também encontramos um exemplo do Tweener aplicado junto com Papervision3D.

The search for the perfect bezier tweening sintaxe

Popularidade: 19%

Mi 21

Softwares alternativos para Photoshop, Illustrator, Acrobat e Dreamweaver

A ZDnet inglesa soltou um artigo que lista alguns softwares freeware / open source que trazem algumas funcionalidades semelhantes aos softwares Adobe.

Veja o artigo (em inglês).

Popularidade: 100%

Mi 16

Kuler

É o nome da aplicação RIA e web 2.0 da Adobe que permite criar temas com 5 cores usando conceitos de cor como cores análogas, monocromáticas, triplicidade, complementares, etc. É possível gravar seus próprios temas, ver temas de outros usuários, comentar, tagear os temas, exportar para o Photoshop CS2 e adicionar no swatches. Tem links interessantes para sites sobre teoria de cores, possui um widget que pode ser adicionado no dashboard do mac.
Confira aqui.

Popularidade: 20%

Mi 9

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: 20%

Mi 8

Podcrer

Confira o podcast semanal (toda segunda é publicado) criado por Vicente Tardin (webinsider) e Michel Lent (ViuIsso?, 10′minutos, listas WD).

Acesse aqui.

Popularidade: 20%

Mi 7

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: 21%

Abr 25

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: 23%

Abr 19

Conteúdo multimídia na web 2.0

Não sabia qual título colocar aqui, acabei colocando este mesmo. Acho que dá para ter uma idéia do que estou falando.
Estava navegando o site do Fred (Frederick van Amstel) - Usabilidoido, acabei achando um tópico bem interessante, tanto que estou aqui publicando este post.

Indo direto ao assunto, vale o clique:
O paradigma Web 2.0 e as oportunidades para brasileiros
Não vi muito sobre as oportunidades nesse artigo, mas achei interessante a apresentação que ele disponibiliza lá. Como ele mesmo colocou, “Estes slides serão usados na palestra de abertura da turma da Especialização em Desenvolvimento de Sistemas para a Web da UEM de 2007″. O Fred acrescentou muitos links interessantes na palestra, dois que valem a pena ver:
http://web2.0br.com.br/conceito-web20/
Web 2.0: O Rafinha explica

Além deste artigo, outra coisa que achei interessante, foi o vídeo do professor Michael Wesch dublado pelo Fred sobre “A máquina somos/está usando nós”, o vídeo se encontra linkado no artigo.

Popularidade: 21%

Fechar
E-mail It