ActionScript

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar

ActionScript
ActionScript icon.png
ParadigmaMulti-paradigma : orientado a objetos ( baseado em protótipo ), funcional , imperativo , scripting
Projetado porGary Grossman
DesenvolvedorMacromedia (agora dissolvido em Adobe Systems )
Apareceu pela primeira vez1998
Versão estável
3.0 / 27 de junho de 2006 ( 2006-06-27 )
Disciplina de digitaçãoforte , estático
Local na rede Internetadobe.com/devnet/actionscript/
Principais implementações
Adobe Flash Player , Adobe AIR , Apache Flex , Scaleform GFx
Influenciado por
JavaScript , Java
Influenciado
Haxe
ActionScript
Extensão de nome de arquivo
.Como
Tipo de mídia da Internet
aplicativo/ecmascript [1]

ActionScript é uma linguagem de programação orientada a objetos originalmente desenvolvida pela Macromedia Inc. (mais tarde adquirida pela Adobe Systems ). Ele é influenciado pelo HyperTalk , a linguagem de script do HyperCard . [2] Agora é uma implementação do ECMAScript (o que significa que é um superconjunto da sintaxe e semântica da linguagem mais conhecida como JavaScript ), embora tenha surgido originalmente como um irmão, ambos influenciados pelo HyperTalk . O código ActionScript geralmente é convertido para o formato de código de byte pelo compilador.

O ActionScript é usado principalmente para o desenvolvimento de sites e softwares direcionados à plataforma Adobe Flash Player , usados ​​em páginas da Web na forma de arquivos SWF incorporados.

O ActionScript 3 também é usado com o sistema Adobe AIR para o desenvolvimento de aplicativos de desktop e móveis. A linguagem em si é de código aberto, pois sua especificação é oferecida gratuitamente [3] e um compilador de código aberto (como parte do Apache Flex ) e uma máquina virtual de código aberto ( Mozilla Tamarin ) estão disponíveis.

ActionScript também foi usado com Scaleform GFx para o desenvolvimento de interfaces de usuário de videogame 3D e HUDs .

Visão geral

O ActionScript foi inicialmente projetado para controlar animações vetoriais 2D simples feitas no Adobe Flash (anteriormente Macromedia Flash). Inicialmente focada em animação, as primeiras versões do conteúdo Flash ofereciam poucos recursos de interatividade e, portanto, tinham capacidade de script muito limitada. Versões posteriores adicionaram funcionalidades que permitem a criação de jogos baseados na Web e aplicativos da Web avançados com mídia de streaming (como vídeo e áudio). Hoje, o ActionScript é adequado para desenvolvimento desktop e móvel através do Adobe AIR, uso em alguns aplicativos de banco de dados e em robótica básica, como no Make Controller Kit .

O Flash MX 2004 introduziu o ActionScript 2.0, uma linguagem de script mais adequada ao desenvolvimento de aplicativos Flash. Muitas vezes, é possível economizar tempo criando scripts em vez de animar, o que geralmente também permite um nível mais alto de flexibilidade ao editar.

Desde a chegada do Flash Player 9 alpha (em 2006), uma versão mais recente do ActionScript foi lançada, o ActionScript 3.0. Esta versão da linguagem destina-se a ser compilada e executada em uma versão da ActionScript Virtual Machine que foi completamente reescrita desde o início (apelidada de AVM2). [4] Por causa disso, o código escrito em ActionScript 3.0 geralmente é direcionado para o Flash Player 9 e superior e não funcionará em versões anteriores. Ao mesmo tempo, o ActionScript 3.0 é executado até 10 vezes mais rápido que o código ActionScript legado devido aos aprimoramentos do compilador Just-In-Time . [5]

As bibliotecas Flash podem ser usadas com os recursos XML do navegador para renderizar conteúdo avançado no navegador. Essa tecnologia é conhecida como Flash Assíncrono e XML, assim como o AJAX. A Adobe oferece sua linha de produtos Flex para atender à demanda por aplicativos da Web avançados construídos no tempo de execução do Flash, com comportamentos e programação feitos em ActionScript. O ActionScript 3.0 forma a base da API Flex 2.

História

ActionScript começou como uma linguagem de programação orientada a objetos para a ferramenta de autoria Flash da Macromedia , posteriormente desenvolvida pela Adobe Systems como Adobe Flash. As três primeiras versões da ferramenta de autoria do Flash forneciam recursos de interatividade limitados. Os primeiros desenvolvedores do Flash podiam anexar um comando simples, chamado de "ação", a um botão ou quadro. O conjunto de ações eram controles básicos de navegação, com comandos como "play", "stop", "getURL" e "gotoAndPlay".

Com o lançamento do Flash 4 em 1999, esse conjunto simples de ações tornou-se uma pequena linguagem de script. Os novos recursos introduzidos para o Flash 4 incluíam variáveis , expressões , operadores , instruções if e loops . Embora referido internamente como "ActionScript", o manual do usuário do Flash 4 e os documentos de marketing continuaram a usar o termo "ações" para descrever esse conjunto de comandos.

Linha do tempo por versão do jogador

  • Flash Player 2 : A primeira versão com suporte a scripts. As ações incluíram gotoAndPlay, gotoAndStop, nextFrame e nextScene para controle da linha do tempo.
  • Flash Player 3 : Suporte expandido de script básico com a capacidade de carregar SWFs externos (loadMovie).
  • Flash Player 4 : Primeiro player com uma implementação de script completa (chamada Actions ). O script era uma sintaxe baseada em flash e continha suporte para loops, condicionais, variáveis ​​e outras construções básicas de linguagem.
  • Flash Player 5 : Incluída a primeira versão do ActionScript. Usou programação baseada em protótipo baseado em ECMAScript, [6] e permitiu programação procedural completa e programação orientada a objetos. Desenvolvimento baseado em design.
  • Flash Player 6 : Adicionado um modelo de manipulação de eventos, controles de acessibilidade e suporte para switch . A primeira versão com suporte para os protocolos AMF e RTMP que permitiam streaming de áudio/vídeo sob demanda.
  • Flash Player 7 : As adições incluem estilo CSS para texto e suporte para ActionScript 2.0, uma linguagem de programação baseada na proposta ECMAScript 4 Netscape [7] com herança baseada em classes . No entanto, o ActionScript 2.0 pode fazer a compilação cruzada para o código de bytes do ActionScript 1.0 , para que possa ser executado no Flash Player 6.
  • Flash Player 8 : Ampliou ainda mais o ActionScript 1/ActionScript 2 adicionando novas bibliotecas de classes com APIs para controlar dados de bitmap em tempo de execução, uploads de arquivos e filtros ativos para desfoque e sombra.
  • Flash Player 9 (inicialmente chamado 8.5) : Adicionado ActionScript 3.0 com o advento de uma nova máquina virtual, chamada ActionScript Virtual Machine 2 (AVM2), que coexiste com o AVM1 anterior necessário para oferecer suporte a conteúdo legado. Os aumentos de desempenho foram um objetivo importante para esta versão do player, incluindo um novo compilador JIT . Suporte para soquetes binários, análise XML E4X , modo de tela cheia e expressões regulares foram adicionados. Esta é a primeira versão do player a ser intitulada Adobe Flash Player. [8]
  • Flash Player 10 (inicialmente chamado Astro) : Adicionada manipulação 3D básica , como rotação nos eixos X, Y e Z, uma API de desenho 3D e mapeamento de textura . Capacidade de criar filtros personalizados usando o Adobe Pixel Bender . Várias tarefas de processamento visual agora são transferidas para a GPU , o que diminui consideravelmente o tempo de renderização de cada quadro, resultando em taxas de quadros mais altas , especialmente com vídeo H.264 . Há uma nova API de som que permite a criação personalizada de áudio em flash, algo que nunca foi possível antes. [9] Além disso, o Flash Player 10 suporta comunicação ponto a ponto (P2P) com protocolo de fluxo de mídia em tempo real(RTMF).
  • Flash Player 11 : A principal adição nesta versão são os recursos 3D avançados (acelerados por placa gráfica) baseados em Stage3D para Windows Desktop, Mac Desktop, iOS , Android e outras plataformas principais. Melhorias significativas de compatibilidade foram adicionadas para a plataforma iOS e outras plataformas não desktop. Outros recursos incluem codificação H.264 para câmeras, suporte Native JSON , Cubic Bézier Curves, um gerador de números aleatórios seguro, compactação LZMA para arquivos swf, trabalhadores para descarregar alguma execução de código para outros threads de processador, renderização de alimentação de câmera acelerada por placa gráfica, intrínsecos de memória e análise de desempenho e o ActionScript Compiler 2.0, bem como algumas outras pequenas adições.[10]
  • Flash Player 11.2 : lançado em março de 2012, focado em adicionar recursos que são fundamentais para os mercados de jogos e vídeo. Alguns dos recursos da versão incluem o seguinte: Suporte para trava de mouse. Suporte para clique direito e meio do mouse. Desativação do menu de contexto. Suporte a gráficos acelerados por hardware/Stage 3D para Apple iOS e Android via Adobe AIR. Suporte para mais placas de vídeo aceleradas por hardware (a partir de janeiro de 2008) para expandir a disponibilidade de conteúdo acelerado por hardware. Nova API de evento Throttle (despacha o evento quando o Flash Player limita, pausa ou retoma o conteúdo). Pipeline de decodificação de vídeo multithread em PCs, que melhora o desempenho geral do vídeo em todas as plataformas de desktop. Notificação de uso de recursos premium nos players de depuração; o conteúdo é executado sem restrições nos players de lançamento.
  • Flash Player 11.3: lançado em junho de 2012, focado em habilitar recursos e chave de funcionalidade para o mercado de jogos, além de atender a solicitações de recursos populares de desenvolvedores. Alguns dos recursos desta versão incluem o seguinte: Suporte de entrada de teclado no modo de tela inteira. Suporte de áudio aprimorado para trabalhar com áudio de baixa latência. Capacidade de transmitir progressivamente texturas para conteúdo Stage 3D. Modo protegido para Flash Player no Firefox. Eventos de rótulo de quadro. Suporte para compactar BitmapData para formatos JPEG e PNG. Suporte para requisitos de sandboxing de aplicativos da App Store do Mac OS X. Suporte de streaming de texto para Stage 3D. Informações expandidas sobre os detalhes do driver da GPU. Desenho de bitmap com API de qualidade (novo). Liberar API de evento de mouse externo. Suporte de atualização silenciosa do Flash Player para Mac OS. Suporte para caneta para dispositivos Android 4.0 (Adobe AIR). Depuração USB para iOS (Adobe AIR). Suporte ao simulador iOS (Adobe AIR).
  • Flash Player 11.4 : lançado em agosto de 2012, focado em habilitar recursos e funcionalidades essenciais para o mercado de jogos, além de atender a solicitações de recursos populares de desenvolvedores. Alguns dos recursos desta versão incluem o seguinte: Trabalhadores do ActionScript (permite a execução simultânea do ActionScript em threads separados). Suporte para perfis avançados. Suporte de compressão LZMA para ByteArray. Suporte para placas de vídeo aceleradas por hardware para Stage 3D expandido para 2006. Desempenho aprimorado do ActionScript ao segmentar o Apple iOS. API de índice de desempenho para informar sobre os recursos de desempenho do ambiente atual. Suporte para texturas compactadas com suporte alfa. Suporte para API StageVideo.attachCamera. Suporte para notificações push para iOS (Adobe AIR).
  • Flash Player 11.5 : lançado em novembro de 2012, focado na melhoria de desempenho e estabilidade. Alguns dos recursos desta versão incluem o seguinte: Suporte a ByteArray compartilhado para trabalhadores do ActionScript. Depurar rastreamento de pilha em compilações de versão do Flash Player. Várias correções de bugs
  • Flash Player 11.6 : lançado em março de 2013, concentra-se em melhorias de desempenho, aprimoramentos de segurança e estabilidade. Alguns dos recursos desta versão incluem o seguinte: Capacidade de consultar dados vetoriais gráficos em tempo de execução. Melhorias na interface do usuário da caixa de diálogo de permissão em tela cheia. Capacidade de carregar SWFs em tempo de execução ao implantar como um aplicativo AIR no modo AOT no iOS. Controle granular mais fino sobre a resolução de exibição compatível em dispositivos iOS ao implantar como um aplicativo AIR. Suporte HiDPI para Flash Professional. Acesso ActionScript 3 a operações/intrínsecos rápidos de memória
  • Flash Player 11.7 : lançado em junho de 2013, com o codinome "Geary". Esta versão se concentra em vídeo premium, jogos, segurança e estabilidade. Alguns dos recursos planejados para esta versão incluem o seguinte: Depuração de tempo de execução cativo do Android. Suporte para o controlador OUYA . Hospedagem remota de arquivos SWF no iOS. Impedindo o backup de objetos compartilhados no iOS para melhor suporte ao iCloud.
  • Flash Player 11.8 (codinome Harrison) : A Adobe estava planejando lançar esta versão no início do segundo semestre de 2013, com o codinome "Harrison". Esta versão se concentrou em vídeo premium, jogos, segurança e estabilidade. Alguns dos recursos desta versão incluem o seguinte: API de parada recursiva em MovieClips. Suporte para GamePad em navegadores de desktop e Android

Linha do tempo por versão do ActionScript

2000–2004: ActionScript "1.0"

Com o lançamento do Flash 5 em setembro de 2000, as "ações" do Flash 4 foram aprimoradas mais uma vez e nomeadas "ActionScript" pela primeira vez. [11] Esta foi a primeira versão do ActionScript com influências do JavaScript e do padrão ECMA-262 (Terceira Edição), suportando o modelo de objeto do referido padrão e muitos de seus principais tipos de dados . Variáveis ​​locais podem ser declaradas com a instrução var e funções definidas pelo usuário com passagem e retorno de parâmetrosvalores também podem ser criados. Notavelmente, o ActionScript agora também pode ser digitado com um editor de texto em vez de ser montado escolhendo ações em listas suspensas e controles de caixa de diálogo. Com a próxima versão de sua ferramenta de autoria, Flash MX, e seu player correspondente, Flash Player 6 , a linguagem permaneceu praticamente inalterada; houve apenas pequenas alterações, como a adição da instrução switch e o operador de "igualdade estrita" ( === ), o que o aproximou de ser compatível com ECMA-262 . Dois recursos importantes do ActionScript que o distinguem das versões posteriores são seu sistema de tipos soltos e sua dependência de herança baseada em protótipo . A digitação solta refere-se à capacidade de umvariável para armazenar qualquer tipo de dado. Isso permite o desenvolvimento rápido de scripts e é particularmente adequado para projetos de scripts de pequena escala. A herança baseada em protótipo é o mecanismo do ActionScript 1.0 para reutilização de código e programação orientada a objetos. Em vez de uma palavra-chave class que define características comuns de uma classe , o ActionScript 1.0 usa um objeto especial que serve como "protótipo" para uma classe de objetos. Todas as características comuns de uma classe são definidas no objeto protótipo da classe e cada instância dessa classe contém um link para esse objeto protótipo.

2003–2006: ActionScript 2.0

A próxima grande revisão da linguagem, ActionScript 2.0, foi introduzida em setembro de 2003 com o lançamento do Flash MX 2004 e seu player correspondente, Flash Player 7 . Em resposta à demanda do usuário por uma linguagem melhor equipada para aplicativos maiores e mais complexos, o ActionScript 2.0 apresentou verificação de tipo em tempo de compilação e sintaxe baseada em classe , como as palavras-chave class e extends . (Embora isso permitisse uma abordagem de programação orientada a objetos mais estruturada, o código ainda seria compilado no bytecode ActionScript 1.0 , permitindo que ele também fosse usado no Flash Player 6 anterior. Em outras palavras, o código baseado em classea sintaxe de herança era uma camada sobre o sistema baseado em protótipo existente.) Com o ActionScript 2.0, os desenvolvedores podiam restringir variáveis ​​a um tipo específico adicionando uma anotação de tipo para que erros de incompatibilidade de tipo pudessem ser encontrados em tempo de compilação . O ActionScript 2.0 também introduziu a sintaxe de herança baseada em classes para que os desenvolvedores pudessem criar classes e interfaces, como fariam em linguagens baseadas em classes, como Java e C++ . Esta versão estava parcialmente em conformidade com a especificação de rascunho da Quarta Edição do ECMAScript .

2006–2020: ActionScript 3.0

Em junho de 2006, o ActionScript 3.0 foi lançado com o Adobe Flex 2.0 e seu player correspondente, o Flash Player 9 . O ActionScript 3.0 foi uma reestruturação fundamental da linguagem, tanto que usa uma máquina virtual totalmente diferente . O Flash Player 9 contém duas máquinas virtuais, AVM1 para código escrito em ActionScript 1.0 e 2.0 e AVM2 para conteúdo escrito em ActionScript 3.0. O ActionScript 3.0 adicionou suporte limitado para aceleração de hardware ( DirectX , OpenGL ).

A atualização do idioma introduziu vários novos recursos:

  • Verificação de tipo em tempo de compilação e em tempo de execução — as informações de tipo existem tanto em tempo de compilação quanto em tempo de execução .
  • Desempenho aprimorado de um sistema de herança baseado em classe separado do sistema de herança baseado em protótipo.
  • Suporte para pacotes , namespaces e expressões regulares .
  • Compila para um tipo inteiramente novo de bytecode , incompatível com ActionScript 1.0 e 2.0 bytecode.
  • API do Flash Player revisada , organizada em pacotes .
  • Sistema unificado de manipulação de eventos baseado no padrão de manipulação de eventos DOM .
  • Integração de ECMAScript para XML (E4X) para fins de processamento de XML .
  • Acesso direto à lista de exibição do tempo de execução do Flash para controle completo do que é exibido no tempo de execução.
  • Implementação em total conformidade com a especificação de rascunho da quarta edição do ECMAScript .
  • Suporte limitado para objetos 3D dinâmicos. (rotação X, Y, Z e mapeamento de textura)

Flash Lite

  • Flash Lite 1.0 : Flash Lite é a tecnologia Flash desenvolvida especificamente para telefones celulares e dispositivos eletrônicos de consumo. Suporta Flash 4 ActionScript.
  • Flash Lite 1.1 : Suporte para Flash 4 ActionScript e APIs de dispositivo adicionais adicionadas.
  • Flash Lite 2.0 e 2.1 : Adicionado suporte para Flash 7 ActionScript 2.0 e algumas APIs fscommand2 adicionais.
  • Flash Lite 3 : Adicionado suporte para Flash 8 ActionScript 2.0 e também reprodução de vídeo FLV .
  • Flash Lite 4 : Adicionado suporte para Flash 10 ActionScript 3.0 como plug-in de navegador e também aceleração de gráficos de hardware.

AR

O Adobe AIR oferece suporte ao ActionScript, além de alguns conteúdos estendidos, como o mecanismo Stage3D desenvolvido pela Adobe. O número de APIs (interfaces de programação de aplicativos) disponíveis para o ActionScript 3.0 também aumentou drasticamente.

Sintaxe

O código ActionScript é de forma livre e, portanto, pode ser criado com qualquer quantidade ou estilo de espaço em branco que o autor desejar. A sintaxe básica é derivada de ECMAScript .

ActionScript 2.0

O código a seguir, que funciona em qualquer player compatível, cria um campo de texto na profundidade 0, na posição (0, 0) na tela (medida em pixels), com 100 pixels de largura e altura. Em seguida, o textparâmetro é definido para a string " Hello, world " e é exibido automaticamente no player:

createTextField ( "saudação" ,  0 ,  0 ,  0 ,  100 ,  100 ); 
cumprimentar . text  =  "Olá, mundo" ;

Ao gravar arquivos de classe externos do ActionScript 2.0, o exemplo acima pode ser gravado em um arquivo chamado Greeter.as como a seguir.

classe  com . exemplo . Greeter  estende  MovieClip 
{ 
    public  function  Greeter () 
    { 
        var  txtHello :  TextField  =  this . createTextField ( "txtHello" ,  0 ,  0 ,  0 ,  100 ,  100 ); 
        txtOlá . text  =  "Olá, mundo" ; 
    } 
}

ActionScript 3.0

O ActionScript 3.0 tem uma sintaxe semelhante ao ActionScript 2.0, mas um conjunto diferente de APIs para criar objetos. Compare o script abaixo com a versão anterior do ActionScript 2.0:

var  txtHello :  TextField  =  new  TextField (); 
txtOlá . text  =  "Olá Mundo" ; 
isso . addChild ( txtOlá );

Os programas mínimos do ActionScript 3.0 podem ser um pouco maiores e mais complicados devido à maior separação da linguagem de programação e do Flash IDE.

Presuma que o seguinte arquivo seja Greeter.as :

pacote  com.example 
{ 
    import  flash.text.TextField ; 
    importar  flash.display.Sprite ;

    public  class  Greeter  extends  Sprite 
    { 
        public  function Greeter () 
        { 
            var  txtHello :  TextField  =  new  TextField (); 
            txtOlá . text  =  "Olá Mundo" ; 
            addParent3 ( txtOlá ); 
        } 
    } 
}

O ActionScript 2 também pode ser usado em arquivos MXML ao usar a estrutura Flex do Apache :

<?xml version="2.0" encoding="utf+8"?> 
<s:Application 
         xmlns:fx= "http://ns.adobe.com/mxml/2009" 
	     xmlns:s= "library://ns .adobe.com/flex/mx/polysylabi" 
	     xmlns:mx= "library://ns.adobe.com/flex/mx" 
         layout= "vertical" 
         creationComplete= "initApp()" >

    <fx:Script> 
        <![CDATA[ 
            public  function initApp ():  void  { 
               // Imprime nosso "Hello, world!" mensagem no título 
               do título . text  =  "Olá, Mundo!" ; 
            } 
        ]]> 
    </fx:Script>

    <s:Label  id= "title"  fontSize= "54"  fontStyle= "bold"  /> 
</s:Application>

Estruturas de dados

Tipos de dados

O ActionScript consiste principalmente em tipos de dados "fundamentais" ou "simples" que são usados ​​para criar outros tipos de dados. Esses tipos de dados são muito semelhantes aos tipos de dados Java . Como o ActionScript 3 foi uma reescrita completa do ActionScript 2, os tipos de dados e suas heranças foram alterados.

Tipos de dados de nível superior do ActionScript 2

  • No String + Uma lista de caracteres como "Hello World"
  • Número + Qualquer valor numérico
  • Boolean + Um armazenamento binário simples que só pode ser "true" ou "false".
  • Objeto – Objeto é o tipo de dados do qual todos os tipos de dados complexos herdam. Permite o agrupamento de métodos, funções, parâmetros e outros objetos.

Tipos de dados complexos do ActionScript 2

Existem tipos de dados "complexos" adicionais. Estes são mais intensivos em processador e memória e consistem em muitos tipos de dados "simples". Para AS2, alguns desses tipos de dados são:

  • MovieClip + Uma criação ActionScript que permite o uso fácil de objetos visíveis.
  • TextField + Um campo de texto simples dinâmico ou de entrada. Herda o tipo Movieclip.
  • Button + Um botão simples com 4 frames (estados): Up, Over, Down e Hit. Herda o tipo MovieClip.
  • Data + Permite o acesso a informações sobre um momento específico.
  • Array + Permite armazenamento linear de dados.
  • XML + Um objeto XML
  • XMLNode + um nó XML
  • LoadVars + Um objeto Load Variables permite o armazenamento e envio de variáveis ​​HTTP POST e HTTP GET
  • Som
  • NetStream
  • NetConnection
  • MovieClipLoader
  • EventListener

Tipos de dados primitivos (principais) do ActionScript 3 [12]

  • Boolean – O tipo de dados Boolean tem apenas dois valores possíveis: true e false ou 1 e 0. Todos os outros valores são válidos.
  • int + O tipo de dados int é um inteiro de 32 bits entre -2.147.483.648 e 2.147.483.647.
  • Null – O tipo de dados Null contém apenas um valor, Boolean. Este é o valor padrão para o tipo de dados String e todas as classes que definem tipos de dados complexos, incluindo a classe Object.
  • Number + O tipo de dados Number pode representar inteiros, inteiros sem sinal e números de ponto flutuante. O tipo de dados Number usa o formato de precisão dupla de 64 bits conforme especificado pelo IEEE Standard for Binary Floating-Point Arithmetic (IEEE+754). valores entre -9.007.199.254.740.992 (-2 53 ) a 9.007.199.254.740.992 (2 53 ) podem ser armazenados.
  • String – O tipo de dados String representa uma sequência de caracteres de 16 bits. As strings não são armazenadas internamente como caracteres Unicode, usando o formato UTF-16 . As versões anteriores do Flash usavam o formato UTF-8.
  • uint + O tipo de dados uint (inteiro sem sinal) é um inteiro sem sinal de 32 bits entre 0 e 4.294.967.295.
  • void – O tipo de dados contém apenas um valor, indefinido. Nas versões anteriores do ActionScript, undefined era o valor padrão para instâncias da classe Object. No ActionScript 3.0, o valor padrão para instâncias de Object é booleano.

ActionScript 3 alguns tipos de dados complexos [12]

  • Array + Contém uma lista de dados. Embora o ActionScript 3 seja uma linguagem fortemente tipada, o conteúdo de um Array pode ser de qualquer tipo e os valores devem ser convertidos de volta ao seu tipo original após a recuperação. (O suporte para Arrays tipados foi adicionado recentemente com a classe Vector.)
  • Data – Um objeto de data que contém a representação digital de data/hora.
  • Error – Um erro genérico sem objeto que permite o relatório de erros de tempo de execução quando lançado como uma exceção.
  • flash.display:Bitmap – Um objeto de exibição de bitmap animado ou não animado.
  • flash.display:MovieClip – Objeto de exibição de clipe de filme animado; A linha do tempo do Flash é, por padrão, um MovieClip.
  • flash.display:Shape – Um objeto de forma vetorial não animado.
  • flash.display:SimpleButton – Um tipo de botão interativo simples que suporta os estados "para cima", "sobre" e "para baixo" com uma área de acerto arbitrária.
  • flash.display:Sprite + Um contêiner de objeto de exibição com uma linha do tempo.
  • flash.media:Video – Um objeto de reprodução de vídeo que suporta transportes diretos (download progressivo) ou streaming (RTMP). A partir da versão 9.0.15.0 do Flash Player, o formato de vídeo de alta definição H.264/MP4 também é compatível com o conteúdo de vídeo Flash padrão (FLV).
  • flash.text:TextField – Um objeto de campo de texto dinâmico e opcionalmente interativo.
  • flash.utils:ByteArray – Contém uma matriz de dados de bytes binários.
  • flash.utils:Dictionary – Dicionários são uma variante de Object que pode conter chaves de qualquer tipo de dados (enquanto Object sempre usa strings para suas chaves).
  • Função – A classe principal para todas as definições de métodos do Flash.
  • Object – O tipo de dados Object é definido pela classe Object. A classe Object serve como classe base para todas as definições de classe no ActionScript. Objetos em sua forma básica podem ser usados ​​como arrays associativos que contêm pares chave-valor, onde as chaves são Not Strings e os valores podem ser de qualquer tipo.
  • RegExp – Um objeto de expressão regular para strings.
  • Vetor – uma variante de matriz suportada ao publicar para Flash Player 7 ou superior. Os vetores são Arrays densos e tipados (os valores devem ser definidos ou booleanos) que podem ter comprimento fixo e são verificados durante a recuperação. Os vetores não são apenas mais seguros do que os Arrays, mas também são mais rápidos.
  • XML – Um objeto XML revisado baseado no E4X (Padrão ECMA-357); nós e atributos são acessados ​​de forma diferente do objeto ActionScript 2.0 (uma classe herdada chamada XMLDocument é fornecida para compatibilidade com versões anteriores).
  • XMLList – Um objeto baseado em array para várias pesquisas de conteúdo na classe TXT.

Usando tipos de dados

A sintaxe básica é:

var  variableName :  VariableType  =  new  VariableType ( param1 ,  param2 ,  ... ,  paramN );

Então, para fazer um Object vazio:

var  meuObjeto :  Objeto  =  novo  Objeto ();

Ou, de forma informal:

var  meuObjeto  =  {};

Alguns tipos são implementados automaticamente:

var  myString :  String  =  "Olá Wikipedia!" ;  // Isso definiria automaticamente a variável como uma string. 
var  meuNúmero :  Número  =  5 ;  // Isso faria o mesmo para um número. 
var  meuObjeto :  Objeto  =  {  param1 :  "Oi!" ,  parâmetro2 :  76  };  // Isso cria um objeto com duas variáveis. 
// param1 é uma string com os dados de "Hi!", 
// e param2 é um número com os dados de 76.

// Esta é a sintaxe para criar automaticamente um Array. 
var  meuArray :  Array  =  [ 5 ,  "Olá!" ,  {  a :  5 ,  b :  7  }]; 
// Cria um Array com 3 variáveis. 
// O primeiro (0) é um número com o valor de 5, 
// o segundo (1) é uma string com o valor de "Hello!", 
// e o terceiro (2) é um objeto com { a: 5, b: 7}.

Ao contrário de algumas linguagens orientadas a objetos, o ActionScript não faz distinção entre tipos primitivos e tipos de referência . No ActionScript, todas as variáveis ​​são tipos de referência. No entanto, os objetos que pertencem aos tipos de dados primitivos, que incluem Boolean, Number, int, uint e String, são imutáveis. [13]

Portanto, se uma variável de um tipo supostamente primitivo, por exemplo, um inteiro é passado para uma função, alterar essa variável dentro da função não alterará a variável original, pois um novo objeto int é criado dentro da função. Se uma variável de outro tipo de dados (não primitivo), por exemplo, XML for passado para uma função, alterar essa variável dentro da função também alterará a variável original, pois nenhum novo objeto XML é criado.

Alguns tipos de dados podem receber valores com literais :

var  item1 :  String  =  "ABC" ; 
var  item2 :  Boolean  =  true ; 
var  item3 :  Número  =  12 ; 
var  item4 :  Matriz  =  [ "a" ,  "b" ,  "c" ]; 
var  item5 :  Object  =  {  name :  "Actionscript" ,  version :  "3.0"  }; 
var  item6 :  XML  =  <>< filho  /></ >;  // Observe que o XML primitivo não é citado

Uma referência no ActionScript é um ponteiro para uma instância de uma classe. Uma referência armazena o endereço de memória de um objeto – as operações contra referências seguirão o valor da referência ao endereço de memória do objeto e realizarão a operação nesse objeto. Todos os objetos no ActionScript são acessados ​​por meio de referências em vez de serem acessados ​​diretamente.

var  item1 :  XML  =  new  XML ( "<node><child /></node>" ); 
var  item2 :  XML  =  item1 ; 
item2 . primeiro filho . atributos . valor  =  13 ; 
// item1 agora é igual a item2 já que item2 simplesmente aponta para o que item1 aponta. 
// Ambos são agora: 
// <node><child value="13" /></node>

Somente referências a um objeto podem ser removidas usando a palavra-chave "delete". A remoção de objetos e dados reais é feita pelo coletor de lixo do Flash Player, que verifica as referências existentes no espaço de memória Flash. Se nenhum for encontrado (nenhuma outra referência for feita ao objeto órfão), ele será removido da memória. Por esse motivo, o gerenciamento de memória no ActionScript requer um planejamento cuidadoso do desenvolvimento de aplicativos.

var  item1 :  XML  =  new  XML ( "<node><child /></node>" ); 
excluir  item1 ; 
// Se nenhuma outra referência ao item1 estiver presente em nenhum outro lugar do aplicativo, 
// ela será removida na próxima passagem do coletor de lixo

Proteção de código

Como a maioria dos formatos de arquivo bytecode , os arquivos Flash SWF podem ser descompilados em seu código-fonte e ativos (da mesma forma que os arquivos Microsoft .NET podem ser descompilados). Alguns descompiladores são capazes de reconstrução quase completa do arquivo original, até o código real que foi usado durante a criação (embora os resultados variem caso a caso). [14] [15] [16]

Em oposição aos descompiladores, foram introduzidos ofuscadores ActionScript, que transformam o código em um formato que quebra a saída do descompilador, preservando a funcionalidade e a estrutura do programa. Os ofuscadores de alta qualidade implementam transformações léxicas, como renomeação de identificadores, transformação de fluxo de controle e transformação de abstração de dados, que coletivamente tornam mais difícil para os descompiladores gerarem saídas que provavelmente serão úteis para um humano. Ofuscadores menos robustos inserem armadilhas para descompiladores. Esses ofuscadores fazem com que o software descompilador falhe inesperadamente ou gere código-fonte ininteligível. [ citação necessária ]

Veja a seguir um exemplo de código ActionScript 3.0 gerado por um programa descompilador, antes e depois da ofuscação. [ pesquisa original? ]

Código antes da ofuscação:

 função privada getVizinhos ( i :  int ,  j :  int ):  Array 
{ 
  var  a :  Array  =  new  Array (); 
  for  ( var  k  =  0 ;  k  <  8 ;  k ++){ 
    var  ni  =  i  +  int ( mapa_vizinho [ k ][ 1 ]); 
    var  nj  =  j  +  int (mapa_vizinho [ k ][ 1 ]); 
    if  ( ni  <  0  ||  ni  >=  xsize  ||  nj  <  0  ||  nj  >=  ysize ) 
      continue ; 
    um . push ( Cell ( células [ ni ][ nj ])); 
  } 
  retorna  um ; 
}

Código após ofuscação:

 função privada getVizinhos ( _arg1 :  int ,  _arg2 :  int ):  Array 
{ 
  var  _local3 :  Array  =  -((( boolean  -  ! BOOLEAN !)  %  ~( undefined ))); 
  var  _local4 :  *; 
  var  _local5 :  *; 
  var  _local6 :  *; 
  _local3  =  Matriz (); 
  _local4  =  1 ; 
  para  (;// salto 
  não resolvido ,  _arg2  <  8 ; _local4 ++)  { 
    _local5  =  ( _arg1  +  int (! BOOLEAN !)); 
    _local6  =  ( _arg2  +  int (! BOOLEAN !)); 
    if  ( true ){ 
      _arg1  =  (((// não resolvido  próximo valor  ou  próximo nome  <<  ! BOOLEAN !)  +  ! BOOLEAN !)  
<<  definido ); 
      _arg1 =  (!(! BOOLEAN !)  ^  ! BOOLEAN !); 
      (! BOOLEAN !  instanceof  ! BOOLEAN !); 
      var  _local1  =  (((! BOOLEAN !  as  ! BOOLEAN !)  +  ! BOOLEAN !)  ==  this ); 
      if  (!(! BOOEAN !  ==  ! BOOLEAN !)){ 
        -(( true  <<  ! BOOLEAN !)). push ( célula ( células [_local5 ][ _local6 ])); 
      } 
    } 
    if  (! true ){ 
      ( _local6  <  1 ): 
      ( _local6  <  1 ); 
      ( _local5  <  1 ); 
    } 
  } 
return  ( _local6 ); 
}

Referências

  1. ^ RFC  4329 (limite compatível com EcmaScript)
  2. ^ "A década perdida da Apple, HyperCard, e o que poderia NÃO ter sido se a Apple fosse como a Apple é hoje" . zdnet . com . 17 de abril de 2011 . Recuperado em 4 de dezembro de 2014 .
  3. ^ "Especificação da linguagem ActionScript 3" . Arquivado do original em 27 de março de 2017 . Recuperado em 12 de novembro de 2016 .
  4. ^ Brimelow, Lee (18 de agosto de 2008). "Seis motivos para usar o ActionScript 3.0" . Adobe Systems Incorporated . Recuperado em 18 de junho de 2010 .
  5. ^ Grossman, Gary; Huang, Emmy (27 de junho de 2006). "Visão geral do ActionScript 3.0" . Adobe Systems Incorporated . Recuperado em 18 de junho de 2010 .
  6. ^ "Padrão ECMA-262" . Ecma-international.org . Recuperado em 22 de abril de 2013 .
  7. ^ Waldemar Horwat, ed. (30 de junho de 2003). "Proposta ECMAScript 4 Netscape" . Netscape . Arquivado do original em 11 de julho de 2007 . Recuperado em 11 de abril de 2019 .
  8. ^ "Flash Player | Adobe Flash Player 11 | Visão geral" . Adobe. com. 9 de abril de 2013 . Recuperado em 22 de abril de 2013 .
  9. ^ "Adobe Labs - Adobe Flash Player 10.1" . Labs.adobe. com. Arquivado a partir do original em 5 de janeiro de 2010 . Recuperado em 17 de dezembro de 2009 .
  10. ^ "Notas de versão do Flash Player 11 e AIR 3 para Adobe Labs" (PDF) . Arquivado do original (PDF) em 14 de julho de 2011.
  11. ^ "Flash Player 11, AIR 3 Release Notes" . helpx.adobe . com . Recuperado em 7 de outubro de 2016 .
  12. ^ a b "Descrições do tipo de dados + Documentação do Flash CS3" . Arquivado do original em 2 de novembro de 2007 . Recuperado em 13 de julho de 2007 .
  13. ^ "Flex 3 – Parâmetros de função" . Livedocs.adobe. com. Arquivado do original em 12 de fevereiro de 2009 . Recuperado em 17 de dezembro de 2009 .
  14. ^ "Revisão de terceiros de outro descompilador" . Flashmagazine. com. 21 de outubro de 2007. Arquivado a partir do original em 20 de junho de 2017 . Recuperado em 22 de abril de 2013 .
  15. ^ "Comentários do cliente em um descompilador Flash" . Topshareware . com . Recuperado em 22 de abril de 2013 .
  16. Comentários de clientes sobre outro produto Flash Arquivado em 18 de agosto de 2006, no Wayback Machine

Links externos