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%

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%

22 Março 2007

APE - Actionscript Physics Engine

APE (Actionscript Physics Engine) é um motor (engine) opensource que simula objetos físicos 2D  feito em AS3 para uso no Flash e Flex. É a continuação do projeto Flade (Flash dynamics engine) em AS2. APE é escrito e mantido por Alec Cove.

Para ver as demonstrações do APE e do Flade segue abaixos dois links:

http://www.cove.org/ape/demo1.htm (APE)

http://www.cove.org/default.aspx?id=1&sid=1&mid=4 (Flade)

Site ofical do projeto:

http://www.cove.org/ape/index.htm 

Vale a pena conferir o código e entender, ou pelo menos tentar, como funciona a engine.

Popularidade: 6%

15 Março 2007

Google Talk, versão flash.

O Google lançou uma versão em flash do seu Google Talk. Tem muitos recursos tais como compartilhar vídeos do YouTube, ou fotos do Picasa.

Se quiser experimentar: http://www.google.com/ig/add?moduleurl=googletalk.xml

Para saber mais: http://googletalk.blogspot.com/2007/03/google-talk-gadget.html.

Já estou lá. Se quiserem me adicionar, celina.uemura@gmail.com.

Popularidade: 5%

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%

9 Março 2007

Páscoa

Já entrando em clima de Páscoa quero mostrar para vocês um joguim feito em flash sobre esse evento cristão. Mas que acaba influenciando a vida de todos.

O link do joguo é esse: Orisinal.com - Winterbells

O objetivo é pular com o coelhinho sobre os sinos que vão descendo. Objetivo fácil e jogo viciante, combinação perfeita para alguns bons minutos de entreterimento.

Para quem quiser ver meu novo recorde é só clicar na imagem abaixo. Realmente acabei me viciando.

Recorde

Agora é só se divertir e apreciar esse jogo feito em flash, e por sinal muito bem feito.

[update]

Gente pelo amor de Deus tenho que parar de jogar.

New Recorde

[/update]

Popularidade: 5%

25 Fevereiro 2007

iJigg

O iJigg é um site parecido com o Youtube porém para músicas.

Com a teconlogia streaming e o SWF como player torna o site bem rápido e agradável. Também como o Youtube você pode colocar a sua música preferida em seu site (blog), passando o mouse sobre option e depois clicando em embed aparecerá o código HTML.

Vale a pena dar uma conferida:
http://www.ijigg.com/

Popularidade: 4%

23 Fevereiro 2007

Flash 9 ActionScript 3.0 Preview

Pessoal a Adobe também lançou o Flash Professional 9 ActionScript 3.0 Preview, trata-se de uma v ersão beta do Flash para o pessoal já ir testando a nova versão do ActionScript.
Para saber mais informações e baixar, clique abaixo:
http://labs.adobe.com/technologies/flash9as3preview/

Apesar de usarem o nome Flash 9 na versão de testes e nome real do novo Flash será Flash CS3 Professional, para ver um screanshot do programa, clique no thumbnail abaixo:
Flash CS3 Professional

Popularidade: 7%

Fechar
E-mail It