Introdução ao ActionScript 3.0

Sobre o ActionScript

O ActionScript é a linguagem de programação dos ambientes de tempo de execução Adobe® Flash® Player e Adobe® AIR™. Ele permite interatividade, manipulação de dados e muito mais no conteúdo e nos aplicativos do Flash, Flex e AIR.

O ActionScript é executado com a AVM (ActionScript Virtual Machine), que faz parte do Flash Player e do AIR. O código do ActionScript é geralmente transformado no formato de código do bytes por um compilador. (O código de bytes é um tipo de linguagem de programação que é escrita e compreendida pelos computadores.) Entre os exemplos de compiladores estão aquele incorporado ao ® Flash® Professional e o que está incorporado no Adobe® Flash® Builder™, disponível no Adobe® Flex™ SDK. O código de bytes está incorporado nos arquivos SWF, que o Flash Player e o AIR executam.

O ActionScript 3.0 oferece um modelo de programação robusto que parece familiar aos desenvolvedores com um conhecimento básico de programação orientada a objetos. Alguns dos recursos principais do ActionScript 3.0 que foram aprimorados em relação à versão anterior incluem:

  • Uma nova ActionScript Virtual Machine, chamada AVM2, que usa um novo conjunto de instruções de código de bytes e fornece aprimoramentos de desempenho significativos

  • Uma base de código de compilador moderna que executa otimizações mais avançadas do que as versões anteriores do compilador

  • Uma API (Interface de programação de aplicativo) expandida e aprimorada, com controle de baixo nível de objetos e um autêntico modelo orientado a objetos

  • Uma API XML baseada na especificação de linguagem ECMAScript para XML (E4X) (ECMA-357 edição 2) E4X é a extensão de linguagem para ECMAScript que adiciona XML como um tipo de dados nativo da linguagem.

  • Um modelo de evento baseado na Especificação de eventos DOM (Document Object Model) nível 3

Vantagens do ActionScript 3.0

O ActionScript 3.0 vai além dos recursos de script de suas versões anteriores. Ele foi criado para facilitar a criação de aplicativos altamente complexos com grandes conjuntos de dados e bases de código reutilizáveis orientadas a objetos. O ActionScript 3.0 não é necessário para o conteúdo que é executado no Adobe Flash Player. No entanto, ele abre a porta para os aprimoramentos de desempenho que só estão disponíveis com o AVM2 (a máquina virtual do ActionScript 3.0). O código do ActionScript 3.0 pode ser executado até 10 vezes mais rápido do que o código do ActionScript existente.

A versão anterior da AVM1 (ActionScript Virtual Machine) executa os códigos ActionScript 1.0 e ActionScript 2.0. O Flash Player 9 e 10 suportam a AVM1 em termos de compatibilidade reversa.

Novidades do ActionScript 3.0

O ActionScript 3.0 contém muitas classes e recursos que são semelhantes ao ActionScript 1.0 e 2.0. No entanto, o ActionScript 3.0 é diferente, em termos de arquitetura e conceitos, das versões anteriores do ActionScript. Os aprimoramentos do ActionScript 3.0 incluem novos recursos da linguagem central e uma API melhorada que fornece mais controle sobre objetos de baixo nível.

Recursos da linguagem central

A linguagem central define os blocos de construção básicos da linguagem de programação, como instruções, expressões, condições, loops e tipos. O ActionScript 3.0 contém muitos recursos que aceleram o processo de desenvolvimento.

Exceções de tempo de execução

O ActionScript 3.0 relata mais condições de erros que suas versões anteriores. As exceções de tempo de execução são usadas para condições de erro comuns, melhorar a experiência de depuração e permitir o desenvolvimento de aplicativos que manipulam erros de forma robusta. Os erros de tempo de execução fornecem rastreamentos de pilha anotados com informações sobre o arquivo de origem e o número de linha, ajudando a detectar os erros rapidamente.

Tipos de tempo de execução

No ActionScript 3.0, as informações de tipo são preservadas no tempo de execução. Essas informações são usadas para realizar a verificação de tipo em tempo de execução, melhorando a segurança de tipo do sistema. As informações sobre tipo também são usadas para retratar variáveis em representações, que melhoram o desempenho e reduzem o uso de memória. Por meio de comparação, no ActionScript 2.0, as anotações de tipo são principalmente uma ajuda ao desenvolvedor e todos os valores são dinamicamente digitados no tempo de execução.

Classes seladas

O ActionScript 3.0 inclui o conceito de classes seladas. Uma classe selada possui apenas o conjunto fixo de propriedades e métodos que são definidos em tempo de compilação; não é possível adicionar mais propriedades e métodos. A incapacidade de alterar uma classe em tempo de execução permite uma verificação mais estrita em tempo de compilação, resultando em programas mais robutos. Ela também melhora o uso de memória por não exigir uma tabela de hash interna para cada ocorrência de objeto. As classes dinâmicas também são possíveis usando a palavra-chave dynamic . Todas as classes no ActionScript 3.0 são seladas por padrão, mas podem ser declaradas para se tornar dinâmicas com a palavra-chave dynamic .

Fechamentos de método

O ActionScript 3.0 permite um fechamento de método que lembra automaticamente de sua ocorrência de objeto original. Esse recurso é útil para a manipulação de eventos. No ActionScript 2.0, os fechamentos de método não lembram de qual instância de objeto tinham sido extraídos, gerando comportamentos inesperados quando o fechamento de método é invocado.

ECMAScript para XML (E4X)

O ActionScript 3.0 implementa o ECMAScript para XML (E4X), recentemente padronizado como ECMA-357. O E4X oferece um conjunto fluente de construções de linguagem para manipular XML. Diferentemente das APIs tradicionais de análise de XML, o XML com E4X funciona como um tipo de dados nativo da linguagem. O E4X simplifica o desenvolvimento de aplicativos que manipulam XML, reduzindo drasticamente a quantidade de código necessária.

Para exibir a especificação E4X do ECMA, vá para www.ecma-international.org .

Expressões regulares

O ActionScript 3.0 inclui suporte nativo para expressões regulares, o que permite pesquisar e manipular seqüências de caracteres rapidamente. O Action Script 3.0 implementa o suporte a expressões regulares conforme definidas na especificação de linguagem ECMAScript (ECMA-262) edição 3.

Espaços para nomes

Os espaços para nomes são semelhantes aos especificadores de acesso tradicionais usados para controlar a visibilidade de declarações ( public , private , protected ). Eles funcionam como especificadores de acesso personalizados, que podem ter os nomes que você escolher. Os espaços para nomes são equipados com um URI (Identificador Universal de Recursos) para evitar colisões e também são usados para representar nomes para espaços XML no trabalho com E4X.

Novos tipos primitivos

O ActionScript 3.0 contém três tipos numéricos: Number, int e uint. Number representa uma número de precisão dupla com ponto de oscilação. O tipo int é um inteiro assinado de 32 bits que permite ao código ActionScript aproveitar os rápidos recursos matemáticos de inteiros da CPU. O tipo int é útil para contadores de loop e variáveis em que os inteiros são usados. O tipo uint é um tipo inteiro de 32 bits não assinado, útil para valores de cores RGB, contagens de bytes e muito mais. Por outro lado, o ActionScript 2.0 só tem um tipo numérico, Number.

Recursos da API

As APIs no ActionScript 3.0 contêm várias classes que permitem controlar objetos em um nível baixo. A arquitetura da linguagem foi projetada para ser mais intuitiva do que a das outras versões. Embora haja muitas classes para analisar em detalhes, vale a pena observar algumas diferenças significativas.

Modelo de eventos DOM3

O modelo de eventos Document Object Model Nível 3 (DOM3) fornece uma forma padronizada de gerar e tratar as mensagens de evento. Este modelo de evento foi projetado para permitir que os objetos nos aplicativos interajam e se comuniquem, mantenham o estado e respondam à alteração. O modelo de evento do ActionScript 3.0 é padronizado depois da Especificação de Eventos para DOM Nível 3 do World Wide Web Consortium. Este modelo fornece um mecanismo mais claro e mais eficiente do que os sistemas de evento disponíveis nas versões anteriores do ActionScript.

Os eventos e eventos de erros estão localizados no pacote flash.events. Os componentes do Flash Professional e a estrutura do Flex usam o moesmo modelo de eventos, por isso o sistema de eventos é unificado na Plataforma Flash.

API de lista de exibição

A API para acessar a lista de exibição — a árvore que contém os elementos visuais no aplicativo — consiste em classes para trabalhar com primitivas visuais.

A classe Sprite é um bloco estrutural leve, projetado para ser uma classe base para os elementos visuais, como os componentes da interface de usuário. A classe Shape representa formas de vetor brutas. Essas classes podem ser instanciadas naturalmente com o operador new e atribuídas a um pai dinamicamente a qualquer momento.

O gerenciamento de profundidade é automático. Os métodos foram fornecidos para especificar e gerenciar a ordem de empilhamento dos objetos.

Manipulação de dados e conteúdo dinâmicos

O ActionScript 3.0 contém mecanismos para carregar e manipular ativos e dados no seu aplicativo que são intuitivos e consistentes na API. A classe Loader fornece um único mecanismo para carregar arquivos SWF e ativos de imagem e fornece uma forma de acessar informações detalhadas sobre o conteúdo carregado. A classe URLLoader fornece um mecanismo separado para carregar texto e dados binários em aplicativos orientados a dados. A classe Socket fornece um meio de ler e gravar dados binários nos soquetes do servidor em qualquer formato.

Acesso a dados de baixo nível

Várias APIs fornecem acesso de baixo nível aos dados. Para os dados obtidos por download, a classe URLStream fornece acesso a dados como dados binários brutos enquanto estão sendo baixados. A classe ByteArray permite otimizar a leitura, a gravação e o trabalho com dados binários. A API Sound fornece controle detalhado de som por meio das classes SoundChannel e SoundMixer. As APIs de segurança fornecem informações sobre os privilégios de segurança de um arquivo SWF ou conteúdo carregado, permitindo manipular os erros de segurança.

Trabalho com texto

O ActionScript 3.0 contém um pacote flash.text para todas as APIs relacionadas a texto. A classe TextLineMetrics fornece uma métrica detalhada para uma linha de texto em um campo de texto; ela substitui o método TextFormat.getTextExtent() no ActionScript 2.0. A classe TextField contém vários métodos de baixo nível que fornecem informações específicas sobre uma linha de texto ou sobre um único caractere em um campo de texto. Por exemplo, o método getCharBoundaries() retorna um retângulo que representa a caixa delimitadora de um caractere. O método getCharIndexAtPoint() retorna o índice do caractere em um ponto especificado. O método getFirstCharInParagraph() retorna o índice do primeiro caractere em um parágrafo. Os métodos de nível de linha incluem getLineLength() , que retorna o número de caracteres em uma linha de texto especificada, e getLineText() , que retorna o texto da linha especificada. A classe Font fornece um meio de gerenciar fontes incorporadas em arquivos SWF.

Até para o controle de nível inferior sobre o texto, as classes no pacote flash.text.engine compõem o Mecanismo de Texto do Flash. Este conjunto de classes fornece um controle de baixo nível sobre o texto e é projetado para criar estruturas e componentes de texto.