Manual 0142 Action Script.pdf

Embed Size (px)

Citation preview

  • 8/14/2019 Manual 0142 Action Script.pdf

    1/78

    Projeto financiado por:

    TCNICO/A DE

    MULTIMDIA

    0142 Action Script

    - M a n u a l d e f o r m a o -

  • 8/14/2019 Manual 0142 Action Script.pdf

    2/78

    QUEM

    SOMO

    S

    FICHA TCNICA

    A Regibio uma empresa de consultoria e formao

    profissional, acreditada pela Direco Geral do Emprego e das

    Relaes do Trabalho, processo n 3377, possui ainda

    certificao e homologao por parte do Instituto de Emprego e

    Formao Profissional, Ministrio da Agricultura Direco

    Regional de Agricultura e do Instituto da Mobilidade e dosTransportes Terrestres. A sua equipa de profissionais conta com

    mais de uma dcada de experiencia no desenvolvimento,

    organizao e gesto de sistemas de formao. Em 2006, a

    convite do Instituto para a Qualidade da Formao (IQF), fez

    parte do grupo de empresas piloto, que testou, o ento, novo

    modelo de acreditao (que ainda vigora). membro da

    Associao Nacional das Entidades Formadoras, ocupando um

    lugar de Direco.

    Apoiando-se num crescimento sustentado, desenvolve as suas

    actividades em todo o espao Nacional, com maior incidncia naRegio Norte e Centro, tendo actualmente delegaes em

    Bragana, Porto e Oliveira do Hospital.

    misso da Regibio cumprir com rigor os contratos assumidos,

    excedendo as expectativas dos seus clientes, valorizando os

    seus colaboradores e contribuindo para a aquisio e

    consolidao de competncias dos seus formandos, atravs da

    apresentao de projectos de formao, nas suas vertentes de

    formao co-financiada e no financiada, intervindo em todos os

    momentos do processo formativo.

    Na sua actuao, a Regibio disponibiliza recursos humanos e

    fsicos que sustentam a organizao, execuo e gesto de

    aces de formao profissional, numa ptica de prestao de

    servios tcnicos, logsticos e administrativos. Promove ainda a

    adopo de solues de racionalizao dos processos de

    trabalho, suportados em sistemas e tecnologias de informao e

    comunicao.

    Ttulo:

    MANUAL DE FORMAO

    UFCD 0142 Action Script

    Domnio de Formao:

    TECNOLGICO

    Curso:

    TCNICO/A DE MULTIMDIA

    Edio:

    REGIBIO FORMAO E

    CONSULTADORIA, LDA

    Organizao de Contedos:

    Bruno Gomes da Costa

    Verso:2/2012

  • 8/14/2019 Manual 0142 Action Script.pdf

    3/78

    3

    Action Script

    ndice1. Apresentao da linguagem Action Script............................................................................. 5

    1.1. Editores de cdigo Action Script .......................................................................................... 5

    1.1.1. Adobe Flash .............................................................................................................................. 5

    1.1.2. Flex Builder............................................................................................................................... 61.1.3. Outros editores ....................................................................................................................... 6

    2. A linguagem e sintaxe do Action Script................................................................................... 8

    2.1. Variveis e constantes ............................................................................................................... 8

    2.2. Tipos de dados ............................................................................................................................10

    2.3. Trabalho com objetos ..............................................................................................................11

    2.4. Propriedades ...............................................................................................................................12

    2.5. Mtodos ..........................................................................................................................................13

    2.6. Eventos ...........................................................................................................................................14

    2.7. Tratamento de eventos bsico ............................................................................................14

    2.8. Exame do processo de tratamento de eventos ............................................................16

    2.9. Exemplos de tratamento de eventos ................................................................................173. Criar ocorrncias de objetos ......................................................................................................18

    3.1. Operadores ...................................................................................................................................20

    3.2. Comentrios .................................................................................................................................20

    3.3. Controle do fluxo .......................................................................................................................21

    4. Classes e objectos ............................................................................................................................22

    4.1. Escrita do cdigo para uma classe.....................................................................................26

    4.2. Criao do seu aplicativo do ActionScript .....................................................................28

    4.3. Criao do projeto HelloWorld e da classe Greeter ..................................................28

    4.4. Adio de cdigo classe Greeter .....................................................................................29

    4.5. Criao de um aplicativo que usa o cdigo do ActionScript .................................29

    4.6. Publicao e teste do aplicativo do ActionScript........................................................30

    4.7. Melhorias ao aplicativo HelloWorld .................................................................................31

    5. Pacotes e namespaces ...................................................................................................................34

    5.1. Criao de pacotes ....................................................................................................................36

    5.2. Importao de pacotes ............................................................................................................37

    5.3. Namespaces - Espaos para nomes ..................................................................................39

    5.4. Definio de espaos para nomes ......................................................................................41

    5.5. Aplicao de espaos para nomes .....................................................................................42

    5.6. Referncia a espaos para nomes ......................................................................................43

    5.7. Uso de espaos para nomes ..................................................................................................44

    6. Variveis e tipos de dados ...........................................................................................................476.1. Noes bsicas sobre o escopo de variveis ................................................................49

    6.2. Valores padro ............................................................................................................................51

    6.3. Tipos de dados ............................................................................................................................52

    7. Verificao de tipos ........................................................................................................................53

  • 8/14/2019 Manual 0142 Action Script.pdf

    4/78

    4

    Action Script

    7.1. Verificao de tipos em tempo de compilao ............................................................53

    7.2. Verificao de tipos em tempo de execuo .................................................................55

    7.3. O operador is ...............................................................................................................................56

    7.4. O operador as ..............................................................................................................................57

    7.5. Classes dinmicas ......................................................................................................................58

    8. Descries de tipos de dados .....................................................................................................598.1. Tipo de dados Boolean ............................................................................................................59

    8.2. Tipo de dados int .......................................................................................................................59

    8.3. Tipo de dados Null ....................................................................................................................60

    8.4. Tipo de dados Number............................................................................................................60

    8.5. Tipo de dados String ................................................................................................................61

    8.6. Tipo de dados uint.....................................................................................................................62

    8.7. Tipo de dados void ....................................................................................................................62

    8.8. Tipo de dados Object ...............................................................................................................62

    8.9. Converses de tipo ....................................................................................................................63

    8.10. Converses implcitas..............................................................................................................63

    8.11. Converses explcitas ..............................................................................................................64

    8.12. Projeco para int, uint e Number .....................................................................................64

    8.13. Projeco para String...............................................................................................................67

    9. Sintaxe...................................................................................................................................................68

    9.1. Diferenciao entre maisculas e minsculas .............................................................68

    9.2. Sintaxe de pontos ......................................................................................................................68

    9.3. Sintaxe de barras .......................................................................................................................69

    9.4. Literais ............................................................................................................................................69

    9.5. Ponto-e-vrgula ...........................................................................................................................70

    9.6. Parnteses .....................................................................................................................................71

    9.7. Comentrios .................................................................................................................................719.8. Palavras-chave e palavras reservadas.............................................................................72

    9.9. Constantes .....................................................................................................................................73

    10. Estruturas de controlo de deciso...........................................................................................74

    10.1. if..else ...............................................................................................................................................74

    10.2. if..else if ...........................................................................................................................................74

    10.3. Switch ..............................................................................................................................................75

    11. Estruturas de controlo de repetio ......................................................................................75

    11.1. For .................................................................................................................. 76

    11.2. for..in .............................................................................................................. 76

    11.3. for each..in ...................................................................................................... 77

    11.4. while ............................................................................................................... 78

  • 8/14/2019 Manual 0142 Action Script.pdf

    5/78

    5

    Action Script

    1.Apresentao da linguagem Action ScriptA linguagem Action Script uma linguagem orientada por objetos utilizada

    principalmente na criao de RIAs Rich Internet Application. As RIAs so aplicaesexecutadas num browser e proporcionam uma interface grfica multimdia aoutilizador semelhante a que estes podem utilizar em aplicaes executadas emsistemas operativos cliente.

    A linguagem Action Script, desenvolvida pela Macromelia, hoje umalinguagem proprietria da Adobe baseada no standard ECMAScript. ECMAScript umalinguagem de programao baseada em scripts, padronizada pela Ecma Internationalna especificao ECMA-262.

    A linguagem Action Script, atualmente na sua terceira verso, executada emuma mquina virtual (AVM - "Action Script Virtual Machine"), contida no plug-in Flash

    que pode ser adicionado a qualquer browser.

    O Action Script 3.0 pode ser escrito e compilado de vrias formas, inclusive: Com o uso do ambiente de desenvolvimento do Adobe Flex Builder 3 Com o uso de qualquer editor de texto e um compilador de linha de comando,

    como aquele fornecido com o Flex Builder 3

    Com o uso da ferramenta de autoria do Adobe Flash CS4 Professional1.1.Editores de cdigo Action Script

    Segue-se uma descrio detalhada dos editores e ferramentas onde pode serutilizada a linguagem Action Script:

    1.1.1. Adobe FlashAlm de seus recursos grficos e de criao de animaes, o Adobe Flash CS4

    Professional inclui ferramentas para trabalhar com cdigos do Action Script, anexadosa elementos em um arquivo FLA ou em arquivos externos, exclusivos do Action Script.A ferramenta de autoria do Flash ideal para projetos que envolvem grandequantidade de animao ou vdeo, ou quando voc deseja criar a maior parte dos

    ativos grficos sozinho, especialmente projetos com uma interao mnima do usurioou funcionalidade que exija o Action Script.

    Outro motivo para escolher essa ferramenta ao desenvolver projetos do ActionScript caso prefira criar ativos visuais e escrever cdigo no mesmo aplicativo. Voc

  • 8/14/2019 Manual 0142 Action Script.pdf

    6/78

    6

    Action Script

    tambm pode usar a autoria do Flash se quiser usar componentes da interface dousurio pr-criados, mas com um SWF menor ou uma atribuio de capa visual maisfcil so prioridades essenciais para seu projeto.

    O Adobe Flash CS4 Professional inclui duas ferramentas para escrever cdigos

    do Action Script:

    Painel Aes: disponvel para trabalhar em um arquivo FLA, este painel permiteescrever cdigo do Action Script anexado a quadros em uma linha de tempo. Janela Script: a janela Script um editor de texto dedicado para trabalhar comarquivos de cdigo do Action Script.

    1.1.2. Flex BuilderO Adobe Flex Builder a principal ferramenta para criar projetos com a

    estrutura do Flex. Alm do layout visual e das ferramentas de edio de MXML, o FlexBuilder tambm inclui um editor do Action Script, por isso ele pode ser usado paracriar projetos do Flex ou somente Action Script. Os aplicativos do Flex possuem vriasvantagens, incluindo um rico conjunto de controlos pr-criados da interface dousurio, controles flexveis de layout dinmico e mecanismos embutidos para trabalharcom fontes de dados externas e vincular dados externos a elementos da interface dousurio.

    Entretanto, por causa do cdigo adicional necessrio para fornecer essesrecursos, os aplicativos do Flex podem ter um arquivo SWF maior e no podem ser

    completamente encapados com tanta facilidade quanto seus equivalentes do Flash.

    Use o Flex Builder se estiver criando aplicativos da Internet avanados,orientados a dados e cheios de recursos com o Flex e quiser editar cdigo do ActionScript, cdigo MXML e criar o layout do aplicativo visualmente, tudo com uma nicaferramenta.

    1.1.3. Outros editoresComo os arquivos do Action Script (.as) so armazenados como arquivos de

    texto simples, qualquer programa capaz de editar arquivos de texto sem formataopode ser usado para escrever arquivos do Action Script. Alm dos produtos do ActionScript da Adobe, foram criados diversos programas de edio de texto de terceiroscom recursos especficos do Action Script.

  • 8/14/2019 Manual 0142 Action Script.pdf

    7/78

    7

    Action Script

    Voc pode escrever um arquivo MXML ou classes do Action Script usandoqualquer programa de editor de texto. possvel, ento, criar um aplicativo SWF (umaplicativo do Flex ou somente Action Script) a partir desses arquivos usando o SDK doFlex, que inclui as classes de estrutura do Flex, alm do compilador do Flex.

    Opcionalmente, muitos desenvolvedores usam um editor do Action Script deterceiros para escrever classes do Action Script, junto com a ferramenta de autoria doFlash para criar contedo grfico.

    Voc pode optar por usar um editor do Action Script de terceiros se:

    Preferir escrever cdigo do Action Script em um programa separado junto com acriao de elementos visuais no Flash.

    Usar um aplicativo para programao que no seja do Action Script (como criaode pginas HTML ou de aplicativos em outra linguagem de programao) e quiser usar

    o mesmo aplicativo para o cdigo do Action Script tambm. Quiser criar projetos do Flex ou somente Action Script usando o SDK do Flex sem oFlash ou o Flex Builder.

    Exemplo de uma pequena aplicao em Action Script:

    1 Selecione Arquivo> Novo.2 Na caixa de dilogo Novo documento, selecione Documento Flash e clique em OK.Uma nova janela do Flash ser exibida.

    3 Selecione Arquivo> Salvar. Selecione uma pasta que contenha o arquivo de classeGreeter.as, chame o documento Flash de HelloWorld.fla e clique em OK.4 Na paleta Ferramentas do Flash, selecione a ferramenta Texto e arraste at o Palcopara definir um novo campo de texto, com aproximadamente 300 pixels de largura e100 de altura.

    5 No painel Propriedades, com o campo de texto ainda selecionado no Palco, defina otipo de texto como "Texto dinmico" e digite mainText como o nome de ocorrncia docampo de texto.

    6 Clique no primeiro quadro da linha de tempo principal.7 No painel Aes, digite o seguinte script:

    var myGreeter:Greeter = new Greeter();mainText.text = myGreeter.sayHello();

    8 Salve o arquivo.

  • 8/14/2019 Manual 0142 Action Script.pdf

    8/78

    8

    Action Script

    2.A linguagem e sintaxe do Action ScriptEm primeiro lugar, bom saber o que um programa de computador e o que

    ele faz. Um programa de computador consiste em dois aspetos principais:

    Ele uma srie de instrues ou etapas que o computador deve executar. Cada etapa envolve a manipulao de algumas informaes ou dados.

    Em termos gerais, um programa de computador apenas uma srie decomandos passo a passo que voc fornece ao computador e ele executa. Cadacomando conhecido como instruo. Como voc ver neste manual, no Action Script,cada instruo escrita com um ponto-e-vrgula no final.

    Em essncia, tudo o que uma determinada instruo faz em um programa manipular alguns dados que esto armazenados na memria do computador. Em um

    caso simples, voc pode instruir o computador a adicionar dois nmeros e armazenar oresultado na memria. Em um caso mais complexo, imagine que existe um desenho deum retngulo em um lugar na tela e voc quer escrever um programa a fim de mov-lopara outro lugar. O computador est mantendo controlo de determinadas informaessobre o retngulo (as coordenadas x, y nas quais ele est localizado, sua largura, altura,cor etc.). Cada uma dessas informaes est armazenada em um local na memria docomputador. Um programa que move o retngulo para um local diferente deve teretapas como "alterar a coordenada x para 200; alterar a coordenada y para 150" (ouseja, deve especificar novos valores a serem usados para as coordenadas x e y). claroque o computador faz alguma coisa com esses dados para realmente transformar os

    nmeros na imagem que aparece na tela; mas, para o nvel de detalhe que nosinteressa, basta saber que o processo de "mover um retngulo na tela", na verdade,implica em alterar alguns dados na memria do computador.

    2.1.Variveis e constantesComo a programao envolve principalmente a alterao de algumas

    informaes na memria do computador, preciso encontrar um meio de representaruma informao isolada no programa. Uma varivel um nome que representa umvalor na memria do computador. Durante a escrita de instrues para manipular

    valores, o nome da varivel escrito no lugar do valor; sempre que se deparar com onome da varivel no seu programa, o computador consultar a memria e usar ovalor que encontrar nela. Por exemplo, se voc tiver duas variveis chamadas value1 e

  • 8/14/2019 Manual 0142 Action Script.pdf

    9/78

    9

    Action Script

    value2, cada uma contendo um nmero, para adicionar esses dois nmeros, voc podeescrever a instruo: value1 + value2.

    Quando executar as etapas, o computador verificar os valores de cada varivele os adicionar juntos.

    No Action Script 3.0, uma varivel consiste em trs partes diferentes:

    O nome da varivel O tipo de dados que pode ser armazenado nela O valor real armazenado na memria do computador

    Acabamos de ver como o computador usa o nome como alocador de espaopara o valor. O tipo de dados tambm importante. Durante a criao de uma varivelno Action Script, voc especifica o tipo de dados que ela conter; a partir da, asinstrues do programa s podem armazenar esse tipo de dados na varivel, e vocpode manipular o valor usando as caractersticas especficas associadas a esse tipo dedados. No Action Script, a criao de uma varivel (conhecida como declarar a varivel)requer o uso da instruo var: var value1:Number;

    Nesse caso, instrumos o computador a criar uma varivel chamada value1, quecontm apenas dados Number (Number um tipo de dados especfico definido no

    Action Script). Voc tambm pode armazenar um valor na varivel imediatamente: varvalue2:Number = 17;

    No Adobe Flash CS4 Professional, existe outro meio de declarar uma varivel.

    Durante a colocao de um smbolo de clipe de filme, smbolo de boto ou campo detexto no Palco, voc pode-lhe dar um nome de ocorrncia no Inspetor depropriedades. Por baixo do pano, o Flash cria uma varivel com o mesmo nome que onome de ocorrncia, que voc pode usar no cdigo do Action Script para fazerreferncia a esse item do Palco. Assim, por exemplo, se voc der a um smbolo de clipede filme no Palco o nome de ocorrncia rocketShip, sempre que usar a varivelrocketShip no cdigo do Action Script, na verdade, estar manipulando esse clipe defilme.

    Uma constante muito semelhante a uma varivel no sentido de que um

    nome que representa um valor na memria do computador, com um tipo de dadosespecfico. A diferena que um valor s pode ser atribudo a uma constante umanica vez no processamento do aplicativo do Action Script. Assim que atribudo, ovalor da constante o mesmo em todo o aplicativo. A sintaxe para declarar uma

  • 8/14/2019 Manual 0142 Action Script.pdf

    10/78

    10

    Action Script

    constante a mesma que para declarar uma varivel, exceto que voc usa a palavra-chave const em vez da palavra-chave var: const SALES_TAX_RATE:Number = 0.07;

    Uma constante til para definir um valor que usado em vrios locais em umprojeto e que no alterado sob circunstncias normais. O uso de uma constante em

    vez de um valor literal torna o cdigo mais legvel. Por exemplo, mais fcil entender afinalidade de uma linha de cdigo que multiplica um preo pela SALES_TAX_RATE,comparado a uma linha de cdigo que multiplica o preo por 0,07. Alm disso, se ovalor definido por uma constante tiver de ser alterado e voc usar uma constante querepresente esse valor em todo o seu projeto, bastar alterar o valor em um nico lugar(a declarao da constante), em vez de alter-lo em vrios locais como aconteceria sevoc usasse valores literais codificados.

    2.2.Tipos de dadosNo Action Script, h vrios tipos de dados que voc pode usar como os tipos de

    dados da varivel que voc criar. Alguns deles podem ser entendidos como "simples"ou "fundamentais":

    Sequncia de caracteres: um valor textual, como um nome ou o texto do captulode um livro

    Numrico: o Action Script 3.0 inclui trs tipos de dados especficos para dadosnumricos: Nmero: qualquer valor numrico, incluindo valores com ou sem uma frao int: um inteiro (um nmero inteiro sem uma frao) uint: um inteiro "sem sinal", que significa um nmero inteiro que no pode sernegativo

    Booleano: um valor do tipo verdadeiro ou falso, tal como se uma opo est ativaou se dois valores so iguais

    Os tipos de dados simples representam uma nica informao: por exemplo,um nico nmero ou uma nica sequncia de texto. Entretanto, a maioria dos tipos dedados definidos no Action Script poderia ser descrita como tipos de dados complexos,porque representam um conjunto de valores agrupados. Por exemplo, uma varivelcom o tipo de dados Date representa um valor nico: um momento no tempo. No

    entanto, esse valor de data na verdade representado com diversos valores: dia, ms,ano, horas, minutos, segundos etc., que so todos nmeros individuais. Portanto,embora pensemos em uma data como um valor nico (e a tratemos dessa forma,criando uma varivel Date), internamente, o computador a entende como um grupode diversos valores que, juntos, definem uma nica data.

  • 8/14/2019 Manual 0142 Action Script.pdf

    11/78

    11

    Action Script

    A maioria dos tipos de dados embutidos, bem como os definidos pelosprogramadores, so tipos de dados complexos. Alguns tipos de dados complexos quetalvez voc conhea so:

    MovieClip: um smbolo de clipe de filme TextField: um campo de texto de entrada ou dinmico SimpleButton: um smbolo de boto Date: informaes sobre um momento nico no tempo (uma data e hora)

    Duas palavras que, em geral, so usadas como sinnimos de tipos de dados soclasse e objeto. Uma classe simplesmente a definio de um tipo de dados; comoum modelo para todos os objetos dos tipos de dados, como dizer "todas as variveisdo tipo de dados Example tm estas caractersticas: A, B e C. Um objeto, porm, apenas uma ocorrncia real de uma classe; uma varivel cujo tipo de dados MovieClip poderia ser descrita como um objeto MovieClip. Estas so formas diferentes

    de dizer a mesma coisa:

    O tipo de dados da varivel myVariable Number. A varivel myVariable uma ocorrncia de Number. A varivel myVariable um objeto Number. A varivel myVariable uma ocorrncia da classe Number.

    2.3.Trabalho com objetosO Action Script conhecido como uma linguagem de programao orientada a

    objetos. Programao orientada a objetos simplesmente uma abordagem daprogramao, nada mais do que uma forma de organizar o cdigo em um programa,usando objetos.

    Anteriormente, definimos um programa de computador como uma srie deetapas ou instrues que o computador executa. De forma conceitual, ento, podemosimaginar um programa de computador como uma longa lista de instrues.Entretanto, na programao orientada a objetos, as instrues do programa sodivididas em objetos diferentes, ou seja, o cdigo agrupado em blocos defuncionalidade, de forma que tipos relacionados de funcionalidade ou partesrelacionadas de informao so agrupados em um nico continer.

    Na verdade, se voc j trabalhou com smbolos no Flash, ento estacostumado a trabalhar com objetos. Imagine que voc definiu um smbolo de clipe defilme (digamos que seja o desenho de um retngulo) e colocou uma cpia dele no

  • 8/14/2019 Manual 0142 Action Script.pdf

    12/78

    12

    Action Script

    Palco. Esse smbolo de clipe de filme tambm (literalmente) um objeto no ActionScript; uma ocorrncia da classe MovieClip.

    H diversas caractersticas do clipe de filme que voc pode modificar. Porexemplo, quando ele selecionado, h valores que voc pode alterar no Inspetor de

    propriedades, como a coordenada x, sua largura ou vrios ajustes de cor, como alterarseu alfa (transparncia) ou aplicar um filtro de sombra. Outras ferramentas do Flashpermitem fazer mais alteraes, como usar a ferramenta Transformao livre paragirar o retngulo. Tudo o que possvel fazer para modificar um smbolo de clipe defilme no ambiente de autoria do Flash tambm pode ser feito no Action Script,alterando as partes dos dados que so colocadas em um nico pacote chamado objetoMovieClip.

    Na programao orientada a objetos do Action Script, h trs tipos decaractersticas que qualquer classe pode incluir:

    Propriedades Mtodos Eventos

    Juntos, esses elementos ajudam a gerenciar as partes dos dados usados peloprograma e a decidir quais aes so executadas em uma determinada ordem.

    2.4.PropriedadesUma propriedade representa uma das partes dos dados que so compactados

    em um objeto. Um objeto de msica pode ter propriedades chamadas artist e title; aclasse MovieClip tem propriedades como rotation, x, width e alpha. As propriedadesso tratadas como variveis individuais; na verdade, elas podem ser entendidas apenascomo as variveis "filho" contidas em um objeto.

    A seguir, apresentamos alguns exemplos de cdigo do Action Script que usapropriedades.

    Esta linha de cdigo move o MovieClip chamado square para 100 pixels nacoordenada x: square.x = 100;

    Este cdigo usa a propriedade de rotao fazendo com que o MovieClip squaregire para corresponder rotao do MovieClip triangle: square.rotation =triangle.rotation;

  • 8/14/2019 Manual 0142 Action Script.pdf

    13/78

    13

    Action Script

    Este cdigo altera a escala horizontal do MovieClip square para que ele fiqueuma vez e meia maior do que antes: square.scaleX = 1.5;

    Observe a estrutura comum: voc usa uma varivel (square, triangle) como onome do objeto, seguido de um ponto (.) e, depois, o nome da propriedade (x,

    rotation, scaleX). O ponto, conhecido como operador ponto, usado para indicar quevoc est acedendo um dos elementos filho de um objeto. A estrutura inteira reunida,"nome da varivel- ponto-nome da propriedade", usada como uma nica varivel,como um nome para um nico valor na memria do computador.

    2.5.MtodosUm method uma ao que pode ser executada por um objeto. Por exemplo,

    se voc criou um smbolo de clipe de filme no Flash com vrios quadros-chave eanimao em sua linha de tempo, esse clipe de filme pode ser reproduzido, parar ou

    ser instrudo a mover o indicador de reproduo para um quadro especfico.

    Este cdigo instrui o MovieClip chamado shortFilm a iniciar a reproduo:shortFilm.play();

    Esta linha faz o MovieClip chamado shortFilm parar a reproduo (o indicadorde reproduo para; como pausar um vdeo): shortFilm.stop();

    Este cdigo faz um MovieClip chamado shortFilm mover o indicador dereproduo para o Quadro 1 e parar a reproduo ( como retroceder um vdeo):shortFilm.gotoAndStop(1);

    Como voc pode ver, os mtodos, assim como as propriedades, so acedidosescrevendo o nome do objeto (uma varivel), um ponto e o nome do mtodo seguidode parnteses. Os parnteses so uma forma de indicar que voc est chamando omtodo ou, em outras palavras, instruindo o objeto a executar aquela ao. s vezes,os valores (ou as variveis) so colocados entre parnteses, como uma forma depassar adiante informaes adicionais necessrias para executar a ao. Esses valoresso conhecidos como parmetros de mtodo. Por exemplo, o mtodo gotoAndStop()precisa saber para qual quadro deve ir, por isso requer um nico parmetro entreparnteses. Outros mtodos, como play() e stop(), so autoexplicativos, por isso no

    requerem informaes extras. No entanto, eles ainda so escritos com parnteses.

    Diferentemente das propriedades (e variveis), os mtodos no so usadoscomo alocadores de espao de valor. Entretanto, alguns mtodos podem executar

  • 8/14/2019 Manual 0142 Action Script.pdf

    14/78

    14

    Action Script

    clculos e retornar um resultado que pode ser usado como uma varivel. Por exemplo,o mtodo toString() da classe Number converte o valor em sua representao de texto:

    var numericData:Number = 9;var textData:String = numericData.toString();

    Por exemplo, voc usaria o mtodo toString() se quisesse exibir o valor de umavarivel Number em um campo de texto na tela. A propriedade text da classe TextField(que representa o contedo real do texto exibido na tela) definida como uma String,por isso pode conter apenas valores de texto. Esta linha de cdigo converte o valornumrico na varivel numericData em texto e faz com que aparea na tela, no objetoTextField chamado calculatorDisplay: calculatorDisplay.text = numericData.toString();

    2.6.EventosDescrevemos um programa de computador como uma srie instrues que o

    computador executa em etapas. Alguns programas de computador simples consistemem nada mais do que algumas etapas que ele executa e depois encerrado.Entretanto, os programas do Action Script so criados para continuar a execuo eesperar a entrada do usurio ou a ocorrncia de outras coisas. Os eventos somecanismos que determinam quais instrues o computador executa em umdeterminado momento.

    Basicamente, os eventos so fenmeno s que acontecem, sobre os quais o informado e aos quais pode responder. Muitos eventos esto relacionados interaodo usurio, como quando um usurio clica em um boto ou pressiona uma tecla noteclado, mas tambm h outros tipos. Por exemplo, se voc usar o para carregar umaimagem externa, h um evento que poder avis-lo quando o carregamento daimagem for concludo. Em essncia, quando um programa executado, o Adobe FlashPlayer e o Adobe AIR aguardam determinados eventos e, ento, executam o cdigoespecfico definido para esses eventos.

    2.7.Tratamento de eventos bsicoA tcnica para especificar determinadas aes que devem ser executadas em

    resposta a eventos especficos conhecida como tratamento de eventos. Durante aescrita do cdigo do para executar o tratamento de eventos, h trs elementosimportantes a serem identificados:

    A origem do evento: para qual objeto o evento dever ocorrer? Por exemplo, qualboto ser clicado ou qual objeto Loader est carregando a imagem? A origem do

  • 8/14/2019 Manual 0142 Action Script.pdf

    15/78

    15

    Action Script

    evento tambm conhecida como destino do evento, porque o objeto para o qual oevento destinado pelo Flash Player ou AIR (ou seja, onde o evento realmenteacontece).

    O evento: o que ir acontecer, a qual fenmeno voc deseja responder? importante identificar isso, porque muitos objetos acionam diversos eventos.

    A resposta: qual ou quais etapa deseja executar quando o evento acontecer?Sempre que voc escrever cdigo do para manipular eventos, ele deve incluir

    estes trs elementos, e o cdigo deve seguir a estrutura bsica (os elementos emnegrito so alocadores de espao que voc preenche conforme o caso especfico):

    function eventResponse(eventObject:EventType):void{// Actions performed in response to the event go here.}eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

    Esse cdigo faz duas coisas. Primeiro, ele define uma funo, que a forma de

    especificar as aes que voc deseja executar em resposta ao evento. Em seguida, omtodo addEventListener() do objeto de origem chamado basicamente inscrevendoa funo do evento especificado para que, quando o evento acontecer, as aes dafuno sejam executadas. Vejamos cada uma dessas partes com mais detalhes.

    Uma funo fornece um meio de agrupar as aes, com um nico nome, que como um nome de atalho, para executar as aes. Ela idntica a um mtodo, excetoque no est necessariamente associada a uma classe especfica (na verdade, ummtodo poderia ser definido como uma funo associada a uma classe especfica).Durante a criao de uma funo para tratamento de eventos, voc deve escolher o

    nome da funo (chamada de eventResponse neste caso). Voc tambm deveespecificar um parmetro (chamado eventObject neste exemplo). A especificao deum parmetro de funo como declarar uma varivel, por isso voc tambm deveindicar o tipo de dados do parmetro. (Neste exemplo, o tipo de dados do parmetro EventType.)

    Cada tipo de evento que voc deseja escutar associado a uma classe do. Otipo de dados que voc define para o parmetro de funo sempre a classe associadaao evento especfico ao qual deseja responder. Por exemplo, um evento click(acionado quando o usurio clica em um item com o mouse) associado classe

    MouseEvent. Para escrever uma funo de ouvinte para um evento click, voc defineessa funo com um parmetro com o tipo de dados MouseEvent. Finalmente, entrechaves ({ ... }), voc escreve as instrues que deseja que o computador executequando o evento ocorrer.

  • 8/14/2019 Manual 0142 Action Script.pdf

    16/78

    16

    Action Script

    Depois de escrever a funo de tratamento de eventos, necessrio informarao objeto de origem de evento (o objeto para o qual o evento acontece, por exemplo,o boto) que voc deseja que a funo seja chamada quando o evento ocorrer. possvel fazer isso chamando o mtodo addEventListener() desse objeto (todos osobjetos que possuem eventos tambm tm um mtodo addEventListener()). O

    mtodo addEventListener() usa dois parmetros:

    O primeiro o nome do evento especfico ao qual voc deseja responder.Novamente, cada evento afiliado a uma classe especfica, e essa classe ter um valorespecial predefinido para cada evento (como se fosse o prprio nome exclusivo doevento, que voc deve usar para o primeiro parmetro). O segundo o nome da funo de resposta do evento. Observe que um nome defuno escrito sem parnteses quando transmitido como um parmetro.

    2.8.Exame do processo de tratamento deeventos

    Veja a seguir uma descrio passo a passo do processo que acontece durante acriao de um ouvinte de eventos. Neste caso, um exemplo de criao de umafuno de ouvinte que chamada quando um objeto myButton clicado.

    O cdigo real escrito pelo programador o seguinte:

    function eventResponse(event:MouseEvent):void{// Actions performed in response to the event go here.

    }myButton.addEventListener(MouseEvent.CLICK, eventResponse);

    Apresentaremos a seguir o funcionamento desse cdigo, quando executado noFlash Player. O comportamento o mesmo no Adobe AIR:

    1 Quando o arquivo SWF carregado, o Flash Player registra o fato de que h umafuno chamada: eventResponse().

    2 Em seguida, o Flash Player executa o cdigo (especificamente, as linhas de cdigoque no esto contidas em uma funo). Neste caso, apenas uma linha de cdigo:chamar o mtodo addEventListener() no objeto de origem do evento (chamado

    myButton) e transmitir a funo eventResponse como um parmetro.3 Internamente, myButton tem uma lista de funes que esto ouvindo cada um deseus eventos, por isso quando seu mtodo addEventListener() chamado,myButtonarmazena a funo eventResponse() na lista de ouvintes de eventos.

  • 8/14/2019 Manual 0142 Action Script.pdf

    17/78

    17

    Action Script

    4 Em algum momento, o usurio clica no objeto myButton, acionando o evento click(identificado como MouseEvent.CLICK no cdigo).

    5 Ento, acontece o seguinte: O Flash Player cria um objeto, uma ocorrncia da classeassociada ao evento em questo (MouseEvent, no exemplo citado). Para muitos

    eventos, essa ser uma ocorrncia da classe Event; para eventos do rato, ser umaocorrncia de MouseEvent e, para outros eventos, ser uma ocorrncia da classeassociada a esse evento. Esse objeto criado conhecido como o objeto de evento econtm informaes especficas sobre o evento que ocorreu: qual o tipo de evento,onde ele ocorreu e outras informaes especficas de evento se aplicvel.

    6 Em seguida, o Flash Player verifica a lista de ouvintes de eventos armazenada pormyButton. Ele verifica todas essas funes, chamando uma de cada vez e transmitindoo objeto de evento para a funo como um parmetro. Como a funoeventResponse() um dos ouvintes de myButton, como parte desse processo, o FlashPlayer chama a funo eventResponse().

    7 Quando a funo eventResponse() chamada, o cdigo nela executado e as aesespecificadas so realizadas.

    2.9.Exemplos de tratamento de eventosA seguir, mostramos alguns exemplos mais concretos de eventos para lhe dar

    uma ideia de alguns elementos de eventos comuns e as possveis variaes disponveisdurante a escrita do cdigo de tratamento de eventos:

    Clicar em um boto para iniciar a reproduo do clipe de filme atual. No exemplo aseguir, playButton o nome da ocorrncia do boto, e this um nome especial quesignifica o objeto atual:

    this.stop();function playMovie(event:MouseEvent):void{this.play();}

    playButton.addEventListener(MouseEvent.CLICK, playMovie);

    Detetar tipos em um campo de texto: Neste exemplo, entryText um campo detexto de entrada, e outputText um campo de texto dinmico:

    function updateOutput(event:TextEvent):void

    {var pressedKey:String = event.text;outputText.text = "You typed: " + pressedKey;}entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);

  • 8/14/2019 Manual 0142 Action Script.pdf

    18/78

    18

    Action Script

    Clicar em um boto para navegar em uma URL. Nesse caso, linkButton o nome deocorrncia do boto:

    function gotoAdobeSite(event:MouseEvent):void{

    var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/");navigateToURL(adobeURL);}linkButton.addEventListener(MouseEvent.CLICK, gotoAdobeSite);

    3.Criar ocorrncias de objetosObviamente, para que voc possa usar um objeto no, primeiro, ele deve existir.

    Uma parte da criao de um objeto declarar uma varivel; porm, a declarao deuma varivel s cria um lugar vazio na memria do computador. Voc deve atribuir umvalor real varivel, isto , criar um objeto e armazen-lo na varivel, antes de tentar

    us-lo ou manipul-lo. O processo de criar um objeto conhecido como instanciar oobjeto, em outras palavras, criar uma ocorrncia de uma classe especfica.

    Existe uma maneira simples de criar uma ocorrncia de objeto que no envolveo. No Flash, quando voc coloca um smbolo de clipe de filme, smbolo de boto oucampo de texto no Palco e lhe atribui um nome de ocorrncia no Inspetor depropriedades, o Flash automaticamente declara uma varivel com esse nome deocorrncia, cria uma ocorrncia de objeto e armazena o objeto na varivel. Da mesmaforma, quando voc usa a linguagem MXML para criar um componente no Adobe FlexBuilder (codificando uma tag MXML ou colocando o componente no editor no modoDesign) e lhe atribui uma ID (no markup MXML ou na exibio Propriedades do Flex),

    essa ID se torna o nome de uma varivel do, e uma ocorrncia do componente criadae armazenada nessa varivel.

    Entretanto, nem sempre voc criar um objeto visualmente. Tambm h vriasformas de criar ocorrncias de objeto usando somente o. Primeiro, com vrios tipos dedados do, voc pode criar uma ocorrncia usando uma expresso literal, um valorescrito diretamente no cdigo do. Eis alguns exemplos:

    Valor numrico literal (insere o nmero diretamente):var someNumber:Number = 17.239;

    var someNegativeInteger:int = -53;var someUint:uint = 22;

    Valor da sequncia de caracteres literal (envolve o texto com aspas duplas):var firstName:String = "George";var soliloquy:String = "To be or not to be, that is the question...";

  • 8/14/2019 Manual 0142 Action Script.pdf

    19/78

    19

    Action Script

    Valor booleano literal (usa os valores literais true ou false):var niceWeather:Boolean = true;var playingOutside:Boolean = false;

    Valor Array literal (envolve uma lista de valores separados por vrgula entrecolchetes):

    var seasons:Array = ["spring", "summer", "autumn", "winter"];

    Valor XML literal (insere o XML diretamente):var employee:XML = HaroldWebster;

    O tambm define expresses literais para os tipos de dados Array, RegExp,Object e Function.

    Para qualquer outro tipo de dados, para criar uma ocorrncia de objeto, use o

    operador new como o nome da classe, desta forma:var raceCar:MovieClip = new MovieClip();var birthday:Date = new Date(2006, 7, 9);

    O ato de criar de um objeto usando o operador new, muitas vezes, descritocomo chamar o construtor da classe Um construtor um mtodo especial que

    chamado como parte do processo de criar uma ocorrncia de uma classe. Observeque, ao criar uma ocorrncia dessa forma, voc coloca parnteses depois do nome daclasse e, s vezes, especifica valores de parmetro (duas aes que tambm soexecutadas ao chamar um mtodo).

    Observe que, mesmo para esses tipos de dados que permitem criar ocorrnciasusando uma expresso literal, voc ainda pode usar o operador new para criar umaocorrncia de objeto. Por exemplo, as duas linhas de cdigo a seguir fazemexatamente a mesma coisa:

    var someNumber:Number = 6.33;var someNumber:Number = new Number(6.33);

    importante se familiarizar com a forma como new ClassName() cria objetos.Se for necessrio criar uma ocorrncia de qualquer tipo de dados que no tenha umarepresentao visual (e no possa ser criada colocando um item no Palco do Flash ouno modo Design do editor XML do Flex Builder), isso s ser possvel criando o objeto

    diretamente no pelo uso do operador new.

  • 8/14/2019 Manual 0142 Action Script.pdf

    20/78

    20

    Action Script

    No Flash especificamente, o operador new tambm pode ser usado para criaruma ocorrncia de um smbolo de clipe de filme que definido na Biblioteca mas no colocado no Palco.

    Alm de declarar variveis, criar ocorrncias de objetos e manipular objetos

    usando suas propriedades e mtodos, h outros blocos de construo que voc precisausar para criar um programa do.

    3.1.OperadoresOs operadores so smbolos (ou, ocasionalmente, palavras) essenciais que so

    usados para executar clculos. Eles so muito usados em operaes matemticas etambm para comparar valores. Como regra geral, um operador usa um ou maisvalores e "obtm" um nico resultado. Por exemplo:

    O operador de adio (+) adiciona dois valores, tendo como resultado um niconmero:var sum:Number = 23 + 32;

    O operador de multiplicao (*) multiplica dois valores, tendo como resultado umnico nmero:

    var energy:Number = mass * speedOfLight * speedOfLight;

    O operador de igualdade (==) compara se dois valores so iguais, tendo comoresultado um nico valor verdadeiro ou falso (booleano):

    if (dayOfWeek == "Wednesday"){takeOutTrash();}

    Conforme mostrado aqui, o operador de igualdade e os outros operadores de"comparao", em geral, so usados com a instruo if para determinar se algumasinstrues devem ser executadas.

    3.2.ComentriosDurante a escrita do, muitas vezes, voc desejar fazer anotaes, talvez para

    explicar como algumas linhas de cdigo funcionam e por que escolheu umadeterminada opo. Os comentrios de cdigo so uma ferramenta que voc podeusar para escrever um texto que o computador deve ignorar no seu cdigo. O incluidois tipos de comentrios:

  • 8/14/2019 Manual 0142 Action Script.pdf

    21/78

    21

    Action Script

    Comentrio de uma linha: um comentrio de uma linha criado colocando duasbarras em qualquer lugar de uma linha. Tudo que vier depois das barras at o fim dalinha, ser ignorado pelo computador:

    // This is a comment; it's ignored by the computer. var age:Number = 10; // Set theage to 10 by default.

    Comentrio de vrias linhas: um comentrio de vrias linhas inclui um marcador decomentrio inicial (/*), o contedo do comentrio e um marcador de comentrio final(*/). Tudo entre os marcadores inicial e final ignorado pelo computador,independentemente do nmero de linhas que o comentrio contm:

    /*This might be a really long description, perhaps describing whata particular function is used for or explaining a section of code.

    In any case, these lines are all ignored by the computer.*/

    Outro uso comum dos comentrios "desativar" temporariamente uma oumais linhas de cdigo, por exemplo, se voc estiver testando uma forma diferente de

    fazer algo ou tentando descobrir por que um cdigo do ActionScript no estfuncionando conforme o esperado.

    3.3.Controle do fluxoMuitas vezes em um programa, voc desejar repetir determinadas aces,

    executar apenas algumas e outras no, executar aces conforme condiesespecficas etc. O controle de fluxo o controlo sobre as aces que so executadas.H vrios tipos de elementos de controlo de fluxo disponveis no ActionScript.

    Funes: as funes so como atalhos: fornecem um meio de agrupar uma srie deaces sob um nico nome e podem ser usadas para realizar clculos. As funes soespecialmente importantes para tratar eventos, mas tambm so usadas como umaferramenta geral para agrupar uma srie de instrues.

    Loops: as estruturas de loop permitem designar um conjunto de instrues que ocomputador executar por um determinado nmero de vezes ou at que algumacondio seja alterada. Com freqncia, os loops so usados para manipular vriositens relacionados, empregando uma varivel cujo valor alterado sempre que ocomputador completa o loop.

    Instrues condicionais: as instrues condicionais fornecem um meio de designaralgumas instrues que so executadas somente sob determinadas circunstncias oude fornecer conjuntos alternativos de instrues para condies diferentes. O tipomais comum de instruo condicional a instruo if. A instruo if verifica um valor

  • 8/14/2019 Manual 0142 Action Script.pdf

    22/78

    22

    Action Script

    ou uma expresso entre parnteses. Se o valor for true, as linhas de cdigo entrechaves so executadas; caso contrrio, elas so ignoradas. Por exemplo:

    if (age < 20){// show special teenager-targeted content}

    A parceira da instruo if, a instruo else, permite designar instruesalternativas a serem executadas caso a condio no seja true:

    if (username == "admin"){// do some administrator-only things, like showing extra options}else{// do some non-administrator things}

    4.Classes e objectosOs objectos so a base da linguagem do ActionScript 3.0, seus os blocos de

    construo fundamentais. Cada varivel declarada, cada funo escrita e cadaocorrncia de classe criada um objecto. Pense em um programa do Action Script 3.0como um grupo de objectos que realizam tarefas, respondem a eventos e secomunicam.

    Os programadores acostumados OOP (Programao orientada a objectos) emJava ou C++ podem pensar nos objectos como mdulos que contm dois tipos demembros: dados armazenados em variveis ou propriedades de membros e

    comportamento acessvel por meio de mtodos. O ActionScript 3.0 define objectos demodo similar, com pequenas particularidades. No ActionScript 3.0, os objectos soapenas conjuntos de propriedades. Essas propriedades so contineres que podemmanter no apenas dados, mas tambm funes ou outros objectos. Se uma funofor anexada a um objecto dessa forma, ela ser chamada de mtodo.

    Embora a definio do ActionScript 3.0 possa parecer um pouco estranha aosprogramadores com experincia em Java ou C++, na prtica, a definio dos tipos deobjecto com classes do ActionScript 3.0 bastante semelhante forma como asclasses so definidas em Java ou C++. A distino entre as duas definies de objecto importante ao discutir o modelo de objecto do ActionScript e outros tpicosavanados, mas, na maioria das situaes, o termo propriedades significa variveis demembro de classe, e no mtodos. A Referncia dos componentes e da linguagem doActionScript 3.0, por exemplo, usa o termo propriedades para se referir a variveis ou

  • 8/14/2019 Manual 0142 Action Script.pdf

    23/78

    23

    Action Script

    propriedades getter-setter. Ela usa o termo mtodos para se referir s funes quefazem parte de uma classe.

    Uma diferena sutil entre as classes no ActionScript e as classes em Java ou C++ que, no ActionScript, as classes no so apenas entidades abstratas. As classes do

    ActionScript so representadas por objectos de classe que armazenam propriedades emtodos da classe. Isso permite o uso de tcnicas que podem parecer estranhas aosprogramadores de Java e C++, como incluir instrues ou cdigo executvel no nvelsuperior de uma classe ou um pacote.

    Outra diferena entre as classes do ActionScript e as de Java ou C++ que todaclasse do ActionScript tem o que chamamos de objecto deprottipo. Nas versesanteriores do ActionScript, os objectos de prottipo, vinculados em cadeias deprottipos, serviam coletivamente como a base de toda a hierarquia de herana declasses. No ActionScript 3.0, contudo, os objectos de prottipo desempenham um

    papel secundrio no sistema de herana. Apesar disso, eles podero ser teis comouma alternativa s propriedades e aos mtodos estticos se voc quiser compartilharuma propriedade e seu valor com todas as ocorrncias de uma classe.

    Anteriormente, os programadores de ActionScript avanados podiammanipular diretamente a cadeia de prottipos com elementos de linguagemembutidos especiais. Agora que essa linguagem fornece uma implementao maismadura de uma interface de programao baseada em classes, muitos desseselementos de linguagem especiais, como _proto_ e _resolve_, no fazem mais parteda linguagem. Alm disso, as otimizaes do mecanismo de herana interno quefornece melhorias de desempenho significativas no Flash Player e no Adobe AIRimpedem o acesso direto ao mecanismo de herana.

    No Action Script 3.0, cada objecto definido por uma classe. Uma classe podeser entendida como um modelo ou uma cpia de um tipo de objecto. As definies declasse podem incluir variveis e constantes, que mantm valores de dados, e mtodos,que so funes de encapsulamento de comportamento vinculadas classe. Osvalores armazenados em propriedades podem ser valores primitivos ou outrosobjectos. Os valores primitivos so nmeros, seqncias de caracteres ou valoresbooleanos.

    O Action Script contm diversas classes embutidas que fazem parte dalinguagem central. Algumas delas, como Number, Boolean e String, representam osvalores primitivos disponveis no Action Script. Outras classes, como Array, Math eXML, definem objectos mais complexos.

  • 8/14/2019 Manual 0142 Action Script.pdf

    24/78

    24

    Action Script

    Todas as classes, incorporadas ou definidas pelo usurio, derivam da classeObject. Para os programadores com experincia no ActionScript, importanteobservar que o tipo de dados Object no mais o tipo de dados padro, muito emboratodas as outras classes ainda derivem dessa. No ActionScript 2.0, as duas linhas decdigo a seguir eram equivalentes porque a falta de uma anotao de tipo significava

    que uma varivel seria do tipo Object:

    var someObj:Object;var someObj;

    O Action Script 3.0, porm, apresenta o conceito de variveis sem tipo, quepodem ser designadas destas duas formas:

    var someObj:*;var someObj;

    Uma varivel sem tipo no igual a uma varivel do tipo Object. A principaldiferena que as variveis sem tipo podem manter o valor especial undefined,enquanto uma varivel do tipo Object no pode.

    Voc pode definir suas prprias classes usando a palavra-chave class. Aspropriedades de classe podem ser declaradas de trs formas: as constantes podem serdefinidas com a palavra-chave const, as variveis so definidas com a palavra- chavevar e as propriedades getter e setter so definidas usando os atributos get e set emuma declarao de mtodo. Os mtodos podem ser declarados com a palavra-chavefunction.

    Uma ocorrncia de uma classe criada usando o operador new. O exemplo a

    seguir cria uma ocorrncia da classe Date chamada myBirthday.var myBirthday:Date = new Date();

    O processo de criar as classes que sero usadas nos projetos pode parecerassustador. Entretanto, a parte mais difcil da criao de uma classe a tarefa de cri-la, identificando os mtodos, as propriedades e os eventos que ela incluir.

    O tpico de criao orientada a objectos complexo; existem cargostotalmente dedicados ao estudo acadmico e prtica profissional dessa disciplina. Noentanto, apresentamos algumas sugestes de abordagens que podem ajud-lo a

    comear.

    1 Pense na funo que as ocorrncias dessa classe exercero no aplicativo. Em geral,os objectos cumprem uma destas trs funes:

  • 8/14/2019 Manual 0142 Action Script.pdf

    25/78

    25

    Action Script

    Objecto de valor: esses objectos servem basicamente como contineres de dados,isto , eles costumam ter diversas propriedades e menos mtodos (ou, s vezes,nenhum mtodo). Em geral, eles so representaes de cdigo de itens definidosclaramente, como uma classe Song (representando uma nica msica do mundo real)ou classe Playlist (representando um grupo conceitual de msicas) em um aplicativo de

    player de msica. Objecto de exibio: so os objectos que realmente aparecem na tela. Exemplosincluem elementos da interface do usurio como uma lista suspensa ou exibio destatus, elementos grficos como criaturas em um videogame etc.

    Estrutura do aplicativo: esses objectos exercem uma ampla gama de funes desuporte na lgica ou no processamento executados pelos aplicativos. Exemplosincluem um objecto que executa determinados clculos em uma simulao biolgica,um que responsvel por sincronizar valores entre um controle de mostrador e umaexibio de volume em um aplicativo de player de msica, um que gerencia as regrasem um videogame ou um que carrega uma imagem salva em um aplicativo de

    desenho.

    2 Escolha a funcionalidade especfica de que a classe precisar. Os diferentes tipos defuncionalidade, em geral, se tornam mtodos da classe.

    3 Se a classe for servir como um objecto de valor, decida quais dados as ocorrnciasincluiro. Esses itens so bons candidatos para propriedades.

    4 Como a classe est sendo criada especificamente para seu projeto, o maisimportante fornecer a funcionalidade de que o aplicativo precisa. Talvez ajuderesponder a estas questes:

    Que informaes o aplicativo ir armazenar, controlar e manipular? Decidir issoajuda a identificar os objectos de valor e as propriedades que voc deseja. Quais conjuntos de aes devero ser executados, por exemplo, quando oaplicativo for carregado pela primeira vez, um boto for clicado, um filme parar de serreproduzido etc.? Esses so bons candidatos para mtodos (ou propriedades, se as"aes" envolverem apenas a alterao de valores individuais).

    Quais informaes a classe deve saber para executar cada ao especfica? Essasinformaes se tornam os parmetros do mtodo. Conforme o aplicativo executar seu trabalho, o que mudar na sua classe queoutras partes do aplicativo dever saber? Esses itens so bons candidatos para

    eventos.

    5 Se houver um objecto existente semelhante quele de que voc precisa, mas queno tenha alguma funcionalidade adicional que voc deseja adicionar, considere acriao de uma subclasse (uma classe que aproveite a funcionalidade de uma classe

  • 8/14/2019 Manual 0142 Action Script.pdf

    26/78

    26

    Action Script

    existente, em vez de definir todas as suas prprias funcionalidades). Por exemplo, sevoc quiser criar uma classe que seja um objecto visual na tela, pode usar ocomportamento de um dos objectos de exibio existentes (por exemplo, Sprite ouMovieClip) como base para sua classe. Nesse caso, MovieClip (ou Sprite) seria a classebase, e sua classe estenderia essa classe.

    4.1.Escrita do cdigo para uma classeDepois de fazer um plano de criao para sua classe ou, pelo menos, ter uma

    idia das informaes sobre as quais ela dever ter controlo e quais aes devero serexecutadas, a sintaxe real da escrita de uma classe bem direta.

    Veja as etapas mnimas para criar sua prpria classe do ActionScript:

    1 Abra um novo documento de texto, em um programa especfico do ActionScriptcomo o Flex Builder ou o Flash, em uma ferramenta de programao geral como oDreamweaver ou em qualquer programa que permita trabalhar com documento detexto sem formatao.

    2 Insira uma ocorrncia de class para definir o nome da classe. Para isso, digite aspalavras public class, o nome da classe e as chaves que envolvero o contedo daclasse (as definies de mtodo e propriedade). Por exemplo:

    public class MyClass{}

    A palavra public indica que a classe pode ser acessada de qualquer outrocdigo.

    3 Digite uma instruo package para indicar o nome do pacote no qual sua classe seencontrar. A sintaxe a palavra package, seguida do nome completo do pacote e daschaves (que envolvero o bloco da instruo class). Por exemplo, o cdigo na etapaanterior seria alterado da seguinte forma:

    package mypackage{

    public class MyClass{}}

    4 Defina cada propriedade na classe usando a instruo var dentro do corpo daclasse; a sintaxe a mesma usada para declarar qualquer varivel (com a adio do

  • 8/14/2019 Manual 0142 Action Script.pdf

    27/78

    27

    Action Script

    modificador public). Por exemplo, a adio destas linhas entre as chaves de definioda classe criar propriedades chamadas textVariable, numericVariable e dateVariable:

    public var textVariable:String = "some default value";public var numericVariable:Number = 17;public var dateVariable:Date;

    5 Defina cada mtodo na classe usando a mesma sintaxe usada para definir umafuno. Por exemplo:

    Para criar um mtodo myMethod(), digite:public function myMethod(param1:String, param2:Number):void{// do something with parameters}

    Para criar um construtor (o mtodo especial que chamado como parte doprocesso de criar uma ocorrncia de uma classe), crie um mtodo cujo nomecorresponda exatamente ao nome da classe:

    public function MyClass(){// do stuff to set initial values for properties// and otherwise set up the object textVariable = "Hello there!"; dateVariable = newDate(2001, 5, 11);}

    Se voc no incluir um mtodo construtor na classe, o compilador criarautomaticamente um construtor vazio. (sem nenhum parmetro e nenhumainstruo) na sua classe. H mais alguns elementos de classe que voc pode definir,que so mais complexos.

    Assessores so um cruzamento especial entre um mtodo e uma propriedade.Durante a escrita do cdigo para definir a classe, voc escreve o assessor como ummtodo para poder executar vrias aes (em vez de apenas ler ou atribuir um valor,que tudo o que voc pode fazer ao definir uma propriedade). Entretanto, na criaode uma ocorrncia da classe, voc trata o assessor como uma propriedade, usandoapenas o nome para ler ou atribuir o valor.

    Os eventos no ActionScript no so definidos usando uma sintaxe especfica. Em vezdisso, voc define eventos na classe usando a funcionalidade da classeEventDispatcher para manter controle de ouvintes de evento e notific-los doseventos.

    Exemplo: Criao de um aplicativo bsico

    Voc pode criar arquivos de cdigo do ActionScript externo com uma extenso.as usando o Flash, Flex Builder, Dreamweaver ou qualquer editor de texto.

  • 8/14/2019 Manual 0142 Action Script.pdf

    28/78

    28

    Action Script

    O ActionScript 3.0 pode ser usado em diversos ambientes de desenvolvimentode aplicativo, incluindo as ferramentas de autoria do Flash e o Flex Builder.

    Esta seo apresenta as etapas de criao e de aprimoramento de umaplicativo ActionScript 3.0 simples usando a ferramenta de autoria do Flash ou o Flex

    Builder. O aplicativo que voc criar apresentar um padro simples para usar arquivosexternos de classe do ActionScript 3.0 nos aplicativos Flash e Flex. Esse padro seaplicar a todos os outros aplicativos de exemplo deste manual.

    4.2.Criao do seu aplicativo do ActionScriptVoc deve ter uma idia do aplicativo que deseja ter antes de comear a cri-lo.

    A representao do seu design pode ser to simples quanto o nome doaplicativo e uma breve instruo de sua finalidade ou to complicado quanto um

    conjunto de documentos de requisitos contendo vrios diagramas UML (UnifiedModeling Language). Este manual no discute a disciplina do design de software emdetalhes, mas importante ter em mente que ele uma etapa essencial nodesenvolvimento de aplicativos do ActionScript.

    Nosso primeiro exemplo de um aplicativo do ActionScript ser um aplicativoHello World padro, pois seu design muito simples:

    Oaplicativo ser chamado de HelloWorld. Eleexibir um nico campo de texto contendo as palavras Hello World!. Para ser reutilizado facilmente, ele usar uma nica classe orientada a objectos,chamada Greeter, que pode ser usada de dentro de um documento Flash ou umaplicativo do Flex. Depois de criar uma verso bsica do aplicativo, voc adicionar uma novafuncionalidade que exija do usurio a insero de um nome de usurio e faa oaplicativo verificar esse nome em relao a uma lista de usurios conhecidos.

    Com essa definio concisa estabelecida, voc pode comear a criar o aplicativoem si.

    4.3.Criao do projeto HelloWorld e da classeGreeter

    A instruo do design para o aplicativo Hello World dizia que seu cdigo deveser fcil de reutilizar. Com esse objetivo em mente, o aplicativo usa uma nica classe

  • 8/14/2019 Manual 0142 Action Script.pdf

    29/78

    29

    Action Script

    orientada a objectos, chamada Greeter, que usada de dentro de um aplicativo criadono Flex Builder ou na ferramenta de autoria do Flash.

    Para criar a classe Greeter na ferramenta de autoria do Flash:

    1 Na ferramenta autoria do Flash, selecione Arquivo > Novo.2 Na caixa de dilogo Novo documento, selecione o arquivo do ActionScript e cliqueem OK. Uma nova janela de edio do ActionScript ser exibida.

    3 Selecione Arquivo> Salvar. Selecione uma pasta para conter o aplicativo, chame oarquivo do ActionScript de Greeter.as e clique em OK.

    4.4.Adio de cdigo classe GreeterA classe Greeter define um objecto, Greeter, que poder ser usado no

    aplicativo HelloWorld. Para adicionar cdigo classe Greeter:

    1 Digite o seguinte cdigo no novo arquivo:package{

    public class Greeter{

    public function sayHello():String{var greeting:String; greeting = "Hello World!"; return greeting;}}}

    A classe Greeter inclui um nico mtodo sayHello() , que retorna umaseqncia de caracteres que diz HelloWorld!.

    2 Clique em Arquivo> Salvar para salvar esse arquivo do ActionScript. A classe Greeteragora est pronta para ser usada em um aplicativo.

    4.5.Criao de um aplicativo que usa ocdigo do ActionScript

    A classe Greeter que voc criou define um conjunto independente de funes

    de software, mas no representa um aplicativo completo. Para usar a classe, necessrio criar um documento do Flash ou aplicativo do Flex.

    O aplicativo HelloWorld cria uma nova ocorrncia da classe Greeter. Veja comoanexar a classe Greeter ao seu aplicativo.

  • 8/14/2019 Manual 0142 Action Script.pdf

    30/78

    30

    Action Script

    Para criar um aplicativo do ActionScript usando a ferramenta de autoria doFlash:

    1 Selecione Arquivo> Novo.2 Na caixa de dilogo Novo documento, selecione Documento Flash e clique em OK.Uma nova janela do Flash ser exibida.

    3 Selecione Arquivo> Salvar. Selecione uma pasta que contenha o arquivo de classeGreeter.as, chame o documento Flash de HelloWorld.fla e clique em OK.

    4 Na paleta Ferramentas do Flash, selecione a ferramenta Texto e arraste at o Palcopara definir um novo campo de texto, com aproximadamente 300 pixels de largura e100 de altura.

    5 No painel Propriedades, com o campo de texto ainda selecionado no Palco, defina otipo de texto como "Texto dinmico" e digite mainText como o nome de ocorrncia docampo de texto.

    6 Clique no primeiro quadro da linha de tempo principal.7 No painel Aes, digite o seguinte script:

    var myGreeter:Greeter = new Greeter();mainText.text = myGreeter.sayHello();

    8 Salve o arquivo.4.6.Publicao e teste do aplicativo do

    ActionScript

    O desenvolvimento de software um processo interativo. Voc escreve umcdigo, tenta compil-lo e o edita at obter uma compilao limpa. Depois, vocexecuta o aplicativo compilado, testa-o para ver se ele cumpre o design pretendido e,caso negativo, edita o cdigo novamente at que o faa. Os ambientes dedesenvolvimento do Flash e do Flex Builder oferecem vrios meios de publicar, testar edepurar aplicativos.

    Veja as etapas bsicas para testar o aplicativo HelloWorld em cada ambiente.

    Para publicar e testar um aplicativo do Action Script usando a ferramenta deautoria do Flash:

  • 8/14/2019 Manual 0142 Action Script.pdf

    31/78

    31

    Action Script

    1 Publique seu aplicativo e observe se h erros de compilao. Na ferramenta deautoria do Flash, seleccione Controlar> Testar filme para compilar o cdigo do ActionScript e executar o aplicativo HelloWorld.

    2 Se forem exibidos erros ou avisos na janela Sada durante o teste do aplicativo,corrija as causas dos erros nos arquivos HelloWorld.fla ou HelloWorld.as e tente testaro aplicativo novamente.

    3 Se no houver nenhum erro de compilao, voc ver uma janela do Flash Playermostrando o aplicativo Hello World.

    Voc acabou de criar um aplicativo orientado a objectos simples, mascompleto, que usa o Action Script 3.0.

    4.7.Melhorias ao aplicativo HelloWorldPara tornar o aplicativo um pouco mais interessante, agora voc o far solicitar

    e validar um nome de usurio em relao a uma lista de nomes predefinida.

    Primeiro, voc actualizar a classe Greeter para adicionar nova funcionalidade.Depois, voc actualizar o aplicativo para usar a nova funcionalidade.

    Para actualizar o arquivo Greeter.as:

    1 Abra o arquivo Greeter.as.2 Altere o contedo do arquivo com o seguinte (as linhas novas e alteradas somostradas em negrito):

    package{

    public class Greeter{/*** Defines the names that should receive a proper greeting.*/

    public static var validNames:Array = ["Sammy", "Frank", "Dean"];/*** Builds a greeting string using the given name.*/

    public function sayHello(userName:String = ""):String{var greeting:String;if (userName == ""){

    greeting = "Hello. Please type your user name, and then press the Enter key.";}else if (validName(userName)){greeting = "Hello, " + userName + ".";}else

  • 8/14/2019 Manual 0142 Action Script.pdf

    32/78

    32

    Action Script

    {greeting = "Sorry " + userName + ", you are not on the list.";}return greeting;}/*** Checks whether a name is in the validNames list.*/

    public static function validName(inputName:String = ""):Boolean{if (validNames.indexOf(inputName) > -1){return true;}else{return false;}}}}

    A classe Greeter agora tem vrios novos recursos:

    Amatriz validNames lista os nomes de usurios vlidos. A matriz inicializada comuma lista de trs nomes quando a classe Greeter carregada. Omtodo sayHello() agora aceita um nome de usurio e altera a saudao com baseem algumas condies. Se userName for uma seqncia de caracteres vazia (""), apropriedade greeting ser definida para solicitar um nome ao usurio. Se o nome dousurio for vlido, a saudao se tornar "Hello, userName". Finalmente, se as duascondies no forem atendidas, a varivel greeting ser definida como "SorryuserName, you are not on the list". O mtodo validName() retornar true se inputName for encontrado na matrizvalidNames e false se no for encontrado. A instruo validNames.indexOf(inputName)

    verifica cada seqncia de caracteres na matriz validNames em relao seqncia decaracteres inputName. O mtodo Array.indexOf() retornar a posio de ndice daprimeira ocorrncia de um objecto em uma matriz ou o valor -1 se o objecto no forencontrado nela.

    Em seguida, voc editar o arquivo Flash ou Flex que faz referncia a essaclasse do Action Script.

    1 Abra o arquivo HelloWorld.fla.2 Modifique o script no Quadro 1 para que uma seqncia de caracteres ("") sejatransmitida ao mtodo sayHello() da classe Greeter:

    var myGreeter:Greeter = new Greeter();mainText.text = myGreeter.sayHello("");

  • 8/14/2019 Manual 0142 Action Script.pdf

    33/78

    33

    Action Script

    3 Selecione a ferramenta Texto na paleta Ferramentas e crie dois novos campos detexto no Palco, lado a lado e diretamente sob o campo de texto mainText existente.

    4 No primeiro campo de texto novo, digite o texto User Name: para servir de rtulo.5 No outro campo de texto novo, e no Inspetor de propriedades, selecione InputTextcomo o tipo de campo de texto. Selecione Linha nica como o Tipo de linha. Digite

    textIn como o nome de ocorrncia.

    6 Clique no primeiro quadro da linha de tempo principal.7 No painel Aes, adicione as seguintes linhas no final do script existente:

    mainText.border = true;textIn.border = true;textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);function keyPressed(event:KeyboardEvent):void{if (event.keyCode == Keyboard.ENTER)

    {mainText.text = myGreeter.sayHello(textIn.text);}}

    O novo cdigo adiciona a seguinte funcionalidade:

    Asprimeiras duas linhas simplesmente definem bordas para os dois campos de texto. Um campo de texto de entrada, como o campo textIn, possui um conjunto deeventos que ele pode despachar.O mtodo addEventListener() permite definir uma funo que executada quando umtipo de evento ocorre. Neste caso, o evento o pressionamento de uma tecla no

    teclado. Afuno personalizada keyPressed() verifica se a tecla que foi pressionada a teclaEnter. Caso afirmativo, ela chama o mtodo sayHello() do objecto myGreeter ,transmitindo o texto do campo de texto textIn como um parmetro. Esse mtodoretorna uma seqncia de caracteres de saudao com base no valor transmitido. Aseqncia de caracteres retornada atribuda propriedade text do campo de textomainText.

    O script completo para o Quadro 1 o seguinte:

    var myGreeter:Greeter = new Greeter();

    mainText.text = myGreeter.sayHello("");mainText.border = true;textIn.border = true;textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);function keyPressed(event:KeyboardEvent):void{if (event.keyCode == Keyboard.ENTER)

  • 8/14/2019 Manual 0142 Action Script.pdf

    34/78

    34

    Action Script

    {mainText.text = myGreeter.sayHello(textIn.text);}}

    8 Salve o arquivo.9

    Selecione Controlar> Testar filme para executar o aplicativo.Durante a execuo do aplicativo, voc ser solicitado a inserir um nome de

    usurio. Se for vlido (Sammy, Frank ou Dean), o aplicativo exibir a mensagem deconfirmao "hello".

    5.Pacotes e namespacesOs pacotes e espaos para nomes so conceitos relacionados. Os pacotes

    permitem compactar definies de classe juntas de uma forma que facilita ocompartilhamento de dados e minimiza conflitos de nome. Os espaos para nomes

    permitem controlar a visibilidade de identificadores, como nomes de propriedades emtodos, e podem ser aplicados ao cdigo quer ele residam dentro ou fora de umpacote. Os pacotes permitem organizar os arquivos de classe, e os espaos para nomespermitem gerenciar a visibilidade de propriedades e mtodos individuais.

    Os pacotes no Action Script 3.0 so implementados com espaos para nomes,mas eles no so sinnimos. Ao declarar um pacote, voc cria implicitamente um tipoespecial de espao para nomes que ser conhecido em tempo de compilao. Osespaos para nomes, quando criados explicitamente, no so necessariamenteconhecidos em tempo de compilao.

    O seguinte exemplo usa a diretiva package para criar um pacote simplescontendo uma classe:

    package samples{

    public class SampleCode{

    public var sampleGreeting:String;public function sampleFunction(){trace(sampleGreeting + " from sampleFunction()");}}}

    O nome da classe neste exemplo SampleCode. Como a classe est dentro dopacote de amostras, o compilador automaticamente qualifica o nome da classe emtempo de compilao em seu nome totalmente qualificado: samples.SampleCode. Ocompilador tambm qualifica os nomes de quaisquer propriedades e mtodos, para

  • 8/14/2019 Manual 0142 Action Script.pdf

    35/78

    35

    Action Script

    que sampleGreeting e sampleFunction() se tornemsamples.SampleCode.sampleGreeting e samples.SampleCode.sampleFunction(),respectivamente.

    Muitos desenvolvedores, especialmente aqueles com experincia em

    programao Java, podem optar por colocar apenas classes no nvel superior de umpacote. O Action Script 3.0, no entanto, oferece suporte no apenas a classes no nvelsuperior de um pacote, mas tambm a variveis, funes e at mesmo instrues.Uma utilizao avanada desse recurso definir um espao para nomes no nvelsuperior de um pacote de forma que fique disponvel para todas as classes dessepacote. Observe, porm, que somente dois especificadores de acesso, public einternal, so permitidos no nvel superior de um pacote. Diferentemente de Java, quepermite declarar classes aninhadas como particulares, o ActionScript 3.0 no oferecesuporte a classes aninhadas nem a particulares.

    Entretanto, de muitas outras formas, os pacotes do Action Script 3.0 sosemelhantes aos pacotes na linguagem de programao Java. Como voc pode ver noexemplo anterior, as referncias aos pacotes totalmente qualificados so expressasusando o operador dot (.), da mesma forma que em Java. Voc pode usar pacotes paraorganizar seu cdigo em uma estrutura hierrquica intuitiva para ser usada por outrosprogramadores. Isso facilita o compartilhamento de cdigo, permitindo criar seuprprio pacote para compartilhar com outros e usar pacotes criados por outros em seucdigo.

    O uso de pacotes tambm ajuda a garantir que os nomes de identificadoresusados sejam exclusivos e no entrem em conflito com outros. Na verdade, algunsacham que essa a maior vantagem dos pacotes. Por exemplo, dois programadoresque desejam compartilhar cdigo entre si criam uma classe chamada SampleCode.Sem pacotes, ela cria um conflito de nome e a nica soluo seria renomear uma dasclasses. Com pacotes, porm, o conflito de nomes facilmente evitado colocando umaclasse, ou de preferncia as duas, em pacotes com nomes exclusivos.

    Tambm possvel incluir pontos incorporados no nome do pacote para criarpacotes aninhados. Isso permite criar uma organizao hierrquica de pacotes. Umbom exemplo disso o pacote flash.xml fornecido pelo Action Script 3.0. O pacoteflash.xml aninhado dentro do pacote flash.

    O pacote flash.xml contm o analisador XML herdado que era usado emverses anteriores do Action Script. Um dos motivos para que agora ele resida nopacote flash.xml que o nome da classe XML herdada entra em conflito com o nome

  • 8/14/2019 Manual 0142 Action Script.pdf

    36/78

    36

    Action Script

    da nova classe XML que implementa a funcionalidade XML da especificaoECMAScript (E4X) disponvel no ActionScript 3.0.

    Embora o acto de mover a classe XML herdada para um pacote seja uma boamedida inicial, a maioria dos usurios das classes XML herdadas importa o pacote

    flash.xml, o que ir gerar o conflito de nomes a menos que voc se lembre de sempreusar o nome totalmente qualificado da classe XML herdada (flash.xml.XML). Paraevitar essa situao, a classe XML herdada agora se chama XMLDocument, comomostra o seguinte exemplo:

    package flash.xml{class XMLDocument {} class XMLNode {} class XMLSocket {}}

    Grande parte do Action Script 3.0, organizado com base no pacote flash. Porexemplo, o pacote flash.display contm a API de lista de exibio, e o pacote

    flash.events contm o novo modelo de eventos.

    5.1.Criao de pacotesO Action Script 3.0 fornece uma flexibilidade significativa na forma de organizar

    pacotes, classes e arquivos de origem. As verses anteriores do Action Scriptpermitiam somente uma classe por arquivo de origem e exigiam que o nome doarquivo de origem correspondesse ao nome da classe. O Action Script 3.0 permiteincluir diversas classes em um nico arquivo de origem, mas somente uma classe emcada arquivo pode ser disponibilizada para um cdigo externo ao arquivo. Em outras

    palavras, somente uma classe em cada arquivo pode ser declarada dentro de umadeclarao de pacote. As classes adicionais devem ser declaradas fora da definio dopacote, o que torna as classes invisveis ao cdigo fora do arquivo de origem. O nomeda classe declarada dentro da definio do pacote deve corresponder ao nome doarquivo de origem.

    O Action Script 3.0 tambm oferece mais flexibilidade na forma de declararpacotes. Nas verses anteriores do Action Script, os pacotes simplesmenterepresentavam diretrios nos quais os arquivos de origem eram colocados e ospacotes no eram declarados com a instruo package, mas incluam o nome dopacote como parte do nome da classe totalmente qualificada na sua declarao declasse. Embora ainda representem diretrios no Action Script 3.0, os pacotes podemconter mais do que apenas classes. No Action Script 3.0, a instruo package usadapara declarar um pacote, o que significa que voc tambm pode declarar variveis,funes e espaos para nomes no nvel superior de um pacote. possvel at incluir

  • 8/14/2019 Manual 0142 Action Script.pdf

    37/78

    37

    Action Script

    instrues executveis no nvel superior de um pacote. Se voc declarar variveis,funes ou espaos para nomes no nvel superior de um pacote, os nicos atributosdisponveis nesse nvel sero public e internal, e somente uma declarao de nvel depacote por arquivo poder usar o atributo public, quer a declarao seja uma classe,varivel, funo ou um espao para nomes.

    Os pacotes so teis para organizar o cdigo e evitar conflitos de nome. Noconfunda o conceito de pacotes com o conceito no relacionado de herana de classe.Duas classes que residem no mesmo pacote tm um espao para nomes em comum,mas no esto necessariamente relacionadas de outra forma. Da mesma forma, umpacote aninhado pode no ter nenhuma relao semntica com o pacote pai.

    5.2. Importao de pacotesPara usar uma classe que est dentro de um pacote, voc deve importar o

    pacote ou a classe especfica. Isso difere do Action Script 2.0, em que a importao declasses era opcional.

    Por exemplo, considere o exemplo de classe SampleCode apresentadoanteriormente neste captulo. Se a classe residir em um pacote chamado sample, vocdever usar uma das seguintes instrues de importao usando a classe SampleCode:

    import samples.*;ouimport samples.SampleCode;

    Em geral, as instrues import devem ser to especficas quanto possvel. Se

    voc pretende usar apenas a classe SampleCode do pacote samples, dever importarsomente a classe SampleCode e no o pacote inteiro ao qual ela pertence. Aimportao de pacotes inteiros pode gerar conflitos de nome inesperados.

    Voc tambm deve colocar o cdigo-fonte que define o pacote ou a classe nocaminho de classe. O caminho de classe uma lista definida pelo usurio de caminhosde diretrio locais que determina onde o compilador pesquisar as classes e ospacotes importados. O caminho de classe, s vezes, chamado de caminho de criaoou caminho de origem.

    Depois de importar adequadamente a classe ou o pacote, voc pode usar onome totalmente qualificado da classe (samples.SampleCode) ou apenas o nome daclasse em si (SampleCode).

  • 8/14/2019 Manual 0142 Action Script.pdf

    38/78

    38

    Action Script

    Os nomes totalmente qualificados so teis quando classes, mtodos oupropriedades com nomes idnticos geram cdigo ambguo, mas podem ser difceis degerenciar se usados para todos os identificadores. Por exemplo, o uso do nometotalmente qualificado gera um cdigo detalhado ao instanciar uma ocorrncia daclasse SampleCode:

    var mySample:samples.SampleCode = new samples.SampleCode();

    Conforme os nveis de pacotes aninhados crescem, a legibilidade do cdigodiminui. Nas situaes em que certamente no haver identificadores ambguos, vocpode tornar seu cdigo mais fcil de ler usando identificadores simples. Por exemplo, ainstanciao de uma nova ocorrncia da classe SampleCode ser bem menosdetalhada se voc usar somente o identificador de classe:

    var mySample:SampleCode = new SampleCode();

    Se voc tentar usar os nomes de identificador sem primeiro importar o pacote

    ou a classe apropriados, o compilador no conseguir encontrar as definies declasse. Entretanto, se voc importar um pacote ou uma classe, qualquer tentativa dedefinir um nome que entre em conflito com um nome importado ir gerar um erro.

    Durante a criao de um pacote, o especificador de acesso padro para todosos seus membros internal, o que significa que, por padro, os membros do pacoteso visveis apenas por outros membros do mesmo pacote. Para que uma classe fiquedisponvel para o cdigo fora do pacote, necessrio declar-la como public. Porexemplo, o seguinte pacote contm duas classes, SampleCode e CodeFormatter:

    // SampleCode.as file package samples

    {public class SampleCode {}}// CodeFormatter.as file package samples{class CodeFormatter {}}

    A classe SampleCode visvel fora do pacote porque declarada como umaclasse public. A classe CodeFormatter, porm, visvel somente dentro do prpriopacote de amostras. Se voc tentar acessar a classe CodeFormatter fora do pacote deamostras, ir gerar um erro, como mostra o exemplo a seguir:

    import samples.SampleCode;import samples.CodeFormatter;var mySample:SampleCode = new SampleCode(); // okay, public class varmyFormatter:CodeFormatter = new CodeFormatter(); // error

  • 8/14/2019 Manual 0142 Action Script.pdf

    39/78

  • 8/14/2019 Manual 0142 Action Script.pdf

    40/78

    40

    Action Script

    Se voc est familiarizado com espaos para nomes XML, boa parte destadiscusso no ser novidade, embora a sintaxe e os detalhes da implementao doActionScript sejam ligeiramente diferentes do XML. Se nunca trabalhou com espaospara nomes antes, o conceito em si simples, mas a implementao tem umaterminologia especfica que voc dever aprender.

    Para entender como os espaos para nomes funcionam, bom saber que onome de uma propriedade ou mtodo sempre contm duas partes: um identificador eum espao para nomes. O identificador o que normalmente entendemos como umnome. Por exemplo, os identificadores na seguinte definio de classe sosampleGreeting e sampleFunction():

    class SampleCode{var sampleGreeting:String;function sampleFunction () {trace(sampleGreeting + " from sampleFunction()");}}

    Sempre que as definies no forem precedidas por um atributo de espaopara nomes, seus nomes sero qualificados pelo espao para nomes internal padro, oque significa que ficam visveis apenas para os chamadores no mesmo pacote. Se ocompilador estiver definido no modo estrito, o compilador emitir um aviso de que oespao para nomes internal se aplica a qualquer identificador sem um atributo deespao para nomes. Para garantir que um identificador fique disponvel em todo lugar, necessrio que seu nome especificamente seja precedido pelo atributo public. Nocdigo anterior, sampleGreeting e sampleFunction() tm um valor de espao paranomes internal.

    H trs etapas bsicas que devem ser seguidas ao usar espaos para nomes:Primeiro, defina o espao para nomes usando a palavra-chave namespace. Porexemplo, o cdigo a seguir define o espao para nomes version1:

    namespace version1;

    Em segundo lugar, voc deve aplicar o espao para nomes usando-o no lugar deum especificador de controlo de acesso em uma declarao de propriedade oumtodo. O exemplo a seguir coloca uma funo chamada myFunction() no espao para

    nomes version1:version1 function myFunction() {}

  • 8/14/2019 Manual 0142 Action Script.pdf

    41/78

    41

    Action Script

    Por ltimo, depois de aplicar o espao para nomes, voc pode fazer refernciaa ele com a diretiva use ou qualificando o nome de um identificador com um espaopara nomes. O exemplo a seguir faz referncia funo myFunction() por meio dadiretiva use:

    use namespace version1;myFunction();

    Tambm possvel usar um nome qualificado para fazer referncia funomyFunction(), como mostra o exemplo