Paradigmas de Linguagens
Computacionais
História do ActionScript
Equipe: Caio César Neves de Oliveira (ccno)
João da Rocha Pascoal Neto (jrpn)
Mário Barbosa de Araújo Júnior (mbaj)
Tiago Farias Silva (tfs)
Índice
INTRODUÇÃO ........................................................................ 3
HISTÓRIA .............................................................................. 3
PARADIGMA DE PROGRAMAÇÃO ............................................ 4
UTILIZAÇÃO .......................................................................... 5
SINTAXE ............................................................................... 5
ESPECIFICAÇÃO .................................................................... 6
IMPLEMENTAÇÃO .................................................................. 7
AMBIENTE DE DESENVOLVIMENTO ......................................... 8
EXEMPLOS DE PROGRAMA .................................................... 9
VANTAGENS E DESVANTAGENS ........................................... 10
CONCLUSÕES ..................................................................... 11
REFERÊNCIAS ..................................................................... 12
Introdução
ActionScript é uma linguagem de script baseada no ECMAScript (linguagem
usada para web, possui referência para javaScript), basicamente associada
como um script de comportamento da aplicação Adobe Flash. Atualmente na
versão 3.0, o ActionScript revolucionou o formato flash, que oferecia
inicialmente mais do que uma animação linear típica. Com o ActionScript,
aplicações pode prover uma excelente experiência de interatividade, além de
um suporte de conexão pela web, graças a um completo conjunto de
componentes.
Aplicações desenvolvidas utilizando Adobe Flash ou Adobe Flex irão oferecer o
uso de ActionScript para manipulação Runtime de informações e conteúdo.
Outras plataformas como o ColdFusion suportam também scripting com a
linguagem de ActionScript.
História
Nas primeiras versões do Macromedia Flash, o suporte a codificação era muito
escasso e limitado a funcionalidades básicas, tais como play() e stop(). Assim
que o Flash começou a se tornar um formato de mídia poderoso e viável para a
web, desenvolvedores começaram a querer estender os limites da "linguagem"
até então existente para uma linguagem de maior poder e robustez.
Novas funcionalidades foram sendo incrementadas nas versões mais novas do
Flash, mas a linguagem, hoje conhecida como ActionScript, ainda não tinha
sido implementada. Com o lançamento da versão 4 do Flash, a capacidade de
codificar foi ampliada. Flash 4 introduziu variáveis e condições (elementos
primordiais em linguagens computacionais) e era portanto, mais interativo.
O ActionScript apareceu pela primeira vez com o lançamento do Flash 5, que
foi a primeira versão completamente programável do Flash. Esse release foi
nomeado de ActionScript 1.0. O Flash 6 (MX) melhorou o ambiente de
programação adicionando mais funções permitindo um melhor controle de
elementos de Clipes de Vídeo (ou MovieClips). Entretanto, o AS 1.0 era uma
"linguagem estranha aos programadores" com sérias limitações. Um de seus
maiores problemas era não oferecer suporte de classes. Sendo assim,
programadores acostumados a codificações orientadas a objeto, eram
obrigados a inventar maneiras de utilizar "objetos" no AS 1.0.
Dentro de 2 anos, o Flash 7 (MX 2004) introduziu o ActionScript 2.0, onde
foram adicionadas características de orientação a objetos, como declaração
explícita de classes, herança, interfaces e o conceito de linguagem fortemente
tipada. Programadores AS 2 podiam agora fazer uso de vários aspectos da
abordagem OO como reuso de código, maior legibilidade e escalabilidade. No
Flash 8, a linguagem foi estendida com a incorporação de novas bibliotecas
com API para manipulação de bitmaps em tempo de execução e permitindo
upload de arquivos. No entanto, alguns programadores OO olhavam para o AS
2 com desconfiança, pois não o achavam "totalmente orientada a objetos" por
algumas características particulares da linguagem.
O ActionScript Virtual Machine (AVM1), o qual está inserido no Flash Player,
executa o ActionScript e, com a nova máquina virtual, ActionScript Virtual
Machine (AVM2), o Flash 9 (que vem com o novíssimo ActionScript 3.0) mostra
uma significativa melhora de performance.
24 de Agosto de 2000 - Lançamento do Flash Player 5 incluindo a
primeira versão do ActionScript. Usando programação baseada em
protótipos (Prototype-based programming) baseado no ECMAScript and
permitindo programação procedural e o básico de Orientação a Objetos.
15 de Março de 2002 - Lançamento do Flash Player 6 que melhora o
ActionScript 1.0 com a inclusão de manipuladores de eventos e uma API
para manipulação básica de primitivas gráficas.
9 de Setembro de 2003 - Lançamento do Flash Player 7 (MX 2004 e MX
Professional 2004) oferece novas características como suporte a texto
CSS e melhoria de performance. Veio também o ActionScript 2.0 com
mais características de Orientação a Objetos como Herança, Interfaces,
Forte Tipagem mas ainda permitia a programação procedural.
13 de Setembro de 2005 - Liberação do Flash Player 8 que extende o
ActionScript 2.0 adicionando novas bibliotecas com API's de controle de
bitmaps em tempo de execução e upload de arquivos.
16 de Abril de 2007 - Lançamento do Flash Player 9 (inicialmente
chamado de 8.5) que vem com o novíssimo ActionScript 3.0 e o advento
da nova máquina virtual, chamado AVM2 (ActionScript Virtual Machine
2) que coexiste com a antiga AVM1. O aumento de performance era o
maior objetivo para a criação dessa versão incluindo a JIT Compilation
(Just-In-Time Compilation). Esse compilador usa o já compilado byte
code e o converte para código de máquina(logo antes de este ser
processado pelo player, por isso é "Just in Time"), maximizando assim o
poder computacional
Flash Player 9 é a primeira versão do Player a ser nomeada como
Adobe Flash Player. Antes chamava-se "Macromedia Flash" até a
Adobe adquirir a Macromedia e seus produtos. A principal
característica do ActionScript 3.0 é a total Orientação a Objetos e sua
grande performance.
Paradigma de Programação
ActionScript 1.0 - Programação Procedural, Baseada em Protótipos e o
básico de Orientação a Objetos
ActionScript 2.0 - Programação Procedural e com mais conceitos de
Orientação a Objetos
ActionScript 3.0 - Programação Orientada a Objetos (100%)
Utilização
Aplicativos Web
Jogos Web (teagames.com, jogos10.com.br)
Jogos para Dispositivos Móveis (utiliza-se o Flash Lite que é o
ActionScript 2.0 adaptado para Mobiles)
Aplicativos RIA (Rich Internet Aplications), indicado apenas para
ActionScript 3.0
Sites com grande interatividade
Animações programadas
Manipulação de Vídeos (YouTube)
Sintaxe
Serão listadas abaixo algumas particularidades que diferenciam o ActionScript
das demais linguagens computacionais existentes.
Não é possível construir um aplicativo servidor em ActionScript por meio
de laços. Pois os laços (for, while e do-while) não podem entrar em loop
infinito. Caso o compilador identifique que o laço ultrapassou uma
quantidade 'x' de iterações ele aborta o programa.
Comandos 'onEnterFrame': o onEnterFrame é um evento que é
associado a um MovieClip que permite laços lentos que são
determinados pela taxa de frames (ou framerate) do programa Flash. O
framerate mínimo é 2 fps (frames per second) e o máximo é 120 fps. Ou
seja, o onEnterFrame executa operações que variam entre 2 a 120
vezes em um segundo. Se vários MovieClips estiverem associados a um
evento onEnterFrame, eles são executados em paralelo. Se um
MovieClip é atribuido a um evento onEnterFrame mais de uma vez, o
mais recente sobrescreve o anterior.
Comandos 'eval(str:String)': o eval é um comando bastante curioso. Ele
recebe uma string como parâmetro e transforma essa string em uma
variável ou em uma chamada para uma função. Se a variável ou a
função existir, ela funciona normalmente, caso contrário não é gerado
um erro de execução, mas a variável fica com o valor 'undefined'(o
equivalente ao 'null' de outras linguagens) e a função simplesmente não
é executada.
O tipo 'Boolean': Ao contrário do tipo primitivo 'boolean', o valor booleano
do ActionScript é realmente um objeto, ou seja, Boolean (atenção ao 'B'
maiúsculo!). Portanto, nem sempre lhe são atribuídos valores true ou
false. Por exemplo, se o programador declara uma variável booleana e
não atribui nenhum valor a ela, o valor assumido será 'undefined', que
não é true e nem false.
Problema das 'Variáveis persistentes': Em alguns casos bem
específicos, existe a possibilidade de o Flash Player não apagar da
memória algumas variáveis declaradas como globais carregadas em um
programa já executado. Isso é chamado, no jargão dos programadores
ActionScript, de 'O problema das variáveis persistentes' e é necessário
um bom conhecimento do método de compilação do Flash Player para
contornar o problema.
O cast do ActionScript é feito da seguinte forma: Tipo (variável ou
expressão).
Diretivas de compilação: #include, #initclip e #endinitclip (as duas
últimas servem para especificar a ordem de execução dos comandos).
O elemento _root: _root é uma variável típica do Flash-ActionScript que
condiciona os outros elementos do Stage (ou cenário) a uma condição
de filhos (child). O elemento _root serve então como referência a um
elemento primordial de um cenário. Por exemplo, qualquer variável
inicializada no Stage principal, pode ser referenciada por _root.Variavel.
Do mesmo modo, se a mesma variável se encontra dentro de um
MovieClip que está no _root, a referência correta seria
_root.MovieClip.Variavel.
Array extensível em tamanho: O tipo Array do ActionScript pode
funcionar como uma lista. Como assim? Ao declarar um array com
tamanho 10, o tamanho é especificado. Entretanto, se for inserido mais
de 10 elementos no Array, este passa a suportar o tamanho do array do
mesmo modo. Ou seja, funciona como uma lista e como um array ao
mesmo tempo.
Array extensível em tipos: Num mesmo array é possível inserir
elementos de tipos diferentes. Por exemplo: índice 0 ter um Boolean,
índice 1 ter uma String e índice 2 ter um Object.
Tipo Function: Existe um tipo Function. Sendo assim, o programador
pode retornar um função, passá-la como parâmetro em outra função e
fazer operações como em outros tipos.
Especificação
Com o passar dos anos o ActionScript ganhou importância devido ao aumento
de interatividade principalmente nas aplicações Web. Assim, a linguagem
ganhou muitos adeptos e consequentemente vários tutoriais, fóruns e livros.
Abaixo segue a lista com alguns dos livros mais conhecidos sobre o
ActionScript.
Essential ActionScript 3.0 (Essential) by Colin Moock (Paperback - Jun
15, 2007)
Essential ActionScript 2.0 by Colin Moock (Paperback - Jun 16, 2004) -
Illustrated
Foundation ActionScript for Flash 8 (Foundation) by Sham Bhangal,
Kristian Besley, David Powers, and Eric Dolecki (Paperback - April 10,
2006)
Object-Oriented ActionScript For Flash 8 by Peter Elst and Todd Yard
(Paperback - Feb 20, 2006)
ActionScript for Flash MX: The Definitive Guide, Second Edition by Colin
Moock (Paperback - Dec 19, 2002) - Illustrated
Macromedia Flash 8 ActionScript: Training from the Source by Jobe
Makar and Danny Patterson (Paperback - Jan 24, 2006)
Beginning ActionScript 2.0 (Wrox Beginning Guides) by Nathan Derksen
and Jeff Berg (Paperback - April 24, 2006)
ActionScript 3 Bible by Roger Braunstein, Mims Wright, Joey Lott, and
Josh Noble (Paperback - Sep 18, 2007)
ActionScript Cookbook by Joey Lott (Paperback - Jun 2003)
Macromedia Flash MX ActionScript for Fun and Games (With CD-ROM)
by Gary Rosenzweig (Paperback - Jul 16, 2002)
ActionScript 3 in Adobe Flash CS3 Professional Hands-On Training by
Todd Perkins (Paperback - Sep 10, 2007)
ActionScript 2.0 Language Reference for Macromedia Flash 8 by Francis
Cheng, Jen deHaan, Robert L. Dixon, and Shimul Rahim (Paperback -
Oct 13, 2005)
A Adobe, que é a atual responsável pela linguagem, possui um forum em seu
site (www.adobe.com) que funciona como suporte a aprendizagem. E em todas
as versões do programa Flash (do 5 ao 9) possui um Help com toda a API das
versões compatíveis do ActionScript.
Implementação
O único compilador existente para o ActionScript é o Flash Player, que foi
criado pela Macromedia (Adobe atualmente). O Flash Player passou por várias
modificações e atualmente está na sua nona edição, o Flash Player 9 ou Adobe
Flash Player (tendo desta vez a Adobe como proprietária).
O ActionScript é uma linguagem semi-interpretada. Possui uma Máquina Virtual
chamada ActionScript Virtual Machine que está atualmente em sua segunda
versão (AVM2). Antes do Flash Player 9, o arquivo (.fla), que é a extensão que
contém o ActionScript, era compilado para o AVM1 e do AVM1 interpretado
para linguagem de máquina, gerando um arquivo(.swf). Na versão atual, o
AVM2 ajuda o Player a compilar diretamente o arquivo(.fla) para o 'Code
Machine' atingindo um desempenho 10 vezes superior as versões anteriores.
Esse modo de compilação é conhecido como "JIT" (Just-In-Time) e, a título de
exemplo, é usado em Máquinas Virtuais conhecidas mundialmente como o JDK
1.5 (para Java).
Abaixo segue uma lista com as versões do Flash Player e respectivas versões
do ActionScript suportadas:
Flash Players 5 e 6 - ActionScript 1.0
Flash Players 7 e 8 - ActionScript 1.0 e 2.0
Flash Player 9 ou Adobe Flash Player - Suporta as 3 versões, mas
possui uma particularidade: O usuário deve escolher se quer compilar
arquivos somente na versão 3.0 ou nas versões 2.0 e 1.0. Isso ocorre
pois as versões 1.0 e 2.0 são compatíveis (o 2.0 é um incremento do
1.0) mas o ActionScript 3.0 possui uma estrutura completamente
diferenciada.
Ambiente de Desenvolvimento
Existem atualmente dois ambientes principais para desenvolver aplicativos e
jogos em ActionScript: o Macromedia Flash e o Adobe Flex Builder.
O Macromedia Flash, ou apenas Flash, é um programa que foi criado
inicialmente para a criação de animações com qualidade e com um mínimo
possível de interatividade por parte do usuário através de componentes
próprios do Flash como RadioButtons, NumericSteppers e etc. Com o passar
do tempo, com o surgimento e a necessidade de aplicações mais interativas e
com um bom suporte a animações como linhas do tempo (timelines), a
Macromedia foi levada a desenvolver um script em que fosse possível criar e
controlar o comportamento, o posicionamento, a visibilidade e outros atributos
dos Clipes de Video (MovieClips) que passariam a se tornar o tipo básico de
qualquer animação no Flash. Assim foi incluído um editor a partir do Flash 5
para que fosse desenvolvido o código em ActionScript.
O Flex Builder é um ambiente recentemente criado pela Adobe que manipula o
ActionScript 3.0 e MXML (linguagem de marcação). Uma grande diferença em
relação ao Flash é que o Flex oferece suporte a desenvolvimento simultâneo
de vários usuários. O que torna o Flex mais corporativo e o Flash mais voltado
ao entretenimento. Quanto à interface, o Flex Builder é quase idêntico a IDE
Eclipse. Inclusive possui os analisadores léxico e sintático que identificam erros
no código assim que ele é digitado.
Os componentes do flex são criados de duas maneiras: ou o usuário arrasta o
componente para o palco e o código é inserido no editor ou o inverso,
permitindo assim uma maior flexibilidade na criação da aplicação.
Exemplos de Programa
Exemplo actionScript 1.0
on(rollOver){
gotoAndStop(15);
}
on(rollOut){
setProperty(“myMovieClip”, _alpha, 40);
}
Exemplo actionScript 2.0
var myArray:Array = new Array ("Hello", "ActionScript", 3, 7, 11, "Flash");
Array.prototype.pickNumber = function():Number {
var rand:Number = random(this.length);
return (typeof (this[rand]) == "number") ? this[rand] : this.pickNumber();
};
Array.prototype.pickString = function():String {
var rand:Number = random(this.length);
return (typeof (this[rand]) == "string") ? this[rand] : this.pickString();
};
var num:Number = myArray.pickNumber();
var str:String = myArray.pickString();
_root.createTextField ("txt", 1, 10, 10, 530, 390);
txt.text = "Array = "+myArray+"\nRandom Number = "+num+"\nRandom
String = "+str;
Exemplo actionScript 3.0
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.filters.DropShadowFilter;
public class HelloWorld2 extends Sprite {
public function HelloWorld2() {
var shad:DropShadowFilter = new DropShadowFilter
(2, 45, 0x000000, 25, 3, 3, 2, 2);
var txt:TextField = new TextField();
txt.textColor = 0xFFFFFF;
txt.filters = [shad];
txt.width = 120;
txt.x = Math.random()*300;
txt.y = Math.random()*300;
txt.selectable = false;
txt.text = "Hello World welcome!
["+Math.round(txt.x)+","+Math.round(txt.y)+"]";
addChild(txt);
}
}
}
Vantagens e Desvantagens
ActionScript provê uma maneira mais eficiente de fazer coisas: criar
animações, aplicativos e jogos em Flash. ActionScript é uma linguagem
orientada a objetos que suporta herança de classes e todos requisitos que os
desenvolvedores desejam numa linguagem robusta. Ele provê um
desenvolvimento muito flexível e dinâmico de aplicações e jogos por possuir
uma interface bem intuitiva ao usuário. O usuário simplesmente pode jogar as
imagens no Stage, nomeá-las e usar estes nomes ao fazer o respectivo código.
Dessa forma, não é preciso criar e instanciar objeto por objeto como em outras
linguagens.
Outra vantagem é a leveza com que os aplicativos Flash rodam nos sistemas.
Por ActionScript ser uma linguagem semi-interpretada, contribui muito para a
leveza e compactação dos arquivos.
O AS 2.0 especificamente, é uma linguagem de fácil adaptação a
programadores de primeira viagem. Isto acontece pelo fato de poder ser
orientada a objetos ou não. Na verdade, isso depende da maneira como o
programador prefere trabalhar com o código, deixando assim, o programador
mais a vontade com a codificação de seu programa. Por outro lado, tal
liberdade implica uma maior gama de programadores inexperientes atraídos a
linguagem, de modo que pode se tornar cada vez menor a legibilidade dos
códigos. Já com o AS 3.0 isso não acontece, visto este ser totalmente
orientado a objetos, não permitindo qualquer outra forma ou paradigma de
programação.
A eficiência do ActionScript têm-se mostrado grande na área de Web. Devido a
sua grande proximidade e ligação com a interface gráfica do programa,
ActionScript é uma das linguagens mais usadas em sites da Internet no mundo
todo. Sua flexibilidade e rapidez devido ao Flash Player, tem conquistado cada
vez mais profissionais na área de web que desejam projetar sites ou aplicações
de maneira rápida e com muita praticidade em interfaces gráficas.
Uma desvantagem muito significativa no Universo Flash-ActionScript é a falta
de um 'laço' (for, while e do-while) seguro. Como já foi citado em um tópico
anterior, ActionScript não suporta aplicativos servidores por não ter
possibilidade de executar um laço infinito.
Segundo dados da revista INFO, o Flash Player, compilador do ActionScript, foi
listado em sua versão 7.0 como um dos programas mais vulneráveis a
invasões, ficando com a 6º posição, atrás de programas como Internet Explorer
6.0 e Nero Express. Mesmo com o lançamento do novíssimo Flash Player 9.0,
não se sabe ainda quão séria foi a melhoria neste aspecto de segurança.
Conclusões
Como podemos perceber ao examinar a história do ActionScript, as mudanças
aparecem com o tempo. E no caso do AS, aparecem sempre pra melhor.
Desde quando ainda era um protótipo de linguagem pouco robusta, AS já
mostrava aos seus usuários o seu alto potencial de flexibilidade, dinamismo e
praticidade quando o assunto era Web. Hoje, com o AS 3.0 totalmente
orientado a objetos, os pioneiros dessa linguagem se animam com o potencial
adquirido por esta. Se com apenas poucos comandos primitivos como 'play()' e
'stop()' o Flash era uma ferramenta indispensável para designers e
profissionais da área de animação, imagine o que pode ser feito com uma
linguagem clara, robusta, com um paradigma definido e um bom compilador!
Não é de admirar que o mercado anseie cada vez mais por programadores
ActionScript!
Paradigmas a parte, ActionScript tem conquistado vários adeptos ao redor do
mundo. De uma maneira tal, que imaginá-la como uma grande linguagem de
vasta aceitação no universo computacional não é mais um mero sonho, mas
sim, uma realidade.
Referências
http://en.wikipedia.org/wiki/Actionscript
http://en.wikipedia.org/wiki/Adobe_Flash
http://en.wikipedia.org/wiki/Macromedia_Flash
http://www.ibm.com/developerworks/library/wa-actionscript/index.html
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/w
whelp.htm?context=LiveDocs_Book_Parts&file=04_OO_Programming_1
61_11.html
http://www.riapt.org/tiki-
index.php?page=Optimizar+o+desenvolvimento+em+Flash+usando+ferr
amentas+open-source
http://www.adobe.com/br/aboutadobe/pressroom/pr/jun2006/PR_Adobe_
Flash_.pdf
http://www.digital-web.com/articles/the_road_to_actionscript_3/