Aprendendo ActionScript 2.

0 no Flash

Marcas comerciais 1 Step RoboPDF, ActiveEdit, ActiveTest, Authorware, Blue Sky Software, Blue Sky, Breeze, Breezo, Captivate, Central, ColdFusion, Contribute, Database Explorer, Director, Dreamweaver, Fireworks, Flash, FlashCast, FlashHelp, Flash Lite, FlashPaper, Flash Video Encoder, Flex, Flex Builder, Fontographer, FreeHand, Generator, HomeSite, JRun, MacRecorder, Macromedia, MXML, RoboEngine, RoboHelp, RoboInfo, RoboPDF, Roundtrip, Roundtrip HTML, Shockwave, SoundEdit, Studio MX, UltraDev e WebHelp são marcas comerciais registradas ou marcas comerciais da Macromedia, Inc. e podem estar registradas nos Estados Unidos ou em outras jurisdições, inclusive internacionais. Outros nomes de produtos, logotipos, designs, títulos, palavras ou frases mencionados nesta publicação podem ser marcas comerciais, marcas de serviço ou nomes comerciais da Macromedia, Inc. ou de outras entidades e podem estar registrados em certas jurisdições, inclusive internacionais. Informações de terceiros Este guia contém links para sites da Web de terceiros que não estão sob o controle da Macromedia. Nesses casos, a Macromedia não é responsável pelo conteúdo de nenhum site vinculado. Se acessar um dos sites da Web de terceiros mencionados neste guia, você estará assumindo os riscos inerentes. A Macromedia oferece esses links apenas como uma conveniência, e a inclusão de um link não significa que a Macromedia apóia ou aceita qualquer responsabilidade pelo conteúdo apresentado nos sites de terceiros. Tecnologia de compactação e descompactação de voz licenciada da Nellymoser, Inc. (www.nellymoser.com). Tecnologia Sorenson™ Spark™ de compactação e descompactação de vídeo licenciada da Sorenson Media, Inc. Navegador Opera ® Copyright © 1995-2002 Opera Software ASA e seus fornecedores. Todos os direitos reservados. O vídeo Macromedia Flash 8 possui tecnologia de vídeo On2 TrueMotion. © 1992-2005 On2 Technologies, Inc. Todos os direitos reservados. http://www.on2.com. Visual SourceSafe é uma marca comercial ou comercial registrada da Microsoft Corporation nos Estados Unidos e/ou em outros países. Copyright © 2005 Macromedia, Inc. Todos os direitos reservados. Este manual não pode ser copiado, fotocopiado, reproduzido, traduzido ou convertido em nenhum formato eletrônico ou que possa ser lido por máquina, por inteiro ou em parte, sem o consentimento prévio por escrito da Macromedia, Inc. Não obstante o precedente, o proprietário ou usuário autorizado de uma cópia válida do software com que este manual foi fornecido pode imprimir uma cópia deste manual a partir de uma versão eletrônica com a finalidade única de ele próprio ou um usuário autorizado aprender a usar este software, desde que nenhuma parte deste manual seja impressa, reproduzida, distribuída, revendida ou transmitida para qualquer outro fim, incluindo, sem limitação, fins comerciais, como vendas de cópias desta documentação ou fornecimento de serviços de suporte pré-pagos. Agradecimentos Gerenciamento de projetos: Sheila McGinn Criação do texto: Jen deHaan; Peter deHaan, Joey Lott Editora geral: Rosana Francescato Editora chefe: Lisa Stanziano Edição: Linda Adler, Geta Carlson, Evelyn Eldridge, John Hammett, Mary Kraemer, Noreen Maher, Jessie Wood, Anne Szabla Gerenciamento de produção: Patrice O’Neill, Kristin Conradi, Yuko Yagi Projeto de mídia e produção: Adam Barnett, Aaron Begley, Paul Benkman. John Francis, Geeta Karmarkar, Masayo Noda, Paul Rangel, Arena Reed, Mario Reynoso Agradecimentos especiais a Jody Bleyle, Mary Burger, Lisa Friendly, Stephanie Gowin, Bonnie Loo, Mary Ann Walsh, Erick Vera, aos testadores beta e a toda a equipe de engenharia e controle de qualidade do Flash e do Flash Player. Primeira edição: Setembro de 2005 Macromedia, Inc. 601 Townsend St. San Francisco, CA 94103

Conteúdo

Introdução. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Público-alvo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Requisitos de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Atualizando arquivos XML para Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Sobre a documentação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Recursos adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Capítulo 1: Novidades do ActionScript no Flash 8 . . . . . . . . . . . . 19 Novidades do ActionScript 2.0 e do Flash 8 . . . . . . . . . . . . . . . . . . . . . . 19 Alterações no modelo de segurança para arquivos SWF instalados localmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Capítulo 2: Escrevendo e editando o ActionScript 2.0 . . . . . . . . 31 Sobre o ActionScript e eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Organizando o código ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Usando o painel Actions e a janela Script. . . . . . . . . . . . . . . . . . . . . . . . 36 Sobre o painel Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Sobre a janela Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Sobre a codificação no painel Actions e na janela Script . . . . . . . . . . 39 Sobre recursos do painel Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Sobre comportamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Sobre as configurações de publicação do ActionScript . . . . . . . . . . . 66 Capítulo 3: Sobre o ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . 71 O que é ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 Sobre a opção entre o ActionScript 1.0 e o ActionScript 2.0 . . . . . . .73 Noções básicas do ActionScript e do Flash Player . . . . . . . . . . . . . . . .74

3

Capítulo 4: Dados e tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . 75 Sobre dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Sobre tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Sobre variáveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Organizando dados em objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 Sobre a conversão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 Capítulo 5: Fundamentos da sintaxe e da linguagem . . . . . . . . 119 Sobre sintaxe, instruções e expressões . . . . . . . . . . . . . . . . . . . . . . . . . 120 Sobre sintaxe de ponto e caminhos de destino . . . . . . . . . . . . . . . . . . 124 Sobre pontuadores de linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Sobre constantes e palavras-chave . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Sobre instruções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Sobre arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Sobre operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Capítulo 6: Funções e métodos . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Sobre funções e métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Noções básicas sobre métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235 Capítulo 7: Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Sobre a programação orientada a objeto e o Flash . . . . . . . . . . . . . 240 Criando arquivos de classes personalizados. . . . . . . . . . . . . . . . . . . . 249 Sobre como trabalhar com classes personalizadas em um aplicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252 Exemplo: Criando classes personalizadas. . . . . . . . . . . . . . . . . . . . . . . 278 Exemplo: Usando arquivos de classes personalizados no Flash . . . 291 Atribuindo uma classe a símbolos no Flash. . . . . . . . . . . . . . . . . . . . . 295 Compilando e exportando classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296 Noções básicas sobre classes e escopo . . . . . . . . . . . . . . . . . . . . . . . 299 Sobre classes de nível superior e internas . . . . . . . . . . . . . . . . . . . . . . 302 Sobre como trabalhar com classes internas . . . . . . . . . . . . . . . . . . . . . 312 Capítulo 8: Herança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Sobre herança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Sobre a criação de subclasses no Flash . . . . . . . . . . . . . . . . . . . . . . . . 321 Usando o polimorfismo em um aplicativo . . . . . . . . . . . . . . . . . . . . . . . 327

4

Conteúdo

Capítulo 9: Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Sobre interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331 Criando interfaces como tipos de dados. . . . . . . . . . . . . . . . . . . . . . . . 337 Noções básicas sobre herança e interfaces . . . . . . . . . . . . . . . . . . . . . 339 Exemplo: Usando interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Exemplo: Criando uma interface complexa . . . . . . . . . . . . . . . . . . . . . 342 Capítulo 10: Manipulando eventos . . . . . . . . . . . . . . . . . . . . . . . 347 Usando métodos manipuladores de eventos . . . . . . . . . . . . . . . . . . . . 348 Usando ouvintes de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351 Usando ouvintes de eventos com componentes . . . . . . . . . . . . . . . . 353 Usando manipuladores de eventos de botão e de clipe de filme. . . 355 Transmitindo eventos de instâncias de componentes . . . . . . . . . . . . 360 Criando clipes de filme com estados de botão . . . . . . . . . . . . . . . . . . .361 Escopo do manipulador de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Escopo da palavra-chave this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 Usando a classe Delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Capítulo 11: Trabalhando com clipes de filme . . . . . . . . . . . . . . 369 Sobre o controle de clipes de filme com o ActionScript . . . . . . . . . . 370 Chamando vários métodos em um único clipe de filme. . . . . . . . . . . 372 Carregando e descarregando arquivos SWF . . . . . . . . . . . . . . . . . . . 373 Alterando a posição e a aparência de um clipe de filme . . . . . . . . . . 376 Arrastando clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Criando clipes de filme durante a execução . . . . . . . . . . . . . . . . . . . . . 378 Adicionando parâmetros aos clipes de filme criados dinamicamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Gerenciando profundidades do clipe de filme . . . . . . . . . . . . . . . . . . . 385 Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 Usando clipes de filme como máscaras . . . . . . . . . . . . . . . . . . . . . . . . 397 Manipulando eventos de clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . 399 Atribuindo uma classe a um símbolo de clipe de filme . . . . . . . . . . . . 399 Inicializando as propriedades de classe . . . . . . . . . . . . . . . . . . . . . . . . .401 Capítulo 12: Trabalhando com texto e seqüências de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Sobre campos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Sobre o carregamento de texto e variáveis em campos de texto . . .415 Usando fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Sobre a renderização de fontes e texto sem serrilhado. . . . . . . . . . . 430

Conteúdo

5

Sobre o layout e a formatação de texto . . . . . . . . . . . . . . . . . . . . . . . . 439 Formatando texto com estilos CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . .447 Usando texto em formato HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Exemplo: Criando texto de rolagem . . . . . . . . . . . . . . . . . . . . . . . . . . . .475 Sobre seqüências de caracteres e a classe String. . . . . . . . . . . . . . . . 477 Capítulo 13: Animação, filtros e desenhos . . . . . . . . . . . . . . . . . 497 Scripts de animação com o ActionScript 2.0 . . . . . . . . . . . . . . . . . . 498 Sobre cache de bitmap, rolagem e desempenho . . . . . . . . . . . . . . . 508 Sobre as classes Tween e TransitionManager . . . . . . . . . . . . . . . . . 509 Usando efeitos de filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .526 Trabalhando com filtros usando ActionScript . . . . . . . . . . . . . . . . . . .534 Manipulando efeitos de filtro com código . . . . . . . . . . . . . . . . . . . . . . .557 Criando bitmaps com a classe BitmapData . . . . . . . . . . . . . . . . . . . . . 561 Modos de mistura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .564 Sobre a ordem de operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 Desenhando com o ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 Noções básicas sobre dimensionamento e guias de trecho . . . . . . .583 Capítulo 14: Criando interação com o ActionScript . . . . . . . . . 589 Sobre eventos e interação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 Controlando a reprodução de arquivos SWF . . . . . . . . . . . . . . . . . . . 590 Criando interatividade e efeitos visuais. . . . . . . . . . . . . . . . . . . . . . . . . 593 Criando vinculações de dados durante a execução com o ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .607 Desconstruindo um script de exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . 616 Capítulo 15: Trabalhando com imagens, som e vídeo . . . . . . . . 619 Sobre o carregamento e o trabalho com mídia externa . . . . . . . . . . 620 Carregando arquivos SWF e de imagem externos . . . . . . . . . . . . . . . 621 Sobre o carregamento e o uso de arquivos MP3 externos . . . . . . . .626 Atribuindo vinculação a recursos da biblioteca. . . . . . . . . . . . . . . . . . . 631 Sobre o uso de vídeo FLV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .632 Sobre a criação de animações do progresso para arquivos de mídia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .654

6

Conteúdo

Capítulo 16: Trabalhando com dados externos . . . . . . . . . . . . . 663 Enviando e carregando variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 Usando HTTP para conectar a scripts do servidor . . . . . . . . . . . . . . . 668 Sobre upload e download de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . 674 Sobre XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 Enviando mensagens para o Flash Player e a partir deste . . . . . . . . 692 Sobre a API External . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 Capítulo 17: Noções básicas de segurança . . . . . . . . . . . . . . . . 707 Sobre compatibilidade com os modelos de segurança anteriores do Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 Sobre segurança do arquivo local e o Flash Player . . . . . . . . . . . . . . 709 Sobre domínios, segurança entre domínios e arquivos SWF . . . . . 727 Arquivos de diretivas de servidor para autorizar o acesso a dados. 736 Acesso de protocolo HTTP para HTTPS entre arquivos SWF . . . . . 741 Capítulo 18: Depurando aplicativos . . . . . . . . . . . . . . . . . . . . . . 745 Depurando scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 Usando o painel Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 Capítulo 19: Melhores práticas e convenções de codificação para ActionScript 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .767 Convenções de atribuição de nome . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usando de comentários no código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Convenções de codificação do ActionScript . . . . . . . . . . . . . . . . . . . . Otimização do ActionScript e do Flash Player . . . . . . . . . . . . . . . . . . Formatando a sintaxe do ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . 769 779 782 798 799

Apêndice A: Mensagens de erro . . . . . . . . . . . . . . . . . . . . . . . . . 809 Apêndice B: Operadores Flash 4 obsoletos . . . . . . . . . . . . . . . . 815 Apêndice C: Teclas do teclado e valores de códigos de teclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 Apêndice D: Criando scripts para versões anteriores do Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 Sobre a especificação de versões anteriores do Flash Player . . . . 825 Usando o Flash 8 para criar conteúdo para o Flash Player 4 . . . . . 826

Conteúdo

7

Apêndice E: Programação orientada a objeto com o ActionScript 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 Sobre o ActionScript 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 Criando um objeto personalizado no ActionScript 1.0 . . . . . . . . . . . . 831 Atribuindo métodos a um objeto personalizado no ActionScript 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832 Definindo métodos manipuladores de eventos no ActionScript 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .834 Criando herança no ActionScript 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . .836 Adicionando propriedades getter/setter a objetos no ActionScript 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 Usando as propriedades do objeto Function no ActionScript 1.0 . .838 Apêndice F: Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851

8

Conteúdo

Introdução
O Macromedia Flash Basic 8 e o Macromedia Flash Professional 8 são as ferramentas de criação padrão profissionais para a produção de experiências de grande impacto na Web. O ActionScript é a linguagem utilizada para adicionar interatividade aos aplicativos Flash, sejam os aplicativos arquivos SWF animados simples ou aplicativos de Internet avançados mais complexos. Para usar o Flash, não é necessário o ActionScript, mas, se você desejar fornecer interatividade básica ou complexa com o usuário, trabalhar com objetos diferentes daqueles contidos no Flash (como botões e clipes de filme) ou então transformar um arquivo SWF em uma experiência de usuário mais eficiente, deverá usar o ActionScript. Para obter mais informações, consulte os tópicos a seguir:
Público-alvo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Atualizando arquivos XML para Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Requisitos de sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Sobre a documentação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Recursos adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Público-alvo
Este manual pressupõe que você já tenha instalado o Flash Basic 8 ou o Flash Professional 8 e saiba como usar a interface de usuário.É preciso que saiba posicionar objetos no Stage e manipulá-los no ambiente de criação do Flash. Se já tiver usado uma linguagem de criação, o ActionScript lhe parecerá familiar. No entanto, se for iniciante em programação, saiba que os fundamentos do ActionScript são fáceis de aprender. Você pode começar com comandos simples e criar mais complexidade com o tempo. Pode adicionar muita interatividade aos seus arquivos sem precisar aprender (ou escrever) muito código.

Requisitos de sistema
O ActionScript 2.0 não tem qualquer requisito de sistema além do Flash 8 .

9

Este manual pressupõe que você esteja utilizando as configurações de publicação padrão para os arquivos do Flash: Flash Player 8 e ActionScript 2.0. Se você alterar qualquer uma dessas configurações, as explicações e exemplos de código apresentados na documentação poderão não funcionar corretamente. Caso desenvolva aplicativos para versões anteriores do Flash Player, consulte o Apêndice D, “Criando scripts para versões anteriores do Flash Player”, na página 825.

Atualizando arquivos XML para Flash
É importante que estejam sempre instalados os arquivos XML para Flash mais recentes. A Macromedia algumas vezes apresenta recursos em versões com ponto (versões menores) do Flash Player. Quando uma versão dessas se encontrar disponível, atualize sua versão do Flash para obter os arquivos XML mais recentes. Caso contrário, o compilador do Flash 8 poderá gerar erros caso você use novas propriedades ou métodos indisponíveis na versão do Flash Player que veio com a instalação do Flash. Por exemplo, o Flash Player 7 (7.0.19.0) continha um novo método para o objeto System , System.security.loadPolicyFile. Para acessar esse método, use o instalador Player Updater (Atualizador de player) para atualizar todos os players instalados com o Flash. Caso contrário, o compilador do Flash exibirá erros. Lembre-se de que é possível instalar um Player Updater que seja de uma ou mais versões maiores mais recentes que a sua do Flash. Fazendo isso, obterá os arquivos XML necessários, mas não deverá receber mensagens de erro do compilador quando publicar versões mais antigas do Flash Player. Algumas vezes, novos métodos ou propriedades encontram-se disponíveis para versões mais antigas, e ter os arquivos XML mais recentes minimiza os erros de compilação quando você tenta acessar métodos ou propriedades mais antigos.

Sobre a documentação
Este manual oferece uma visão geral da sintaxe do ActionScript e informações sobre como usálo quando trabalhar com diferentes tipos de objetos. Para obter detalhes sobre a sintaxe e o uso de cada elemento da linguagem, consulte o ActionScript 2.0 Language Reference. Para obter mais informações, consulte os seguintes tópicos:
■ ■ ■ ■

“Visão geral do manual Aprendendo ActionScript 2.0” na página 11 “Sobre os arquivos de exemplo” na página 15 “Termos usados neste documento” na página 13 “Copiar e colar código” na página 13

10

Introdução

Visão geral do manual Aprendendo ActionScript 2.0
A lista a seguir resume o conteúdo deste manual:

O Capítulo 1, “Novidades do ActionScript no Flash 8,” descreve recursos que são novos no ActionScript, alterações no compilador e no depurador e o novo modelo de programação para a linguagem ActionScript 2.0. O Capítulo 2, “Escrevendo e editando o ActionScript 2.0,” descreve recursos do editor do ActionScript dentro do Flash que facilitam a escrita de código. O Capítulo 3, “Sobre o ActionScript,” descreve o que é a linguagem ActionScript e detalha como escolher qual versão utilizar. O Capítulo 4, “Dados e tipos de dados,” descreve a terminologia e os conceitos básicos sobre dados, tipos de dados e variáveis. Esses conceitos serão usados em todo o manual. O Capítulo 5, “Fundamentos da sintaxe e da linguagem,” descreve a terminologia e os conceitos básicos da linguagem ActionScript. Esses conceitos serão usados em todo o manual. O Capítulo 6, “Funções e métodos,” descreve como escrever diferentes tipos de funções e métodos e como usá-los no seu aplicativo. O Capítulo 7, “Classes,” descreve como criar classes e objetos personalizados no ActionScript. Esse capítulo também lista as classes internas do ActionScript e oferece uma visão geral de como utilizá-las para acessar recursos avançados do ActionScript. O Capítulo 8, “Herança,” descreve a herança na linguagem ActionScript e como estender classes internas ou personalizadas. O Capítulo 9, “Interfaces,” descreve como criar interfaces e trabalhar com elas no ActionScript. O Capítulo 10, “Manipulando eventos,” descreve várias formas de manipular eventos: métodos manipuladores de eventos, ouvintes de eventos e manipuladores de eventos de botão e de clipe de filme. O Capítulo 11, “Trabalhando com clipes de filme,” descreve clipes de filme e o AcionScript que você pode usar para crontrolá-los. O Capítulo 12, “Trabalhando com texto e seqüências de caracteres,” descreve os diferentes modos como você pode controlar o texto e as seqüências de caracteres no Flash e inclui informações sobre formatação de texto e o FlashType (renderização de texto avançada, como texto sem serrilhado). O Capítulo 13, “Animação, filtros e desenhos,” descreve como criar animação e imagens baseadas em código, adicionar filtros a objetos e desenhar usando o ActionScript.

Sobre a documentação

11

O Capítulo 14, “Criando interação com o ActionScript,” descreve alguns modos simples de criar aplicativos mais interativos, incluindo o controle quando os arquivos SWF são executados e a criação de ponteiros personalizados e de controles de som. O Capítulo 15, “Trabalhando com imagens, som e vídeo,” descreve como importar arquivos de mídia externos, como imagens de bitmap, arquivos MP3, arquivos Flash Video (FLV) e outros arquivos SWF, nos aplicativos Flash. Esse capítulo também oferece uma visão geral de como trabalhar com o vídeo nos aplicativos e como criar animações para o carregamento da barra de progresso. O Capítulo 16, “Trabalhando com dados externos,” descreve como processar dados de fontes externas usando scripts de servidor ou de cliente nos aplicativos. Esse capítulo descreve como integrar os dados com os aplicativos. O Capítulo 17, “Noções básicas de segurança,” explica a segurança no Flash Player, na medida em que se relaciona com o trabalho com arquivos SWF localmente no disco rígido. Esse capítulo também explica questões de segurança entre domínios e como carregar dados de servidores ou através de domínios. O Capítulo 18, “Depurando aplicativos,” descreve o depurador do ActionScript dentro do Flash, que facilita a escrita de aplicativos. O Capítulo 19, “Melhores práticas e convenções de codificação para ActionScript 2.0,” explica as melhores práticas para usar o Flash e para escrever o ActionScript. Esse capítulo também lista convenções de codificação padronizadas, como variáveis de atribuição de nome e outras convenções. O Apêndice A, “Mensagens de erro,” lista as mensagens de erro que o compilador do Flash pode gerar. O Apêndice B, “Operadores Flash 4 obsoletos,” lista todos os operadores obsoletos do Flash 4 e sua associatividade. O Apêndice C, “Teclas do teclado e valores de códigos de teclas,” lista todas as teclas de um teclado padrão e os valores de códigos de teclas ASCII correspondentes usados para identificar as teclas no ActionScript. O Apêndice D, “Criando scripts para versões anteriores do Flash Player,” fornece diretrizes para ajudá-lo a criar scripts sintaticamente corretos para a versão do Flash Player desejada. O Apêndice E, “Programação orientada a objeto com o ActionScript 1.0,” fornece informações sobre o uso do modelo de objeto ActionScript 1.0 para escrver scripts. O Apêndice F, “Terminologia,” lista a terminologia comumente usada ao trabalhar com a linguagem ActionScript e fornece descrições para os termos.

Este manual explica como usar a linguagem ActionScript. Para obter informações sobre os elementos de linguagem propriamente ditos, consulte o ActionScript 2.0 Language Reference.

12

Introdução

Convenções tipográficas
Este manual usa as seguintes convenções tipográficas:
■ ■

Fonte Code indica

código do ActionScript.

Fonte Code negrito, normalmente em um procedimento, indica código que você precisa modificar ou adicionar a um código já adicionado ao arquivo FLA. Em alguns casos, pode ser usado para realçar o código a ser observado.

Texto em negrito indica dados que você precisa digitar na interface de usuário, como nome de arquivo ou nome de instância. Texto em itálico indica um novo termo definido no texto que se segue. Em um caminho de arquivo, pode indicar um valor que deve ser substituído (por exemplo, por um nome de diretório no seu próprio disco rígido).

Termos usados neste documento
Os seguintes termos são usados neste manual:
■ ■ ■

Você refere-se ao desenvolvedor que escreve um script ou aplicativo. O usuário refere-se à pessoa que executará os scripts e aplicativos. Tempo de compilação é o momento em que você publica, exporta, testa ou depura o documento. Tempo de execução é o momento em que o script é executado no Flash Player.

Termos do ActionScript como método e objeto são definidos no Apêndice F, “Terminologia”, na página 841.

Copiar e colar código
Quando você colar o ActionScript do painel Help (Ajuda) para o FLA ou o arquivo do ActionScript, preste atenção aos caracteres especiais. São caracteres especiais as aspas especiais (também chamadas de aspas curvas ou aspas inglesas). Esses caracteres não são interpretados pelo editor do ActionScript, então o código lança um erro quando você tenta compilá-lo no Flash.

Sobre a documentação

13

Você pode identificar se os caracteres de aspas são especiais quando eles não são codificados por cores de forma correta. Ou seja, se nenhuma seqüência de caracteres mudar de cor no editor de cores, será preciso substituir os caracteres especiais por caracteres de aspas retas comuns. Se você digitar um caractere de aspa simples ou dupla diretamente no editor do ActionScript, sempre digitará um caractere de aspa reta. O compilador (quando você testa ou publica um arquivo SWF) lança um erro e permite que você saiba que há um tipo errado (marcas de aspas especiais ou curvas) de caracteres no seu código.
N OT A
■ ■ ■ ■ ■

Você também pode encontrar aspas especiais se colar o ActionScript de outros locais, como de uma página da Web ou um documento do Microsoft Word.

Cuidado com quebras de linha ao copiar e colar código. Ao colar o seu código de alguns locais, a linha de código poderá se quebrar em um local inapropriado. Certifique-se de que a codificação de cores da sua sintaxe esteja correta no editor do ActionScript se achar que as quebras de linha representam um problema. Compare o código do painel Actions (Ações) com o do painel Help para ver se correspondem. Procure ativar o Word Wrap (quebra automática de linha) no editor do ActionScript para ajudar a solucionar quebras de linha excedentes no código (selecione View (Exibir) > Word Wrap (quebra automática de linha) na janela Script ou Word Wrap no menu pop-up do painel Actions.)

Recursos adicionais
Além deste manual sobre o ActionScript, existem outros sobre outros tópicos do Flash, como componentes e o Macromedia Flash Lite. Você pode acessar cada manual no painel Help (Help > Flash Help (Ajuda do Flash)), exibindo o sumário padrão. Clique no botão Clear (Limpar) para ver os manuais disponíveis; para obter mais informações, consulte “Onde encontrar documentação sobre outros assuntos” na página 17. Para obter mais informações sobre outros recursos disponíveis, consulte os seguintes tópicos: “Sobre os arquivos de exemplo” na página 15 “Onde encontrar arquivos PDF ou documentação impressa” na página 15 “Sobre o LiveDocs” na página 16 “Recursos on-line adicionais” na página 17 “Onde encontrar documentação sobre outros assuntos” na página 17

14

Introdução

Sobre os arquivos de exemplo
Há vários arquivos de exemplo baseados no ActionScript que são instalados com o Flash. Esses arquivos de exemplo mostram como o código funciona em um arquivo FLA; geralmente servem como uma ferramenta de aprendizado bem útil. Os capítulos deste manual muitas vezes fazem referência a esses arquivos, mas recomendamos que você consulte também a pasta de arquivos de exemplo do seu disco rígido. Os arquivos de exemplo incluem arquivos FLA de aplicativo que usam funções comuns do Flash instaladas com ele. Esses aplicativos foram projetados para apresentar aos novos desenvolvedores do Flash as capacidades dos aplicativos Flash assim como para mostrar aos desenvolvedores avançados como funcionam os recursos do Flash no contexto. Você pode encontrar os arquivos de origem de exemplo com foco no ActionScript na pasta Samples (Exemplos) do disco rígido.

No Windows, navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\. No Macintosh, navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/.

Você verá como são úteis os seguintes arquivos de exemplo com foco em componentes, pois eles contêm vários códigos ActionScript. Eles também podem ser encontrados na pasta Samples do disco rígido:

No Windows, navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\Components\. No Macintosh, navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/Components/.

Você também pode encontrar arquivos de exemplo adicionais para download na Internet. A página da Web a seguir contém links e descrições de arquivos de exemplo adicionais: www.macromedia.com/go/flash_samples/.

Onde encontrar arquivos PDF ou documentação impressa
Caso prefira ler a documentação em formato impresso, as versões PDF de cada manual encontram-se disponíveis para download. Vá até www.macromedia.com/support/ documentation/ e selecione o produto em que está interessado. Você pode exibir ou fazer o download do PDF ou acessar o link da versão LiveDocs do manual.

Recursos adicionais

15

Muitas vezes você também pode adquirir a documentação impressa. Para obter informações atualizadas, vá até o site de suporte da documentação e selecione Flash Basic 8 ou Flash Professional 8.

Sobre o LiveDocs
Você pode acessar a documentação no site LiveDocs ou pelo painel Help. O site LiveDocs contém todas as páginas de ajuda do Flash e pode conter comentários que esclareçam, atualizem ou corrijam partes da documentação. Clique em View Comments (Exibir comentários) em LiveDocs na parte inferior de uma página do painel Help para exibir a página equivalente no site LiveDocs. Vá até http://livedocs.macromedia.com para ver uma lista de toda a documentação disponível no formato LiveDocs. Escritores técnicos monitoram o site LiveDocs. Uma das vantagens do LiveDocs é ver comentários que esclarecem a documentação ou corrigir erros ou problemas que surgem após o lançamento de um software. Não é no LiveDocs que você faz solicitações de ajuda, como perguntas sobre seu código que não funciona, comentários sobre problemas com software ou instalação ou perguntas sobre como criar algo com o Flash. Nele você fornece informações sobre a documentação (por exemplo, você aponta uma frase ou parágrafo que requer esclarecimento). Quando você clica no botão para adicionar um comentário sobre o LiveDocs, há diversos pontos sobre os tipos de comentários que são aceitáveis no sistema. Leia essas diretrizes atentamente para que seu comentário não seja removido do site. Se tiver alguma dúvida sobr eo Flash, faça sua pergunta nos fóruns da Web da Macromedia: www.macromedia.com/support/forums/. Os fóruns da Web são o melhor local para fazer perguntas, pois há vários funcionários da Macromedia lá, voluntários da equipe Macromedia, gerentes e membros de grupos de usuário da Macromedia e até escritores técnicos que monitoram esses fóruns. Engenheiros não monitoram o sistema LiveDocs, mas a lista de tarefas do Flash. Se achar que encontrou um erro (bug) no software ou se quiser solicitar um aprimoramento para o Flash, preencha o formulário em www.macromedia.com/go/wish. Se você relatar o bug ou a solicitação de aprimoramento no LiveDocs, eles não serão adicionados de forma oficial ao banco de dados de bugs. Use o formulário apropriado se quiser que um engenheiro dê atenção ao bug reportado ou à sua solicitação. Lembre-se de dar atenção aos caracteres especiais e às quebras de linha quando colar da Web, incluindo do LiveDocs. A Macromedia vem se esforçando para remover todos os caracteres especiais dos exemplos de código, mas, se você tiver dificuldades para colar o código, consulte “Copiar e colar código” na página 13.

16

Introdução

Recursos on-line adicionais
Existem vários recursos on-line que oferecem várias instruções, ajuda e orientação para facilitar o uso do Macromedia Flash 8. Consulte com freqüência os seguintes sites para obter atualizações: O site The Macromedia Developer Center (www.macromedia.com/devnet) é atualizado regularmente com as informações mais recentes sobre o Flash, além de oferecer aconselhamentos de usuários experientes, tópicos avançados, exemplos, dicas, tutoriais (incluindo tutoriais com várias partes) e outras atualizações. Visite com freqüência o site da Web para saber das últimas novidades sobre o Flash e como obter o máximo do programa. O site The Macromedia Flash Support Center (www.macromedia.com/support/flash) fornece TechNotes (Notas Técnicas), atualizações de documentação e links para recursos adicionais na comunidade Flash. O site The Macromedia Weblogs (http://weblogs.macromedia.com) fornece uma lista dos weblogs (também chamados de blogs) de funcionários e da comunidade Macromedia .
Os fóruns da Web da Macromedia (http://webforums.macromedia.com) oferecem vários fóruns para perguntas específicas sobre o Flash, seus aplicativos ou a linguagem ActionScript. Os fóruns são monitorados por voluntários da equipe Macromedia e muitas vezes são visitados por funcionários de lá também. Se não souber a quem recorrer ou como resolver um problema, comece por um fórum do Flash.

O site The Macromedia Community (www.macromedia.com/community) hospeda regularmente Macrochats, uma série de apresentações ao vivo sobre uma variedade de tópicos feitas por funcionários ou membros da comunidade Macromedia. Consulte regulamente o site à procura de atualizações e para registrar-se nos Macrochats.

Onde encontrar documentação sobre outros assuntos
Os manuais a seguir oferecem informações adicionais sobre assuntos comumente associados ao ActionScript 2.0:

Para obter informações sobre os elementos que compõem a linguagem ActionScript, consulte o ActionScript 2.0 Language Reference. Para obter informações sobre como trabalhar no ambiente de criação do Flash, consulte o How to Use Help (Como usar a Ajuda). Para obter informações sobre como trabalhar com componentes, consulte o Using Components (Usando componentes).

Recursos adicionais

17

18 Introdução .

objetos. Para obter uma lista de adições específicas ao ActionScript 2. analisados neste capítulo. . . métodos e outros elementos foram adicionados à linguagem. . Existem também aprimoramentos do ActionScript relacionados aos ambientes de criação do Flash 8. . . incluem novos elementos de linguagem (consulte “Acréscimos à linguagem ActionScript” na página 22). .0 e do Flash 8 A linguagem ActionScript cresceu e desenvolveu-se desde sua introdução. . Esta seção fornece uma visão geral dos elementos e classes da linguagem ActionScript que são novos ou foram alterados no Flash 8 e aprimoramentos do ActionScript relacionados à ferramenta de criação. . 19 Alterações no modelo de segurança para arquivos SWF instalados localmente . tenha em mente o Flash Player 8 (o padrão) quando publicar seus documentos. alterações no modelo de segurança e outros aprimoramentos do ActionScript relacionados à ferramenta de criação. consulte os seguintes tópicos: Novidades do ActionScript 2.0 e do Flash 8 . .0. . . Os novos recursos. há vários anos. além do desenvolvimento de aplicativos. Para usar qualquer dos novos elementos da linguagem nos seus scripts. ferramentas de edição aprimoradas (consulte “Alterações de edição do ActionScript” na página 28). mais palavras-chave. 19 . . . . . . . . como integração do JavaScript (ExternalInterface) e entrada e saída de arquivo (FileReference e FileReferenceList). . . . . . O Flash Basic 8 e o Flash Professional 8 introduzem vários novos elementos de linguagem para recursos expressivos. . Para obter mais informações. 29 1 Novidades do ActionScript 2. . . consulte “Acréscimos à linguagem ActionScript” na página 22. . . . .CAPÍTULO 1 Novidades do ActionScript no Flash 8 O Macromedia Flash Basic 8 e o Macromedia Flash Professional 8 oferecem vários aprimoramentos que facilitam a criação de scripts mais eficientes com uso da linguagem ActionScript. . como filtros e modos de mistura. . Com cada nova versão do Flash.

Você pode usar o ActionScript para acessar essa propriedade. consulte “Sobre cache de bitmap. É possível definir uma preferência para recarregar arquivos de script modificados ao trabalhar em um aplicativo. o que inclui imagens JPEG progressivas e arquivos GIF e PNG não-animados. consulte “Arquivos de configuração instalados com o Flash 8” na página 69. consulte “Exibindo caracteres ocultos” na página 57. assim como no painel Actions. É possível carregar novos tipos de arquivos de imagem durante a execução. Para obter mais informações. semelhante ao Normal Mode (Modo Normal) em edições anteriores do Flash.Os recursos a seguir foram adicionados ao Flash Basic 8 e ao Flash Professional 8 (a menos que explicitado de forma diferente): ■ Os aprimoramentos do editor do ActionScript permitem a exibição de caracteres ocultos nos scripts. O cache de bitmap permite o aumento do desempenho dos aplicativos durante a execução por meio do cache de uma representação de bitmap de suas instâncias. O recurso da janela Script encontra-se disponível no Flash Basic 8 e no Flash Professional 8. ■ ■ ■ ■ ■ ■ ■ ■ 20 Novidades do ActionScript no Flash 8 . para arquivos do ActionScript. o primeiro quadro da animação será exibido. O Script Assist (Assistência de script). Para obter mais informações. Isso significa que você pode criar um arquivo do ActionScript nos dois programas. consulte “Sobre o Script Assist” na página 62. Para obter mais informações. O diretório Configuration que inclui arquivos XML e arquivos de classes está reorganizado. ajuda você a codificar sem que precise ter noções de sintaxe. Para obter detalhes. É possível atribuir identificadores de vinculação a arquivos de bitmap e de som armazenados na biblioteca (Library). o que ajuda a evitar o trabalho com versões mais antigas de arquivos de script e a substituição de arquivos de script mais novos. As opções de depuração agora encontram-se disponíveis na janela Script. o que significa que você pode anexar imagens ao Stage ou trabalhar com esses recursos em bibliotecas compartilhadas. Para obter mais informações sobre o Script Assist. Se você carregar um arquivo animado. consulte “Sobre as preferências do ActionScript” na página 44. rolagem e desempenho” na página 508.

O fluxo de trabalho para a criação de aplicativos acessíveis está aprimorado. Você pode usar o código ActionScript para aplicar muitos filtros a objetos no Stage (como instâncias de clipe de filme). O painel Strings (Seqüências de caracteres) está aprimorado e agora inclui suporte multilinha no campo String e um arquivo de linguagem XML. você pode usar a API Drawing (API de desenho) para controlar o estilo de linhas dos traços desenhados.tabIndex property) em ActionScript 2. Você pode usar o código ActionScript para acessar esse recurso no Flash Basic 8 e no Flash Professional 8 ou na ferramenta de criação do Flash 8. Para obter informações sobre novos estilos de linha. consulte “Sobre o painel Strings” na página 479. consulte “Trabalhando com dimensionamento de 9 trechos no ActionScript” na página 585. que usa um coletor incremental para melhorar o desempenho. No Flash Player 8 não há mais necessidade de os desenvolvedores adicionarem todos os objetos ao índice de tabulação para que o conteúdo seja lido corretamente por um leitor de tela. Para obter informações sobre preenchimentos de gradiente. Usando o código ActionScript.tabIndex property). consulte “Sobre segurança do arquivo local e o Flash Player” na página 709. ■ ■ ■ ■ ■ ■ ■ ■ Novidades do ActionScript 2. Para obter informações sobre segurança de arquivos locais. agora há mais segurança quando os arquivos SWF são executados no disco rígido. Agora você pode adicionar informações de metadados para os arquivos FLA na caixa de diálogo Publish Settings (Configurações de publicação). O Flash Player aumentou a segurança dos arquivos locais. consulte “Usando preenchimentos de gradiente complexos” na página 573. Para obter mais informações. Para obter informações sobre como acessar o dimensionamento em 9 trechos na ferramenta de criação.0 e do Flash 8 21 .■ O dimensionamento em 9 trechos permite o dimensionamento de instâncias de clipe de filme sem expansão dos traços que contornam o clipe de filme.0 Language Reference. Pode adicionar um nome e uma descrição ao arquivo FLA usando a caixa de diálogo para ajudar a aumentar a visibilidade da pesquisa on-line. consulte “Usando estilos de linha” na página 574.tabIndex property) e tabIndex (TextField. Um novo coletor de lixo faz parte do Flash Player. Usando o código ActionScript. consulte “Trabalhando com filtros usando ActionScript” na página 534. consulte “Sobre dimensionamento em 9 trechos e símbolos de clipe de filme” na página 91 em Usando o Flash. Para obter mais informações sobre o índice de tabulação. Para obter informações sobre filtros e o ActionScript. tabIndex (MovieClip. consulte tabIndex (Button. você poderá usar a API Drawing para criar gradientes mais complexos com os quais preencherá as formas. Para obter mais informações.

Para obter informações. A classe BitmapFilter (do pacote flash. Você pode usar o código ActionScript para acessar meios novos e avançados de aplicar e manipular cores.geom.0 no Flash 8.0 Language Reference. métodos e propriedades específicas adicionadas ao ActionScript 2. A classe BitmapData (do pacote flash.filters) permite a adição de efeitos de chanfro a objetos. ■ ■ ■ ■ Para obter uma lista de classes. Para obter mais informações. Selecione Control (Controlar) > Delete ASO files (Excluir arquivos ASO) ou Control > Delete ASO files e Test Movie (Testar filme) na ferramenta de criação. Para obter mais informações. elementos de linguagem. A classe Color é obsoleta em relação a esta classe. A classe ColorMatrixFilter (do pacote flash. Para acessar os recursos avançados de eliminação de serrilhado (FlashType).geom) permite o ajuste de valores de cores em clipes de filme. Para obter mais informações. As classes e os elementos de linguagem a seguir são novos acréscimos ao Flash Player 8 ou passaram a ter suporte recentemente nesse programa. consulte “Definindo valores de cores” na página 599 e ColorTransform (flash. A classe ColorTransform (do pacote flash. consulte “Sobre upload e download de arquivos” na página 674. use as APIs FileReference e FileReferenceList.filters) permite a aplicação de transformações a cores ARGB e valores alfa. você poderá excluir os arquivos ASO. consulte “Sobre a renderização de fontes e texto sem serrilhado” na página 430.0 Language Reference. ■ ■ ■ ■ ■ 22 Novidades do ActionScript no Flash 8 . propriedades e parâmetros nas classes TextField e TextFormat. incluindo novas opções. Quando testar o aplicativo. consulte “Usando arquivos ASO” na página 298.ColorTransform) em ActionScript 2. consulte TextField e TextFormat em ActionScript 2.display) permite a criação e a manipulação de imagens de bitmap transparentes ou opacas dimensionadas arbitrariamente. Acréscimos à linguagem ActionScript Esta seção lista acréscimos aos elementos e classes da linguagem ActionScript novos ou alterados no Flash 8. use o código ActionScript. Para obter mais informações. A classe BlurFilter permite a aplicação de embaçamentos a objetos no Flash.■ Para fazer o upload dos arquivos para um servidor. As classes a seguir foram adicionadas ao ActionScript 2. Foram feitos diversos aprimoramentos no texto. consulte “Acréscimos à linguagem ActionScript” na página 22.display) é uma classe base para efeitos de filtro.0 no Flash 8: ■ A classe BevelFilter (do pacote flash.

A classe FileReferenceList (do pacote flash. O objeto Point (do pacote flash. Novidades do ActionScript 2. como um navegador com JavaScript. A classe FileReference (do pacote flash.0 e do Flash 8 23 .geom) representa uma matriz de transformação que determina como mapear pontos de um espaço de coordenada para o outro.lang) permite o controle do modo de exibição de texto multilíngüe em um arquivo SWF. A classe DropShadowFilter (do pacote flash. A classe Locale (do pacote mx. A classe Rectangle (do pacote flash. A classe DisplacementMapFilter (do pacote flash.text) oferece funcionalidade para fontes incorporadas sem serrilhado.filters) permite a aplicação de efeitos de filtro de torção de matriz. A classe GradientGlowFilter (do pacote flash. Editor de método de entrada) do sistema operacional no Flash Player.filters) permite a adição de sombreamentos a objetos. A classe Transform (do pacote flash.filters) permite o uso de valores em pixels de um objeto BitmapData para o deslocamento de um objeto.filters) permite a adição de efeitos de brilho a objetos.geom) coleta dados sobre transformações de cores e manipulações de coordenadas aplicadas a uma instância MovieClip. ou o aplicativo desktop).■ A classe ConvolutionFilter (do pacote flash.net ) permite o upload e o download de arquivos entre o computador do usuário e um servidor. A classe ExternalInterface (do pacote flash.external) permite que você se comunique usando o ActionScript com o recipiente do Flash Player (o sistema que contém o aplicativo Flash.geom) permite a criação e a modificação de objetos Rectangle. onde x representa o eixo horizontal e y representa o eixo vertical. N O TA ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ No Flash 8 foi adicionado suporte oficial para a classe AsBroadcaster.geom) representa um local em um sistema de coordenadas bidimensional. A classe IME (da classe System) permite a manipulação do IME (Input Method Editor. A classe Matrix (do pacote flash. A classe GlowFilter (do pacote flash. A classe TextRenderer (do pacote flash.net) permite a seleção de um ou mais arquivos para upload. A classe GradientBevelFilter (do pacote flash.filters) permite a adição de efeitos de brilho gradiente a objetos.filters) permite a adição de chanfros gradientes a objetos.

O método attachBitmap() da classe MovieClip. O método beginBitmapFill() da classe MovieClip.0 Language Reference.0 Language Reference. e o bitmap pode ser repetido ou colocado lado a lado para preencher a área. ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ 24 Novidades do ActionScript no Flash 8 . regiões problemáticas que estão sendo atualizadas). A propriedade filters da classe Button. métodos e funções da linguagem adicionados a classes existentes no ActionScript incluem: ■ A função global showRedrawRegions permite que o player do depurador indique as regiões da tela que estão sendo redesenhadas (ou seja. A função faz o player mostrar o que foi redesenhado. que permite o cache do objeto como representação interna de bitmap da instância.display.BitmapData) em ActionScript 2. Para obter mais informações. O manipulador de eventos onHTTPStatus da classe LoadVars retorna o código de status retornado do servidor (por exemplo. interpolationMethod e focalPointRatio do método beginGradientFill() da classe MovieClip. que retorna o ano dessa data. que é a região retangular que define nove regiões de dimensionamento para a instância. consulte BitmapData (flash.onHTTPStatus handler) em ActionScript 2. mas não permite que você controle as regiões de redesenho. A propriedade getUTCYear da classe Date. dependendo das restrições de segurança. o valor 404 para página não encontrada). A constante ALT da classe Key. A propriedade blendMode da classe Button. que indica se o sistema possui um IME instalado. que define o modo de mistura para a instância do botão. A propriedade scale9Grid da classe Button. Os parâmetros spreadMethod. de acordo com a hora universal.capabilities. A propriedade hasIME da classe System. A propriedade cacheAsBitmap da classe Button. que anexa uma imagem de bitmap a um clipe de filme.Os novos elementos. que preenche um clipe de filme com uma imagem de bitmap. consulte onHTTPStatus (LoadVars. Esse método preenche uma área de desenho com uma imagem de bitmap. Para obter mais informações. que é um array indexado que contém cada objeto filtro associado ao botão. O método isAccessible() da classe Key retorna um valor booleano que indica se a última tecla pressionada pode ser acessada por outros arquivos SWF.

0 Language Reference.getLocal method) em ActionScript 2. A propriedade filters da classe MovieClip. capsStyle. A propriedade scrollRect da classe MovieClip. O manipulador de eventos onLoadError da classe MovieClipLoader é chamado quando um arquivo carregado com MovieClipLoader. que permite o cache do objeto como uma representação interna de bitmap da instância. que permite a definição do modo de mistura para a instância. ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Novidades do ActionScript 2. que permite configurações em relação aos limites de matriz. transformação de cores e pixels de um clipe de filme.geom. A constante ID3 da classe Sound. O parâmetro status da classe MovieClipLoader.0 Language Reference.loadClip() não pode ser carregado. consulte onLoadComplete (MovieClipLoader. consulte Transform (flash. O manipulador de eventos onLoadComplete retorna o código de status retornado do servidor (por exemplo. A propriedade transform da classe MovieClip. O parâmetro secure do método SharedObject. O método lineGradientStyle() da classe MovieClip.getLocal() determina se o acesso a esse objeto compartilhado se restringe a arquivos SWF transmitidos por uma conexão HTTPS.onLoadComplete event listener) em ActionScript 2. jointStyle e miterLimit do método lineStyle() da classe MovieClip. Para obter mais informações. Os parâmetros pixelHinting.Transform) em ActionScript 2. O método getRect() da classe MovieClip.■ A propriedade blendMode da classe MovieClip. consulte getLocal (SharedObject. que é a região retangular que define nove regiões de dimensionamento para a instância. A propriedade cacheAsBitmap da classe MovieClip. que especifica um estilo de linha gradiente que o Flash usa quando desenha um caminho. noScale. Para obter mais informações. que retorna propriedades que são os valores de coordenada mínimo e máximo da instância especificada. que é um array indexado que contém cada objeto filtro associado no momento à instância.0 Language Reference. A propriedade scale9Grid da classe MovieClip.0 e do Flash 8 25 . Para obter mais informações. que permite que você role rapidamente o conteúdo do clipe de filme e que a janela exiba um conteúdo maior. o valor 404 para página não encontrada). Esses parâmetros especificam tipos de estilos de linha que você pode usar ao desenhar linhas. A propriedade opaqueBackground da classe MovieClip. que define a cor de fundo opaca (não transparente) do clipe de filme como a cor que o valor hexadecimal RGB especifica.

consulte gridFitType (TextField. A propriedade antiAliasType da classe TextField.gridFitType property) em ActionScript 2.security indica o tipo de sandbox de segurança em que o arquivo SWF de chamada está operando. Para obter informações sobre ajuste à grade e TextField. A propriedade _name da classe Video. A propriedade indent da classe TextFormat. O método parse() da classe TextField. que permite o uso de valores negativos. A propriedade _parent da classe Video. A propriedade _height da classe Video. terá de definir o método antiAliasType() como avançado. terá de definir o método antiAliasType() como avançado. O valor justify da propriedade align da classe TextFormat. que é um array indexado que contém cada objeto filtro associado no momento à instância TextField. A propriedade sharpness da classe TextField. que o espaço entre as linhas seja inferior à altura do texto. A propriedade leading da classe TextFormat. A propriedade letterSpacing da classe TextFormat.StyleSheet. que é a quantidade especificada de transparência para o objeto vídeo. que estabelece a definição das bordas de glifo para a instância TextField. consulte sandboxType (security. que permite a justificação de um parágrafo específico. A propriedade thickness da classe TextField. Para obter mais informações.sandboxType property) em ActionScript 2. Se usar essa propriedade. A propriedade _alpha da classe Video. A propriedade kerning da classe TextFormat. A propriedade gridFitType da classe TextField.■ A propriedade sandboxType da classe System. que define a espessura das bordas de glifo na instância TextField. que indica a instância ou objeto de clipe de vídeo que contém a instância do vídeo. que define o tipo de eliminação de serrilhado utilizada na instância TextField. que indica a altura da instância do vídeo. que indica o nome de instância do vídeo. Isso permite que você coloque linhas de texto juntas nos aplicativos.0 Language Reference. que define o tipo de ajuste à grade usado na instância. que permite o uso de entrelinhamento negativo.0 Language Reference. A propriedade filters da classe TextField. Se usar essa propriedade.gridFitType. que permite a especificação da quantidade de espaço distribuída uniformemente entre os caracteres. ou seja. que permite a ativação ou desativação do kerning para o objeto TextFormat. ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ 26 Novidades do ActionScript no Flash 8 .

onHTTPStatus handler) em ActionScript 2.namespaceURI property) em ActionScript 2. que permite a definição do valor de rotação da instância do vídeo em graus. que permite a definição do percentual de dimensionamento horizontal da instância do vídeo. ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ Novidades do ActionScript 2. A propriedade _y da classe Video. que permite a definição da coordenada x da instância do vídeo. quer permite a definição da coordenada y da posição do ponteiro do mouse. o valor 404 para página não encontrada). A propriedade _xmouse da classe Video. A propriedade _ymouse da classe Video.0 Language Reference. consulte namespaceURI (XMLNode. O método getPrefixForNamespace da classe XMLNode. que permite a definição da coordenada y da instância do vídeo. Para obter mais informações. que retorna o nome completo do objeto nó XML (incluindo o prefixo e o nome local). A propriedade localName da classe XMLNode. consulte onHTTPStatus (XML. que retorna o prefixo associado a um URI de namespace especificado para o nó. que retorna o URI do namespace associado ao prefixo especificado para o nó. O método getNamespaceForPrefix() da classe XMLNode. A propriedade _width da classe Video. que lê o URI do namespace para o qual o prefixo do nó XML resolve.0 e do Flash 8 27 .0 Language Reference. que permite a definição da visibilidade de uma instância de vídeo.■ A propriedade _rotation da classe Video. A propriedade _xscale da classe Video. A propriedade _visible da classe Video. que permite a definição do percentual de dimensionamento vertical da instância do vídeo. A propriedade _x da classe Video. A propriedade prefix da classe XMLNode. que lê o prefixo do nome do nó. Para obter mais informações. que permite a definição da coordenada x da posição do ponteiro do mouse. que permite a definição da largura da instância do vídeo. A propriedade _yscale da classe Video. O manipulador de eventos onHTTPStatus da classe XML retorna o código de status retornado do servidor (por exemplo. A propriedade namespaceURI da classe XMLNode.

você pode trabalhar no modo Script Assist. Agora você pode usar o menu pop-up Options (Opções) dos painéis Script.0 Language Reference: ■ ■ ■ ■ Deprecated Class summary Deprecated Function summary Deprecated Property summary Deprecated Operator summary Alterações de edição do ActionScript O editor do ActionScript no painel Actions e na janela Script foi atualizado de várias maneiras para ficar mais eficiente e fácil de usar do que nas versões anteriores da ferramenta. Debugger (Depurador) e Output (Saída) para exibir ou ocultar caracteres quando escrever arquivos de script no painel Actions ou na janela Script. “Criando ActionScript com o Script Assist” em Usando o Flash. consulte Capítulo 13. que é semelhante ao modo normal e muito mais eficiente que ele. consulte o Capítulo 13. Essas alterações são resumidas nesta seção. você podia trabalhar no painel Actions tanto no modo normal.Sobre elementos de linguagem obsoletos Alguns elementos de linguagem estão obsoletos no Flash Player 8. No entanto. em que você preenchia opções e parâmetros para criar código. “Criando um evento startDrag/stopDrag com o Script Assist” do manual Usando o Flash. Para obter uma lista dos elementos de linguagem obsoletos e alternativas para uso no Flash Player 8. Script assist added to Actions panel (Script assist adicionado ao painel Actions) 28 Novidades do ActionScript no Flash 8 . consulte “Exibindo caracteres ocultos” na página 57. View hidden characters (Exibir caracteres ocultos) Nas versões anteriores do Flash. em que você adicionava comandos diretamente ao painel Script. Para obter informações sobre esse recurso. consulte as seções a seguir do ActionScript 2. Essas opções não estavam disponíveis no Flash MX 2004 e no Flash MX Professional 2004. quanto no modo especialista. Para obter informações sobre o modo Script Assist. Para ver um tutorial sobre o Script Assist. no Flash Basic 8 e no Flash Professional 8.

solicitando o recarregamento dos arquivos de script modificados associados ao aplicativo em que você está trabalhando. Ele ajuda a evitar o trabalho com scripts desatualizados ou que versões mais recentes de um script acabem sendo substituídas. você pode testar um aplicativo Flash que seja executado localmente e também acesse a Internet. Se um arquivo de script tiver sido movido ou excluído. A restrição de segurança afeta todo o conteúdo implantado localmente. em vez de serem executados de um servidor remoto da Web. os arquivos SWF locais podiam interagir com outros arquivos SWF e carregar dados de qualquer computador remoto ou local sem configurar definições de segurança. Usando o Flash MX 2004 ou uma ferramenta de criação anterior. Alterações no modelo de segurança para arquivos SWF instalados localmente 29 . você precisa indicar se um arquivo SWF pode se comunicar com uma rede ou com um sistema de arquivos local. Dessa forma. um arquivo SWF não pode fazer conexões com o sistema de arquivos local e a rede (como a Internet) no mesmo aplicativo sem fazer uma configuração de segurança. Nas versões anteriores do Flash Player. um arquivo SWF local é um arquivo SWF instalado localmente no computador de um usuário (e não disponibilizado a partir de um site) e não inclui arquivos de projetor (EXE). esse aplicativo agora solicita permissão ao usuário para se comunicar com a Internet.Reload modified files (Recarregar arquivos modificados) Você pode recarregar os arquivos de script modificados quando trabalhar em um aplicativo. No Flash Player 8. É exibida uma mensagem de aviso. Ao desenvolver um aplicativo Flash. seja um conteúdo herdado (um arquivo FLA criado em uma versão anterior do Flash) ou criado no Flash 8. Para obter mais informações. No Flash Player 8. Alterações no modelo de segurança para arquivos SWF instalados localmente O Flash Player 8 possui um modelo de segurança novo e aperfeiçoado por meio do qual os aplicativos Flash e os arquivos SWF de um computador local podem se comunicar com a Internet e o sistema de arquivos local. um arquivo SWF não pode ler arquivos no seu disco rígido e depois enviar o conteúdo deles pela Internet. uma mensagem de aviso será exibida e solicitará o salvamento dos arquivos conforme necessário. Esse recurso é especialmente vantajoso para equipes que trabalham simultaneamente em aplicativos. consulte “Sobre as preferências do ActionScript” na página 44. N OT A Nesta descrição. Isso é para sua segurança.

No Flash Player 7 e anteriores.Quando você testa um arquivo no disco rígido. O arquivo SWF local pode ser lido no sistema de arquivos local onde o arquivo está instalado. são necessárias várias etapas para determinar se ele é um documento local confiável (seguro) ou um documento potencialmente não-confiável (sem segurança). Access to both the local file system and the network (Acessar o sistemas de arquivos local e a rede). Para obter mais informações sobre segurança de arquivos locais. No Flash Player 8.allowInsecureDomain. O arquivo SWF local pode ser lido no sistema de arquivos local e em caminhos de rede de convenção universal de atribuição de nomes (UNC.security. os arquivos SWF locais tinham permissões para acessar o sistema de arquivos local e a rede. ■ ■ Para obter mais detalhes sobre cada nível de permissão. Há também pequenas alterações em System. Se você criar o arquivo no ambiente de criação do Flash (por exemplo. consulte “Sobre segurança do arquivo local e o Flash Player” na página 709. Universal Naming Convention) e não pode se comunicar com a Internet. seu arquivo será considerado confiável. consulte o Capítulo 17. “Noções básicas de segurança. pois ele se encontra no ambiente de teste.” 30 Novidades do ActionScript no Flash 8 .allowDomain e aprimoramentos em System. os arquivos SWF locais podem ter três níveis de permissão: ■ Access the local file system only (Acessar somente o sistema de arquivos local).security. O arquivo SWF local pode acessar somente a rede (como a Internet) e não o sistema de arquivos local onde o arquivo SWF está instalado. o nível padrão. quando selecionar Control > Test Movie). Access the network only (Acessar somente a rede). pode ser lido em qualquer servidor que lhe conceda permissão (e gravar nele) e pode criar vários scripts para outros arquivos SWF na rede ou no sistema de arquivos local que lhe conceda permissão.

Para obter mais informações sobre o editor do ActionScript. realce de sintaxe. Não é possível usar o painel Actions para criar scripts externos. Para obter mais informações sobre a janela Script. Você pode criar scripts que façam parte de seu documento do Flash (ou seja. Quando precisar criar um script externo. e o modo Script Assist (Assistência de script) que solicita os elementos necessários para a criação de scripts. O painel Actions e a janela Script contêm um editor de código completo (o editor do ActionScript) que inclui referências de código e sinalização por cores.0 Ao escrever o código ActionScript no Macromedia Flash Basic 8 ou no Macromedia Flash Professional 8. o editor do Action Script inclui recursos de assistência a código. o navegador Script que ajuda na navegação por todos os scripts do documento. 2 31 .. quebra automática de linha e suporte a Unicode em duas exibições diferentes.CAPÍTULO 2 Escrevendo e editando o ActionScript 2. O painel Actions contém o editor do ActionScript em um painel Script e ferramentas de suporte para facilitar a criação de scripts. da mesma forma que no painel Actions. use o painel Actions (Ações) ou a janela Script. consulte “Sobre o painel Actions” na página 37.) Na janela Script. consulte “Sobre o Script Assist” na página 62. Use um dos dois métodos para escrever o código ActionScript no Flash. use o editor do ActionScript na janela Script para criar um novo arquivo do ActionScript. Para obter mais informações sobre o painel Actions. (Você também pode usar o seu editor de texto favorito para criar um arquivo externo do AS. consulte “Usando o painel Actions e a janela Script” na página 36. números de linha. verificação de sintaxe etc. consulte “Sobre a janela Script” na página 38. como referências de código e sinalização por cores. Para obter mais informações sobre o Script Assist. scripts incorporados ao arquivo FLA) ou criar scripts externos (scripts ou classes armazenadas em arquivos externos). depuração. verificação de sintaxe. formatação de código. Essas ferramentas incluem a caixa de ferramentas Actions (Ações) que oferece um acesso rápido aos elementos básicos da linguagem ActionScript. Use o editor do ActionScript no painel Actions ao criar scripts em um arquivo FLA.

. . . . . . . . . . . . 62 Sobre comportamentos . . . . . . . . . Os eventos podem ser ativados pelo usuário ou pelo sistema. . consulte “Sobre a criação de scripts para manipular eventos” na página 35. . . . . . . Compreender quando e onde ocorrerão os eventos o ajudará a determinar como e onde você responderá a eles com uma ação e quais ferramentas do ActionScript utilizará em cada caso. . . . . . . . . . . . . . . . . 37 Sobre a janela Script . . . . . . . . . . . . . . . 65 Sobre as configurações de publicação do ActionScript . Para obter informações sobre os tipos de scripts que podem ser criados para manipular eventos. . . . . . . . . Quando ocorre um evento. . . . você cria um manipulador de eventos para responder ao evento com uma ação. . . . . . . . . . . . . . . . . . . o código ActionScript é executado quando ocorre um evento: por exemplo. . . . . . consulte “Sobre a criação de scripts para manipular eventos” na página 35. Para obter mais informações. . . . . . o sistema ativa eventos quando condições específicas são atendidas ou quando processos são concluídos (o arquivo SWF é carregado. eventos de clipe. . . . . . . . que ocorrem quando o usuário interage com seu aplicativo Flash através do mouse e do teclado. . . . consulte “Sobre comportamentos” na página 65. . . . . . . . . . . . . . . . 66 Sobre o ActionScript e eventos No Macromedia Flash Basic 8 e no Macromedia Flash Professional 8. . . . . . . . . a timeline alcança um determinado quadro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . quando um clipe de filme é carregado.0 . . . . 38 Sobre a codificação no painel Actions e na janela Script . . . . . . . . . . . . . . . . . Os eventos podem ser agrupados em várias categorias: eventos de mouse e teclado. . .O Flash oferece assistência adicional a scripts através de comportamentos. . Os usuários clicam em botões do mouse e pressionam teclas. . . . . . . . . . . . . . . . . que ocorrem em clipes de filme. . . . . . . 34 Usando o painel Actions e a janela Script. . . . . . . . . . . um elemento gráfico conclui o download etc. . . . . quando um quadro-chave é inserido na timeline ou quando o usuário clica em um botão. . . . . . . . . . . . . . . Para obter mais informações sobre comportamentos. . . . . . 32 Organizando o código ActionScript. . . 36 Sobre o painel Actions . . . . . . 32 Escrevendo e editando o ActionScript 2. . . . . . . . . . . . . . . . . . Para obter mais informações sobre como manipular eventos. . . . . . . . . . . . 39 Sobre recursos do painel Actions . . . . consulte as seguintes seções: Sobre o ActionScript e eventos . . . . . . . . . . . . . . . . . . . e eventos de quadro. . . . . . . . . . . . . Os comportamentos são funções predefinidas do ActionScript que você pode anexar a objetos no documento do Flash sem precisar criar o código ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . que ocorrem em quadros na timeline. . . .). . . . . . . . . . . . . . . .

Selecione um quadro-chave e adicione a função stop() como um elemento de script no painel Actions. quando ele clica em um botão. você precisará executar uma ação. você pode carregar uma imagem externa SWF ou JPG no clipe de filme quando o usuário entrar na cena ou permitir que os movimentos do mouse do usuário reposicionem elementos na cena. Eventos de clipe Em um clipe de filme. um evento de sistema ocorre quando a reprodução entra em um quadro-chave — conhecido como evento de quadro. se uma tecla do teclado for pressionada. gerenciar a interação dos elementos no Stage etc. ocorre o evento Button. Sobre o ActionScript e eventos 33 . Por exemplo.onRollOver ou on(rollOver). Ao interromper arquivo SWF em um quadro-chave específico. ele é executado quando o quadro-chave é alcançado durante uma reprodução. Uma das utilizações mais comuns dos scripts de quadro é interromper a reprodução quando um determinado quadro-chave é alcançado. Você pode. Isso é feito com a função stop(). Os script anexados a um quadro são chamados scripts de quadro. Os eventos de quadro são úteis para ativar ações baseadas na passagem de tempo (que se movem pela timeline) ou para interagir com elementos visíveis no momento no Stage. o evento Button. Por exemplo. você pode reagir a diversos eventos de clipe ativados quando o usuário entra ou sai da cena ou interagir com a cena usando o mouse ou o teclado.onRelease é ativado. ele ativa eventos de mouse e teclado.Eventos de mouse e teclado Quando o usuário interage com seu aplicativo ou arquivo SWF. Quando você adiciona um script a um quadro-chave. Você pode criar um código em um quadro ou anexar scripts a uma instância para manipular esses eventos e adicionar toda a interatividade desejada. Eventos de quadro Em uma timeline principal ou de clipe de filme. quando ele rola sobre um botão. o evento on(keyPress) ocorrerá. por exemplo. usar um script de quadro para atualizar dinamicamente o valor de um rótulo.

Uma prática comum envolve a criação de uma camada denominada actions e a inclusão do código ActionScript nessa camada. responda aos eventos chamando as funções residentes em um local central. Também será difícil compartilhar o código com diferentes aplicativos Flash. botões e outros símbolos)./core/Functions. use a janela Script ou o seu editor de texto favorito para criar um arquivo externo do ActionScript (AS). Um arquivo externo ajudará na depuração e também no gerenciamento do controle de origem caso você esteja trabalhando em um projeto junto com outros desenvolvedores. Portanto. clipes de filme e botões. sempre que possível. para que você não precise pesquisar o arquivo FLA a fim de localizar todo o código. essa conveniência terá cada vez mais utilidade do que você imagina. Para usar o código ActionScript contido em um arquivo externo do AS. Se o compartilhamento de seu código com outros aplicativos do Flash for um requisito importante para você.as" 34 Escrevendo e editando o ActionScript 2.Organizando o código ActionScript É possível anexar scripts a quadros-chave e instâncias de objeto (clipes de filme. Em vez de anexar scripts aos elementos.. como mostrado no exemplo a seguir: #include ". é importante que você siga as práticas recomendadas de codificação ao criar o ActionScript no Flash. a depuração de seu aplicativo ficará muito mais difícil. Ao anexar todos os scripts a elementos individuais.0 . A criação de um arquivo externo torna o seu código mais modular e bem organizado. À medida que seu projeto for se desenvolvendo. crie um script no arquivo FLA e use a instrução #include para acessar o código armazenado externamente. Entretanto. como quadros-chave. Um dos métodos consiste em anexar o ActionScript incorporado ao primeiro ou ao segundo quadro da timeline. se o seu código ActionScript for distribuído por vários quadroschave e instâncias de objeto. você incorpora todo o código ao arquivo FLA.

exporta. consulte “Convenções de codificação do ActionScript” na página 782. Outros problemas relacionados a fluxo de trabalho e organização de código deverão ser considerados quando você usar comportamentos. a janela Script ou ambos. Sobre a criação de scripts para manipular eventos A criação de código para eventos pode ser categorizada em dois grupos principais: eventos que ocorrem na timeline (em quadros-chave) e eventos que ocorrem em instâncias de objeto (clipes de filme. a Macromedia recomenda a não adição direta de scripts a esses elementos (quadros-chave e objetos).Também é possível usar o ActionScript 2. pelo modo de organização do código e. Armazene as classes personalizadas em arquivos externos do AS e use instruções import em um script para exportar as classes para o arquivo SWF. você deve responder aos eventos chamando as funções residentes em um local central. Entretanto. A interatividade de seu aplicativo ou arquivo SWF pode ser distribuída pelos vários elementos de seu projeto. Para obter mais informações sobre convenções e práticas recomendadas de codificação.0 para criar classes personalizadas. em vez de usar instruções #include. consulte “Criando arquivos de classes personalizados” na página 249 e “Sobre a importação de arquivos de classes” na página 254 que tratam da importação desses arquivos. NO T A O código do ActionScript em arquivos externos é compilado em um arquivo SWF quando você publica. Você também pode usar componentes (clipes de filme predefinidos) para compartilhar código e funcionalidade. Nesse caso. O uso do painel Actions ou da janela Script é determinado pelo modo de resposta aos eventos. como scripts e elementos de UI. você também pode optar por adicionar scripts diretamente a esses elementos. Portanto. Para obter mais informações sobre como criar arquivos de classe. testa ou depura um arquivo FLA. botões e componentes). Ao criar o ActionScript no Flash 8. pelas práticas recomendadas de codificação. se você fizer qualquer alteração em um arquivo externo. principalmente. Organizando o código ActionScript 35 . que são funções predefinidas do ActionScript (consulte “Sobre comportamentos” na página 65). conforme descrito em “Organizando o código ActionScript”. use o painel Actions. será preciso salvá-lo e recompilar os arquivos FLA que o utilizam.

A utilização do painel Actions ou da janela Script equivale ao uso dos recursos do editor do ActionScript para criar. siga um destes procedimentos: ■ Para começar a escrever um novo script. Para exibir o painel Actions. Pressione F9. Para exibir a janela Script. Para criar scripts externos a serem incluídos ou importados para o seu aplicativo. O painel Actions e a janela Script possuem o painel Script (onde o código é digitado) e a caixa de ferramentas Actions. “Sobre o painel Actions” na página 37 “Sobre a janela Script” na página 38 ■ ■ Para obter mais informações. selecione File > Open (Abrir) e abra um arquivo do AS. você pode usar a janela Script (File [Arquivo] > New [Novo] e selecionar ActionScript File [Arquivo do ActionScript]) ou o seu editor de texto preferido. formatar e editar o código. O Flash oferece esses recursos no painel Actions por eles serem especialmente úteis no contexto de edição do ActionScript em um arquivo FLA. Para abrir um script existente. consulte os tópicos a seguir: ■ ■ 36 Escrevendo e editando o ActionScript 2. O painel Actions oferece mais alguns recursos de assistência a código do que a janela Script.Usando o painel Actions e a janela Script Para criar scripts em um arquivo FLA. Para editar um script já aberto. insira o ActionScript diretamente no painel Actions. selecione File (Arquivo) > New (Novo) e ActionScript File (Arquivo do ActionScript).0 . siga um destes procedimentos: ■ ■ Selecione Window (Janela) > Actions (Ações). clique na guia do documento que exibe o nome do script.

Navegador Script Exibe uma lista hierárquica de elementos do Flash (clipes de filme. painel Menu pop-up Caixa de ferramentas Actions Use esta caixa de ferramentas para pesquisar uma lista categórica de elementos da linguagem ActionScript (funções. em seguida. o script ficará preso (travado no lugar). Para inserir um elemento de script no painel Script. Para obter mais informações. e cada um deles oferece suporte à criação e ao gerenciamento de scripts. consulte “Prendendo scripts no painel Actions” na página 63. O painel consiste em três painéis. quadros e botões) contendo scripts.) e. Actions (Ações). caixa Navegador Script de ferramentas Script. insira-os no painel Script. consulte “Sobre as barras de ferramentas do painel Actions e da janela Script” na página 40.Sobre o painel Actions Use o painel Actions para criar o ActionScript em um documento do Flash (arquivo FLA). classes. Para obter mais informações. Sobre o painel Actions 37 . Use o navegador Script para se mover rapidamente entre todos os scripts do documento do Flash. clique duas vezes nele ou arraste-o diretamente para esse painel. Se você clicar em um item no navegador Script. o script associado a esse item aparecerá no painel Script e a reprodução passará para essa posição na timeline. Você também pode adicionar elementos de linguagem aos scripts usando o botão Add (+) (Adicionar) localizado na barra de ferramentas do painel Actions. Se você clicar duas vezes em um item do navegador Script. tipos etc.

consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ “Sobre as barras de ferramentas do painel Actions e da janela Script” na página 40 “Sobre as opções de edição do ActionScript” na página 42 “Sobre as referências de código no Flash” na página 47 “Formatando código” na página 53 “Usando o realce de sintaxe” na página 54 “Usando números de linha e quebra automática de linha” na página 55 “Usando teclas de atalho de Escape” na página 56 “Exibindo caracteres ocultos” na página 57 “Usando a ferramenta Find” na página 58 “Verificando sintaxe e pontuação” na página 59 “Importando e exportando scripts” na página 60 Sobre a janela Script Você pode criar e editar o ActionScript na janela Script ao criar um novo arquivo do ActionScript. a caixa de ferramentas Actions fornecerá uma lista completa dos elementos de linguagem disponíveis para cada um deles. sinalização por cores. não estarão disponíveis. Isso ocorre porque esses recursos são úteis apenas no contexto de criação de um documento do Flash. a comunicação do ActionScript e arquivos do Flash JavaScript. você perceberá que alguns dos outros recursos de assistência a código.Painel Script No painel Script. como o navegador Script. O painel fornece ferramentas para a criação de scripts em um editor completo (o editor do ActionScript) que inclui verificação e formatação de sintaxe. Nessa janela. você digita seu código. e não de criação de um arquivo de script externo. o modo Script Assist e os comportamentos. A janela oferece suporte à sinalização da sintaxe por cores. Para obter mais informações. Para obter mais informações sobre os recursos do painel Actions. Dependendo do tipo de arquivo de script externo criado. consulte “Sobre a codificação no painel Actions e na janela Script” na página 39.0 . depuração e outros recursos que simplificam a criação. a referências de código e a outras opções de editor. do Flash Communication ou do Flash JavaScript. 38 Escrevendo e editando o ActionScript 2. é possível criar um ActionScript externo. Use a janela Script para criar e editar arquivos de script externos. consulte “Usando o painel Actions e a janela Script” na página 36. referências de código. Para obter informações sobre cada botão da barra de ferramentas do painel Actions. Ao usar a janela Script.

caracteres ocultos e quebra automática de linha. Os recursos que ajudam na edição do código podem ser acessados na barra de ferramentas do painel Actions ou da janela Script. local de edição do código. é o principal elemento do painel Actions e da janela Script. A janela Script oferece suporte às seguintes opções de editor: caixa de ferramentas Actions. Sobre a codificação no painel Actions e na janela Script 39 . Para obter mais informações sobre os recursos da janela Script. sinalização por cores. recursos localizar e substituir. verificação de sintaxe. É possível abrir vários arquivos externos ao mesmo tempo. através do sistema de menu e no próprio painel Script. Selecione o tipo de arquivo externo que deseja criar (arquivo do ActionScript. Selecione File (Arquivo) > New (Novo). ela oferece suporte à exibição de números de linha. referências de código e opções de depuração (somente arquivos do ActionScript). os nomes dos arquivos são exibidos em guias na parte superior da janela Script. O painel Actions e a janela Script oferecem recursos básicos de assistência a código e de edição de script. Para exibir a janela Script: 1. arquivo do Flash Communication ou arquivo do Flash JavaScript). consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ “Sobre as barras de ferramentas do painel Actions e da janela Script” na página 40 “Sobre as opções de edição do ActionScript” na página 42 “Sobre as referências de código no Flash” na página 47 “Formatando código” na página 53 “Usando o realce de sintaxe” na página 54 “Usando números de linha e quebra automática de linha” na página 55 “Usando teclas de atalho de Escape” na página 56 “Exibindo caracteres ocultos” na página 57 “Usando a ferramenta Find” na página 58 “Verificando sintaxe e pontuação” na página 59 “Importando e exportando scripts” na página 60 Sobre a codificação no painel Actions e na janela Script O painel Script. Além disso. como referências de código.Você também observará que várias opções disponíveis no painel Actions não estão disponíveis na janela Script. 2. formatação automática etc. formatação automática.

por exemplo. A imagem a seguir exibe os recursos localizados na barra de ferramentas do painel Actions. Add a new item to the script (Adicionar um novo item ao script) Find (Localizar) Debug Options (Opções de depuração)* Insert target path (Inserir caminho de destino)* Script Assist * Menu pop-up* Show Code Hint (Mostrar referência de código) Auto Format (Formatação automática) Check Syntax (Verificar sintaxe) Referência * Somente no painel Actions 40 Escrevendo e editando o ActionScript 2. Sobre as barras de ferramentas do painel Actions e da janela Script As barras de ferramentas do painel Actions e da janela Script contêm links para os recursos de assistência a código que ajudam a simplificar e agilizar a codificação no ActionScript. As opções marcadas estão disponíveis apenas no painel Actions. consulte “Sobre recursos do painel Actions” na página 62. Elas serão diferentes caso você utilize o editor do ActionScript no painel Actions ou no painel Script. prender o script e navegador Script.Os tópicos a seguir apresentam os vários recursos do editor do ActionScript (painel Actions e janela Script): ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ “Sobre as barras de ferramentas do painel Actions e da janela Script” na página 40 “Sobre as opções de edição do ActionScript” na página 42 “Sobre as preferências do ActionScript” na página 44 “Sobre as referências de código no Flash” na página 47 “Formatando código” na página 53 “Usando o realce de sintaxe” na página 54 “Usando números de linha e quebra automática de linha” na página 55 “Usando teclas de atalho de Escape” na página 56 “Exibindo caracteres ocultos” na página 57 “Usando a ferramenta Find” na página 58 “Verificando sintaxe e pontuação” na página 59 “Importando e exportando scripts” na página 60 Para obter os recursos específicos apenas do painel Actions.0 .

Para obter mais informações. consulte “Inserindo caminhos de destino” na página 65. Veja a seguir um breve resumo dos botões disponíveis nas barras de ferramentas do painel Actions e da janela Script. consulte “Usando a ferramenta Find” na página 58. você possa parar e. Para obter mais informações sobre como depurar documentos do Flash. percorrer o script linha por linha.Os recursos localizados na barra de ferramentas serão discutidos em detalhes em “Usando o painel Actions e a janela Script” na página 36. disponível no menu Edit (Editar) ou no menu pop-up do painel Actions. NO TA Algumas opções a seguir estão localizadas apenas no painel Actions. As opções de depuração agora estão disponíveis na janela Script e também no painel Actions. consulte “Sobre o Script Assist” na página 62. Essa opção está desativada para arquivos do ActionScript Communication e do Flash JavaScript. em seguida. Você pode definir as preferências de formatação automática na caixa de diálogo Preferences (Preferências). você poderá usar o comando Show Code Hint para exibir manualmente uma referência de código relativa à linha de código na qual estiver trabalhando. Debug Options (Opções de depuração) Defina e remova pontos de interrupção no script. consulte “Definindo e removendo pontos de interrupção” na página 755. mas somente para arquivos do ActionScript. consulte “Depurando scripts” na página 745. Sobre a codificação no painel Actions e na janela Script 41 . Esses recursos estão marcados como Somente no painel Actions. Para obter informações sobre como definir e remover pontos de interrupção. Para obter mais informações. Formate seu script para uma sintaxe de codificação apropriada e para melhorar a legibilidade. Os erros de sintaxe são listados no painel Output (Saída). consulte “Formatando código” na página 53. Para obter mais informações. Ajuda na configuração de um caminho de destino relativo ou absoluto de uma ação no script. Insert target path (Inserir caminho de destino) Somente no painel Actions. A seleção de um item na lista categorizada de elementos de linguagem adiciona-o ao script. Add a new item to the script (Adicionar um novo item ao script) Exiba todos os elementos de linguagem também existentes na caixa de ferramentas do ActionScript. Check Syntax (Verificar sintaxe) Verifique erros na sintaxe do script atual. para que. Para obter mais informações. Auto Format (Formatação automática) Show Code Hint (Mostrar referência de código) Se tiver desativado a referência de código automática. ao depurar seu documento do Flash. consulte “Verificando sintaxe e pontuação” na página 59. Para obter mais informações. Find (Localizar) Localize e substitua qualquer texto no código ActionScript.

consulte “Sobre a janela Script” na página 38. consulte “Sobre o Script Assist” na página 62. No modo Script Assist. Sobre as opções de edição do ActionScript A janela Script e o painel Actions oferecem vários recursos de assistência a código — ferramentas que facilitam bastante a criação e a manutenção de scripts. Essas opções de ferramenta estão disponíveis na barra de ferramentas do painel Actions ou da janela Script e no menu pop-up do painel Actions. Contém os vários comandos e preferências que se aplicam ao painel Actions ou à janela Script. As opções disponíveis na janela Script e no painel Actions são discutidas em “Sobre as barras de ferramentas do painel Actions e da janela Script” na página 40. essas opções estarão disponíveis na barra de ferramentas e no sistema de menu do Flash. clicar em Reference. Reload code hints (Recarregar referências de código) Somente no painel Actions. se você clicar em uma instrução import e. Para obter mais informações.0 . Isso ocorre porque essas opções adicionais são úteis no contexto de criação do ActionScript incorporado a um documento do Flash — e não na criação de arquivos externos do ActionScript. você pode definir números de linha e quebra automática de linha no editor do ActionScript.Script Assist Somente no painel Actions. consulte “Sobre as opções de edição do ActionScript” na página 42. o tópico da Ajuda relativo à import será exibido no painel Help (Ajuda). Se personalizar o modo Script Assist criando métodos personalizados. acessar as preferências do ActionScript e importar ou exportar scripts. Escrevendo e editando o ActionScript 2. você é solicitado a inserir os elementos necessários à criação de scripts. O painel Actions oferece mais opções do que as disponíveis na janela Script. em seguida. Esses recursos estão marcados como Somente no painel Actions. Durante a edição do ActionScript na janela Script. N OT A 42 Algumas opções a seguir estão localizadas apenas no painel Actions. Por exemplo. você poderá recarregar as referências de código sem reiniciar o Flash 8. Por exemplo. Menu pop-up Somente no painel Actions. Para obter mais informações. As opções a seguir estão disponíveis no menu pop-up do painel Actions e em diversos menus da janela Script. Reference (Referência) Exiba um tópico da Ajuda de referência para o elemento da linguagem ActionScript selecionado no painel Script. Para obter informações sobre quais dessas opções estão disponíveis na janela Script.

Preferences (Preferências) Somente no painel Actions. quando você pressionar Esc+g+p no painel Script. Para obter mais informações. Close all scripts (Fechar todos os scripts) scripts abertos no momento. Fecha todos os momento. Quando você seleciona a opção Esc Shortcut Keys no menu pop-up do painel Actions. Hidden characters (Caracteres ocultos) Line numbers (Números de linha) Exibe números de linha no painel Script. Close script (Fechar script) Somente no painel Actions. consulte “Usando teclas de atalho de Escape” na página 56.Pin script (Prender script) Somente no painel Actions. Para obter mais informações. consulte “Usando números de linha e quebra automática de linha” na página 55. Para obter mais informações. Fecha o script aberto no Somente no painel Actions. Prende (trava no lugar) o script exibido no momento no painel Script. consulte “Sobre as preferências do ActionScript” na página 44. Para obter mais informações. Por exemplo. Go to line (Ir para linha) Localiza e realça a linha especificada no painel Script. Exibe a caixa de diálogo de preferências do ActionScript. Export script (Exportar script) Exporta o script atual para um arquivo externo do ActionScript (AS). Para obter mais informações. consulte “Importar e exportar preferências” na página 61. todas as teclas de atalho disponíveis de Escape são exibidas na caixa de ferramentas Actions. Esc shortcut keys (Teclas de atalho de Esc) Exiba os caracteres ocultos em seu script que podem ser espaços. Insira rapidamente elementos de linguagem e estruturas de sintaxe comuns nos scripts. Repete a ação de busca para a última seqüência de caracteres de pesquisa digitada na ferramenta Find. consulte “Prendendo scripts no painel Actions” na página 63. Find and replace (Localizar e substituir) Localiza e substitui qualquer texto contido nos scripts do painel Script. consulte “Importar e exportar preferências” na página 61. tabulações e quebras de linha. Para obter mais informações. consulte “Usando a ferramenta Find” na página 58. Para obter mais informações. Sobre a codificação no painel Actions e na janela Script 43 . a função gotoAndPlay() será inserida no script. consulte “Exibindo caracteres ocultos” na página 57. consulte “Usando a ferramenta Find” na página 58. Find again (Localizar novamente) Import script (Importar script) Permite importar um arquivo de script (ActionScript) para o painel Script. Para obter mais informações. Para obter mais informações.

consulte “Usando números de linha e quebra automática de linha” na página 55. Permite agrupar o painel Actions (que inclui a caixa de ferramentas Actions e o navegador Script) com outros painéis dentro do ambiente de criação do Flash. você pode controlar o recuo automático.Word wrap (Quebra automática de linha) Para quebrar as linhas do script que excedem o tamanho atual da janela Script. selecione Edit > Preferences e clique em ActionScript (Windows) ou escolha Flash > Preferences e clique em ActionScript (Macintosh). além de vários outros recursos básicos de edição de código. selecione Preferences (Preferências) no menu pop-up ou Edit (Editar) > Preferences (Preferências) (Windows) ou Flash > Preferences (Macintosh) e clique em ActionScript na lista Category (Categoria). Help (Ajuda) e comandos de redimensionamento de painel. Quando você usar a janela Script. as referências de código e a sinalização por cores. Por exemplo. selecione Word Wrap no menu View (Exibir). selecione Word Wrap (Quebra automática de linha) no menu pop-up do painel Actions. Para acessar as preferências do ActionScript: 1. Para acessar as preferências do ActionScript em um arquivo FLA através do painel Actions. Para acessar as preferências do ActionScript na janela Script. Sobre as preferências do ActionScript A edição de um código no painel Actions ou na janela Script permite definir e modificar um único conjunto de preferências. 2. O menu pop-up do painel Actions também inclui os comandos Print (Imprimir). 44 Escrevendo e editando o ActionScript 2. Para obter mais informações. Group Actions with (Agrupar ações com) Somente no painel Actions.0 .

Para obter mais informações sobre como usar referências de código. Tab size (Tamanho da tabulação) Especifica o número de caracteres segundo o qual a linha será deslocada quando o recuo automático estiver ativado. consulte “Formatando código” na página 53. Você pode definir as seguintes preferências: Automatic indentation (Recuo automático) Quando o recuo automático estiver ativado. Font (Fonte) Sobre a codificação no painel Actions e na janela Script 45 .A imagem a seguir mostra as configurações do ActionScript que podem ser alteradas no Flash 8. Especifica o atraso (em segundos) antes da exibição das referências de Especifica a fonte usada no painel Script. consulte “Sobre as referências de código no Flash” na página 47. Para obter mais informações. o texto digitado após um parêntese de abertura [(] ou uma chave de abertura ({) será recuado automaticamente conforme a configuração Tab Size (Tamanho da tabulação) nas preferências do ActionScript. Code hints (Referências de código) Permite referências de código no painel Script. Delay (Atraso) código.

Never (Nunca) ou Prompt. 46 Escrevendo e editando o ActionScript 2. Para obter mais informações. Para obter mais informações.Use dynamic font mapping (Usar mapeamento dinâmico de fontes) Executa uma verificação para assegurar que a família de fontes selecionada possui os glifos necessários para renderizar cada caractere. esse recurso ajudará a evitar a substituição de um script modificado por um membro da equipe desde a abertura do aplicativo ou a publicação do aplicativo com versões antigas de scripts. Never (Nunca) Reload modified files (Recarregar arquivos modificados) ■ ■ Nenhum aviso é exibido quando uma alteração é detectada e o arquivo permanece no estado atual. Quando você criar aplicativos que envolvam arquivos de script externos. Always (Sempre) Nenhum aviso é exibido quando uma alteração é detectada e o arquivo é automaticamente recarregado. importa e exporta arquivos do ActionScript. o Flash substituirá uma família de fontes contendo os caracteres necessários. Com o recurso de sinalização por cores ativado. Caso não haja os glifos necessários. ■ Prompt (Padrão) Um aviso é exibido quando uma alteração é detectada e você pode optar por recarregar ou não o arquivo. a movimentação ou a exclusão de um arquivo de script. consulte “Importando e exportando scripts” na página 60. Para obter mais informações. Os avisos permitem fechar automaticamente um script e reabrir a versão mais atual modificada. Permite que você selecione o momento de exibição de avisos sobre a modificação. é possível selecionar as cores para exibição no painel Script. Syntax colors (Cores da sintaxe) Especifica as cores da sinalização por cores nos scripts.0 . Language (Idioma) Abre a caixa de diálogo ActionScript Settings (Configurações do ActionScript). salva. Selecione Always (Sempre). Encoding (Codificação) Especifica a codificação de caracteres usada quando você abre. consulte “Modificando o caminho de classe” na página 68. consulte “Formatando código” na página 53.

Um menu pop-up é exibido para parâmetros. ■ ■ ■ ■ ■ “Sobre a ativação de referências de código” na página 47 “Usando referências de código” na página 48 “Sobre a atribuição de tipo a objetos para ativar referências de código” na página 51 “Sobre o uso de sufixos para ativar referências de código” na página 51 “Sobre o uso de comentários para ativar referências de código” na página 53 Sobre a ativação de referências de código Quando você trabalha no painel Actions ou na janela Script. Os dois estilos diferentes de referência de código são uma dica de ferramenta que contém a sintaxe completa da ação e um menu pop-up que lista possíveis nomes de método ou de propriedade (algumas vezes usado como uma forma de conclusão do código). Para assegurar a ativação das referências de código. como Math. As referências de código ajudam a criar um código com rapidez e precisão. N OT A A exibição das referências de código é ativada automaticamente para classes nativas que não exigem a criação de uma instância da classe e a atribuição de nome a ele. é necessário que as opções de Code Hints (Referências de código) estejam selecionadas na caixa de diálogo Preferences do ActionScript. consulte “Usando referências de código” na página 48. Para obter mais informações. consulte “Sobre o painel Actions” na página 37. é possível usar vários recursos para ajudar na criação de um código sintaticamente correto. conforme discutido no restante desta seção. Para obter informações sobre como usar referências de código quando elas aparecerem. As referências de código algumas vezes serão exibidas se você clicar duas vezes em um item na caixa de ferramentas Actions ou clicar em Add (+) na barra de ferramentas do painel Actions ou da janela Script para adicionar ações ao painel Script.Sobre as referências de código no Flash No painel Actions ou na janela Script. Mouse etc. As seções a seguir mostram como criar um código que utiliza esses recursos. Key. propriedades e eventos quando você usa a atribuição de tipo estrita ou nomeação para objetos. As referências de código incluem dicas de ferramenta contendo a sintaxe correta e menus que permitem selecionar nomes de método e de propriedade. Sobre a codificação no painel Actions e na janela Script 47 . o Flash pode detectar a ação que está sendo inserida e exibir uma referência de código.

selecione Preferences no menu pop-up (na parte superior direita do painel) e ative ou desative Code Hints nas preferências do ActionScript. 3. Por exemplo. Esse tempo é definido em segundos. Para exibir a referência de código. é possível desativar referências de código ou determinar a rapidez com que elas são exibidas.0 . No painel Actions ou na janela Script. Clique em ActionScript na lista Category. poderá preferir não usar atrasos. selecione Edit > Preferences (Windows) ou Flash > Preferences (Macintosh) no menu principal.while etc. Para trabalhar com referências de código no estilo de dica de ferramenta: 1.Usando referências de código As referências de código são ativadas por padrão. poderá também especificar um atraso. Para especificar configurações de referências de código automáticas. clique em ActionScript na lista Category e ative ou desative Code Hints.. em segundos. No painel Actions. Para especificar um atraso para as referências de código: 1. após o nome de um método. 2. se você geralmente souber o que quer digitar e só precisar das referências de código ao usar elementos de linguagem desconhecidos. digite um parêntese de abertura [(] após um elemento que exija parênteses (por exemplo. para que as referências de código sempre apareçam imediatamente. um comando. No entanto. como if ou do. antes que elas apareçam. 48 Escrevendo e editando o ActionScript 2. Use o controle deslizante para selecionar o tempo de atraso. Quando as referências de código estão desativadas nas preferências. Ao definir preferências. ainda é possível exibir uma referência de código para um comando específico. selecione Edit > Preferences (Windows) ou Flash > Preferences (Macintosh). ■ Se você ativar as referências de código. poderá especificar um atraso para que elas não apareçam quando não desejar usá-las. siga um destes procedimentos: ■ No painel Actions ou na janela Script. se você não estiver familiarizado com o ActionScript.

separe os parâmetros por ponto-e-vírgula. Para exibir a referência de código. siga um destes procedimentos: ■ ■ ■ Para trabalhar com referências de código no estilo de menu: 1. Para funções ou instruções. digite um ponto após o nome da variável ou objeto. Para desconsiderar a referência de código. Pressione Escape.A referência de código será exibida. exibem um indicador que permite selecionar o parâmetro a ser definido. for loop. Digite um parêntese de fechamento [)]. Clique nos pequenos botões de seta ou pressione Control+seta para a esquerda e Control+seta para a direita para selecionar o parâmetro. separe os valores por vírgulas. Clique fora da instrução. NO TA Se nenhuma referência de código for exibida. Sobre a codificação no painel Actions e na janela Script 49 . por exemplo. Para exibir referências de código para uma variável ou um objeto criado. verifique se você atribuiu nome à variável ou ao objeto corretamente (consulte “Sobre o uso de sufixos para ativar referências de código” na página 51) ou se usou a atribuição de tipo estrita para a variável ou o objeto (consulte “Sobre a atribuição de tipo a objetos para ativar referências de código” na página 51). 2. Se houver mais de um parâmetro. Os comandos superpostos (funções ou métodos que podem ser chamados com conjuntos diferentes de parâmetros). verifique se você não desativou Code Hints nas preferências do ActionScript (Edit > Preferences (Windows) ou Flash > Preferences (Macintosh)) e clique em ActionScript na lista Category). Digite um valor para o parâmetro. 3. como gotoAndPlay() ou for.

) que segue uma instrução ou um comando. 3. verifique se você não desativou as referências de código nas preferências do ActionScript (Edit > Preferences (Windows) ou Flash > Preferences (Macintosh)) e clique em ActionScript na lista Category). use as teclas de seta para cima e de seta para baixo. selecione Show Code Hint no menu pop-up. siga um destes procedimentos: ■ ■ ■ ■ Para exibir manualmente uma referência de código: 1. 4. Para selecionar um item no menu. Escrevendo e editando o ActionScript 2. 2. Para exibir referências de código para uma variável ou um objeto criado. Siga um destes procedimentos: ■ ■ ■ N OT A 50 Se nenhuma referência de código for exibida.0 . Digite um parêntese de fechamento [)] se já tiver digitado um parêntese de abertura [(]. Pressione Escape. pressione Enter ou Tab ou clique duas vezes no item. Selecione um dos itens de menu. como nos seguintes locais: ■ ■ 2. Para percorrer as referências de código. Pressione Control+Barra de espaços (Windows) ou Command+Barra de espaços (Macintosh). Para desconsiderar a referência de código. onde uma propriedade ou um método deve ser digitado Entre parênteses [()] em um nome de método Clique em Show Code Hint (Mostrar referência de código) na barra de ferramentas do painel Actions ou da janela Script. Clique acima ou abaixo da janela de menu. Clique em um local no código onde é possível exibir as referências de código.O menu de referências de código é exibido. verifique se você atribuiu nome à variável ou ao objeto corretamente (consulte “Sobre o uso de sufixos para ativar referências de código” na página 51) ou se usou a atribuição de tipo estrita para a variável ou o objeto (consulte “Sobre a atribuição de tipo a objetos para ativar referências de código” na página 51). Se estiver trabalhando no painel Actions. Após o ponto (.

respectivamente. Sobre o uso de sufixos para ativar referências de código Se você usa o ActionScript 1 ou deseja exibir referências de código para objetos criados por você sem atribuir um tipo estritamente a eles (consulte “Sobre a atribuição de tipo a objetos para ativar referências de código” na página 51). os sufixos que ativam referências de código para a classe Array e a classe Camera são. Array etc. sempre que você digitar o nome da instância seguido por um ponto.get(). porque você digitou a variável como se fosse um array. você poderá digitar um dos elementos a seguir (o nome de variável seguido por um ponto): my_array. Nesse caso. se digitar o seguinte código var my_array = new Array(). Para objetos que aparecem no Stage. consulte “Usando referências de código” na página 48.0. Referências de código serão exibidas para os objetos Array e Camera. como Button. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85.). o Flash exibe uma lista de métodos e propriedades disponíveis para objetos Array em um menu pop-up. names. _array e _cam. as referências de código aparecerão. var my_cam = Camera. Sobre a codificação no painel Actions e na janela Script 51 . suponha que você defina o seguinte código: var names:Array = new Array(). o painel Script exibirá referências de código para a variável. Para obter mais informações sobre como atribuir tipos de dados. você pode usar a atribuição de tipo estrita para uma variável que tem como base uma classe interna. para exibir referências de código de objetos MovieClip. Assim que você digita o ponto (. Para obter informações sobre como usar referências de código quando elas aparecerem. adicione um sufixo especial ao nome de cada objeto ao criá-lo. my_cam. Por exemplo. usá-los de forma consistente ajudará a entender seu código. use o sufixo na caixa de texto Instance Name (Nome de instância) no inspetor Properties (Propriedades). Embora não sejam necessários sufixos para ativar as referências de código quando você usar a atribuição de tipo estrita a um objeto. Por exemplo. use o inspetor Properties para atribuir nomes de instância com o sufixo _mc a todos os objetos MovieClip. Por exemplo. Assim. Por exemplo.Sobre a atribuição de tipo a objetos para ativar referências de código Com o ActionScript 2.

52 Escrevendo e editando o ActionScript 2.0 . consulte “Usando referências de código” na página 48.A tabela abaixo lista os sufixos necessários para o suporte a referências de código automáticas: Tipo de objeto Array Button Camera (Câmera) Color ContextMenu ContextMenuItem Date Error LoadVars LocalConnection Sufixo da variável _array _btn _cam _color _cm _cmi _date _err _lv _lc Microphone (Microfone) _mic MovieClip MovieClipLoader PrintJob NetConnection NetStream SharedObject Sound String TextField TextFormat Video XML XMLNode XMLSocket _mc _mcl _pj _nc _ns _so _sound _str _txt _fmt _video _xml _xmlnode _xmlsocket Para obter informações sobre como usar referências de código quando elas aparecerem.

Formate manualmente o código que foi formatado com configurações diferentes. selecione Auto Format (Formatação automática). porque eles ativam automaticamente as referências de código e tornam o código mais compreensível. Se você digitar theArray e ponto. No painel Actions. selecione Edit > Preferences (Windows) ou Flash > Preferences (Macintosh). e não ao código existente. Sobre a codificação no painel Actions e na janela Script 53 . consulte “Usando referências de código” na página 48. 2. Selecione uma das opções de Auto Format. importado de outro editor etc. Você também pode optar por usar o mapeamento dinâmico de fontes. você deverá aplicar suas configurações manualmente ao código existente. Depois de definir as opções de Auto Format. selecione Auto Format. Para definir opções de formato: 1. Na caixa de diálogo Preferences. que assegura o uso de fontes corretas durante o trabalho com texto multilíngüe. as configurações serão aplicadas automaticamente ao código que você escrever. Entretanto. Na caixa de diálogo Preferences. O exemplo a seguir informa ao ActionScript que a classe da instância theObject é Object e assim por diante. // MovieClip theMc. serão exibidas as referências de código com a lista de métodos e propriedades de MovieClip.Sobre o uso de comentários para ativar referências de código Você também pode usar os comentários do ActionScript a fim de especificar a classe de um objeto para referências de código. Formatando código Você pode especificar configurações para determinar se o código será formatado e recuado automática ou manualmente. Se você digitar mc e ponto após esses comentários. será exibido um menu com uma lista de métodos e propriedades de Array. Como alternativa. observe o painel Preview (Visualizar). // Array theArray. na janela Script. // Object theObject. Para obter mais informações sobre como usar referências de código. Para verificar o efeito de cada seleção. selecione Preferences no menu pop-up (na parte superior direita do painel). a Macromedia recomenda que você utilize a atribuição estrita de tipos de dados (consulte “Sobre a atribuição de tipo a objetos para ativar referências de código” na página 51) ou sufixos (consulte “Sobre o uso de sufixos para ativar referências de código” na página 51) em vez dessa técnica.

marque ou desmarque Automatic indentation (Recuo automático) na caixa de diálogo Preferences. selecione uma linha e pressione Tab para recuá-la. assim como em qualquer linguagem. 54 Escrevendo e editando o ActionScript 2. Por padrão. o texto digitado após um parêntese de abertura [(] ou uma chave de abertura ({) será recuado automaticamente conforme a configuração Tab Size (Tamanho da tabulação) nas preferências do ActionScript. Usando o realce de sintaxe No ActionScript. os scripts não funcionarão. (Para obter informações sobre como definir a versão do arquivo SWF do Flash Player. selecione a linha e pressione Shift+Tab. o ActionScript que só é suportado pelo Flash Player 8 aparecerá em amarelo na caixa de ferramentas Actions. Por exemplo. marque ou desmarque Use dynamic font mapping (Usar mapeamento dinâmico de fontes) na caixa de diálogo Preferences. Na janela Script.0 . os comandos não suportados pela versão do exibidor especificado aparecerão em amarelo na caixa de ferramentas Actions. Pressione Control+Shift+F (Windows) ou Command+Shift+F (Macintosh). Se estiver trabalhando com texto multilíngüe. ■ ■ ■ Para usar o mapeamento dinâmico de fontes: ■ Para ativar ou desativar o mapeamento dinâmico de fontes. selecione Tools (Ferramentas) > Auto Format (Formatação automática). No painel Actions. “Definindo opções de publicação para o formato de arquivo SWF do Flash” em Using Flash (Usando o Flash).Para formatar o código de acordo com as configurações de Auto Format. Para usar o recuo automático: ■ Para ativar ou desativar o recuo automático. siga um destes procedimentos: ■ Clique no botão Auto Format na barra de ferramentas do painel Actions ou da janela Script. Se for usada uma sintaxe incorreta do ActionScript. selecione Auto Format no menu pop-up. Nos scripts. o mapeamento dinâmico de fontes está desativado para melhorar o desempenho durante a edição de scripts. se a versão do arquivo SWF do Flash Player estiver definida como Flash 7. consulte Capítulo 17. Quando você escreve scripts no Flash Basic 8 e no Flash Professional 8. Para remover o recuo. Quando o recuo automático estiver ativado. a sintaxe é a maneira como os elementos são reunidos para terem significado. ative o mapeamento dinâmico de fontes para assegurar o uso das fontes corretas.

você digitar vae. identificadores e seqüências de caracteres. siga um destes procedimentos: ■ Selecione Edit > Preferences (Windows) ou Flash > Preferences (Macintosh). Com o ponteiro do mouse focalizado no painel Script. Para obter informações sobre identificadores e seqüências de caracteres. Para definir preferências de sinalização de sintaxe por cores enquanto digita. Sobre a codificação no painel Actions e na janela Script 55 . Na janela Script. pressione Control-U (Windows) ou Command-U (Macintosh).Também é possível definir uma preferência para que o Flash destaque com cores partes dos scripts enquanto você os escreve a fim de realçar erros de digitação. se. selecione Tools > Line Numbers. a palavra var aparecerá em azul. você dever ativar os números de linha e a quebra automática de linha para facilitar a edição do código. selecione Preferences no menu pop-up (na parte superior direita do painel) e especifique as configurações Syntax coloring nas preferências do ActionScript. comentários. siga um destes procedimentos: ■ ■ ■ No painel Actions. Geralmente. clique em ActionScript na lista Category e especifique as configurações Syntax coloring (Sinalização de sintaxe por cores). se você digitar var. consulte “Sobre comentários” na página 139. Pressione Control+Shift+L (Windows) ou Command+Shift+L (Macintosh). selecione Line Numbers (Números de linha) no menu pop-up. Para obter informações sobre palavras-chave. consulte “Terminologia” na página 841 e “Tipo de dados String” na página 83. Usando números de linha e quebra automática de linha Você pode optar por exibir números de linha e quebrar as linhas longas de código. imagine que você definiu a preferência de sinalização da sintaxe por cores para que as palavras-chave apareçam em azul-escuro. por engano. indicando que houve erro de digitação. A quebra automática de linha ajuda a evitar a rolagem horizontalmente por longas linhas de código (principalmente durante o trabalho no ambiente de criação ou em baixas resoluções de tela). consulte “Sobre palavras-chave” na página 146. Por exemplo. Para obter informações sobre comentários. Ao criar o código. Os números de linha facilitam a análise do código e a rolagem por ele durante sua edição ou modificação. Entretanto. Para ativar ou desativar números de linha. a palavra vae continuará na cor preta. ■ ■ É possível alterar as configurações de cor para palavras-chave. No painel Actions.

se você pressionar Escape+c+h. exiba-os ao lado dos elementos na caixa de ferramentas do ActionScript. Pressione Control+Shift+W (Windows) ou Command+Shift+W (Macintosh). NO T A 56 Esses atalhos são diferentes dos atalhos de teclado que iniciam determinados comandos de menu.0 . duas outras teclas). Por exemplo. Na janela Script. Usando teclas de atalho de Escape Você pode adicionar vários elementos a um script usando as teclas de atalho de Escape (pressionando a tecla Escape e. selecione Word Wrap (Quebra automática de linha) no menu pop-up. O ponto de inserção é inserido imediatamente após a palavra while. Da mesma forma. selecione Tools > Word Wrap. se você estiver trabalhando no painel Script e pressionar Escape+d+o. em seguida. o código a seguir será inserido no script. siga um destes procedimentos: ■ ■ ■ No painel Actions. para que você possa começar a digitar sua condição. e o ponto de inserção será posicionado entre os parênteses [()].Para ativar ou desativar a quebra automática de linha. Escrevendo e editando o ActionScript 2. o código a seguir será inserido no seu script: do { } while (). para que você possa começar a digitar a condição: catch () { } Para aprender (ou ser lembrado de) quais comandos possuem teclas de atalho de Escape.

Os símbolos a seguir são usados para exibir cada caractere oculto: espaço de um byte espaço de bytes duplos tabulação quebra de linha . A exibição de caracteres ocultos no painel Script permite ver e remover esses espaços.Para exibir ou ocultar as teclas de atalho de Escape: ■ No menu pop-up do painel Actions. As teclas de atalho de Escape são exibidas ao lado dos elementos na caixa de ferramentas do ActionScript. tabulações e quebras de linha no script. Entretanto. l >> Para exibir caracteres ocultos. Eles obviamente são úteis e necessários à organização visual do código. siga um destes procedimentos : ■ ■ Selecione Hidden Characters (Caracteres ocultos) no menu pop-up. Exibindo caracteres ocultos Quando você cria e formata o código do ActionScript. marque ou desmarque Esc Shortcut Keys (Teclas de atalho de Esc). insere espaços. Pressione Control+Shift+8 (Windows) ou Command+Shift+8 (Macintosh). o compilador do Flash gera erros quando encontra espaços de bytes duplos que não fazem parte de um valor de seqüência de caracteres. Sobre a codificação no painel Actions e na janela Script 57 .

0 . 2. selecione a ferramenta Find ou pressione Control+F (Windows) ou Command+F (Macintosh). Se o texto ou os caracteres estiverem presentes no script. substituir uma seqüência de caracteres nos scripts. Digite a seqüência de caracteres de pesquisa que deseja localizar e substituir no script. Para localizar e substituir um texto no script: 1. Clique em Find Next. Também pode fazer a correspondência de maiúsculas e minúsculas do texto. Você pode substituir a primeira ocorrência. 3. opcionalmente. Clique em Find Next (Localizar próximo). 2. as palavras ou os caracteres serão realçados no painel Script. 4. Na barra de ferramentas do painel Actions ou da janela Script. Digite a seqüência de caracteres de pesquisa que deseja localizar no script. Se a seqüência de caracteres estiver presente no script. Na caixa de texto Replace (Substituir).O painel Script terá esta aparência quando forem exibidos caracteres ocultos: Usando a ferramenta Find A ferramenta Find (Localizar) permite localizar e. do texto no script. ela será realçada. ou todas. Na barra de ferramentas do painel Actions ou da janela Script. Para localizar um texto no script: 1. digite a nova seqüência de caracteres. 3. clique na ferramenta Find ou pressione Control+F (Windows) ou Command+F (Macintosh). 58 Escrevendo e editando o ActionScript 2.

Os erros de sintaxe são listados no painel Output (Saída). consulte “Compilando e exportando classes” na página 296. o caminho de classe global afetará esse processo. chaves ou colchetes em torno de um bloco de código está equilibrado. Selecione o painel Script (para que ele tenha o foco) e pressione Control+T (Windows) ou Command+T (Macintosh). Clique em Replace (Substituir) para substituir a seqüência de caracteres ou em Replace All (Substituir todos) para substituir todas as ocorrências da seqüência.5. selecione Check Syntax no menu pop-up. Algumas vezes. você pode verificar rapidamente o código do ActionScript sem sair do arquivo FLA. colchetes ([]) ou parênteses (()) no script. colchetes ou parênteses. Se o script atual chamar classes do ActionScript 2. Para verificar a sintaxe. Outros scripts possivelmente existentes no arquivo FLA não serão verificados. siga um destes procedimentos: ■ Clique em Check Syntax (Verificar sintaxe) na barra de ferramentas do painel Actions ou da janela Script. Pressione Control+' (aspas simples) no Windows ou Command+' (aspas simples) no Macintosh para realçar o texto entre chaves. você irá gerar erros — mesmo que o caminho de classe global esteja definido corretamente — pelo fato de o compilador não saber que essa classe está sendo compilada. você poderá repetir a pesquisa selecionando Find Again (Localizar novamente) no menu pop-up. N OT A ■ ■ Se você clicar em Check Syntax em um arquivo de classe externo do ActionScript 2. No painel Actions. elas serão compiladas e sua sintaxe também será verificada. siga um destes procedimentos: ■ ■ Clique entre chaves ({}). Você também pode verificar se um conjunto de parênteses. O script atual é verificado quando você verifica a sintaxe. Sobre a codificação no painel Actions e na janela Script 59 . Verificando sintaxe e pontuação Para determinar se o código escrito tem o desempenho planejado. publique ou teste o arquivo. Para obter mais informações sobre como compilar classes. Para verificar o equilíbrio da pontuação. Entretanto.0 na janela Script window. O realce ajuda a verificar se a pontuação de abertura possui a pontuação de fechamento correspondente. Após digitar uma seqüência de caracteres de pesquisa na ferramenta Find.0.

A caixa de diálogo Save As (Salvar como) é exibida. Selecione o script para exportação e escolha Export Script (Exportar script) no menu popup ou pressione Control+Shift+X (Windows) ou Command+Shift+X (Macintosh). consulte “Importando e exportando scripts” na página 60 e “Importar e exportar preferências” na página 61. Para importar um arquivo externo do AS: ■ Para importar um script externo para um script no qual esteja trabalhando no painel Script. Salve o arquivo do ActionScript (AS). Quando a janela Script é usada. 2. a exportação é desnecessária já que você pode salvar o arquivo do AS. selecione Import Script no menu File (Arquivo) ou pressione Control+Shift+I (Windows) ou Command+Shift+I (Macintosh). Para exportar um script do painel Actions: 1. 60 Escrevendo e editando o ActionScript 2. siga um destes procedimentos: ■ No painel Actions. Na janela Script. selecione Import Script (Importar script) no menu pop-up ou pressione Control+Shift+I (Windows) ou Command+Shift+I (Macintosh). Os dois procedimentos podem ser úteis para o compartilhamento do código entre diferentes aplicativos Flash e várias equipes de desenvolvimento.Importando e exportando scripts Você pode importar um script para o painel Actions ou para a janela Script e exportar os scripts para arquivos externos do ActionScript.0 . ■ Você pode exportar um script do painel Actions. em seguida. Para obter mais informações. coloque o ponto de inserção no local em que deseja posicionar a primeira linha do script externo e. O Flash oferece suporte a vários formatos de codificação de caracteres diferentes (incluindo Unicode) e você pode especificar o formato a ser usado ao importar e exportar scripts.

Importar e exportar preferências Você pode definir as preferências do ActionScript para especificar o tipo de codificação a ser usada na importação ou exportação de arquivos do ActionScript. você poderá alterar a preferência de codificação de exportação ou desativar o aviso nas preferências do ActionScript. Em geral. você pode incluir texto em inglês. japonês e francês no mesmo arquivo. Na caixa de diálogo Preferences (Edit > Preferences (Windows) ou Flash > Preferences (Macintosh)). UTF-8 é o formato Unicode de 8 bits. ao importar ou exportar arquivos do ActionScript em formato UTF-8.Suporte a Unicode para ActionScript O Flash 8 oferece suporte à codificação de texto Unicode para o ActionScript. Por exemplo. não funcionarão em um sistema em inglês. clique em ActionScript na lista Category. também chamada página de código tradicional. Por exemplo. Você pode selecionar UTF-8 Encoding (Codificação UTF-8) ou Default Encoding (Codificação padrão). conjuntos de caracteres de vários bytes). Se o texto dos scripts não tiver a aparência esperada quando você abrir ou importar um arquivo. o comando Test Movie (Testar filme) (consulte “Depurando scripts” na página 745) falha quando qualquer parte do caminho do arquivo SWF possui caracteres que não podem ser representados usando o esquema de codificação MBCS (Multibyte Character Sets. Se receber uma mensagem de aviso ao exportar arquivos do ActionScript. Em Open/Import (Abrir/importar). Sobre a codificação no painel Actions e na janela Script 61 . siga uma ou ambas as instruções: ■ 2. Se você estiver importando ou exportando arquivos na página de código tradicional do sistema. caminhos em japonês. Todas as áreas do aplicativo que usarem o exibidor externo estarão sujeitas a esta limitação. Isso significa que é possível incluir texto em diferentes idiomas em um arquivo do ActionScript. selecione UTF-8 Encoding para abrir ou importar usando a codificação Unicode ou selecione Default Encoding para abrir ou importar usando a forma de codificação do idioma usado no momento por seu sistema. Em Editing Options (Opções de edição). Para selecionar opções de codificação de texto para importação ou exportação de arquivos do ActionScript: 1. AT E N ÇÃ O Quando você usa um aplicativo em um idioma que não está em inglês em um sistema em inglês. use a preferência UTF-8. deverá usar a preferência Default Encoding. altere a preferência de codificação de importação. que funcionam em um sistema em japonês. Default Encoding é a forma de codificação suportada pelo idioma utilizado por seu sistema.

consulte as seções em “Sobre a codificação no painel Actions e na janela Script” na página 39. arrastá-lo para o painel Script e usar o Script Assist para ajudar na conclusão do script. selecione UTF-8 Encoding para salvar ou exportar usando a codificação Unicode ou selecione Default Encoding para salvar ou exportar usando a forma de codificação de idioma usada no momento por seu sistema. O modo Script Assist é ideal para usuários que não estão familiarizados com a escrita de seus próprios scripts ou que simplesmente apreciam a conveniência oferecida pela ferramenta. 62 Escrevendo e editando o ActionScript 2. 2. Sobre recursos do painel Actions Os recursos a seguir estão disponíveis apenas no painel Actions. que serão abordadas posteriormente nas próximas seções. Para obter informações sobre os recursos disponíveis apenas no painel Actions.■ Em Save/Export (Salvar/exportar). Para ativar ou desativar o aviso de codificação de exportação: 1. ajudando a adicionar mais facilmente uma interatividade simples ao aplicativo ou arquivo do Flash SWF.0 . Usado em conjunto com o painel Actions. Eles não estão disponíveis na janela Script. Embora o painel Actions tenha todos os recursos da janela Script. selecione Edit > Preferences (Windows) ou Flash > Preferences (Macintosh) e clique em Warnings (Avisos) na lista Category. Para obter informações sobre os recursos disponíveis na janela Script e no painel Actions. você pode selecionar um elemento de linguagem na caixa de ferramentas Actions (ou o comando Add (+) na barra de ferramentas). Marque ou desmarque Warn on encoding conflicts when exporting ActionScript files (Avisar em conflitos de codificação ao exportar arquivos do ActionScript). o Script Assist solicita a seleção de opções e a inserção de parâmetros. em vez de criar um novo script. consulte estas seções: ■ ■ ■ “Sobre o Script Assist” na página 62 “Prendendo scripts no painel Actions” na página 63 “Inserindo caminhos de destino” na página 65 Sobre o Script Assist O Script Assist solicita a inserção dos elementos de um script. No sistema de menu do Flash. Por exemplo. essa janela é usada para uma funcionalidade diferente. O painel Actions deve oferecer suporte a algumas funcionalidades relacionadas ao arquivo FLA.

Sobre recursos do painel Actions 63 .No exemplo a seguir. Prender um script significa que você mantém o local do código aberto no painel Actions e clica facilmente entre cada script aberto. Prendendo scripts no painel Actions Se você não centralizar o código de um arquivo FLA em um local (discutido em “Organizando o código ActionScript” na página 34) ou se estiver usando comportamentos (consulte “Sobre comportamentos” na página 65). o script associado ao local atual na timeline está no Frame (Quadro) 1 da camada denominada Cleanup (Limpeza). a função gotoAndPlay foi adicionada ao painel Script. Para prender um script: 1. O Script Assist exibe todos os prompts necessários à utilização dessa função do ActionScript — neste caso. Posicione o ponteiro do mouse na Timeline para que o script apareça em uma guia na parte inferior esquerda do painel Script no painel Actions. Dois outros scripts estão presos: um no Frame 1 e o outro no Frame 15 da camada Intro (Introdução). você poderá prender vários scripts no painel Actions para facilitar a passagem por eles. (ponto). Esse script também está preso (ele é mostrado na guia mais à direita). o painel Script provavelmente estará exibindo um script preso. Você pode mover-se entre os scripts presos clicando nas guias ou usando atalhos de teclado. Mover-se por scripts presos não altera sua posição atual na timeline. DICA Se o conteúdo no painel Script não mudar para refletir o local selecionado na timeline. Clique na guia à esquerda localizada na parte inferior esquerda do painel Script para exibir o ActionScript associado ao seu local na timeline. o tipo e o número do quadro. o nome da cena. Como você pode ver na figura a seguir. como Control+Shift+. (A guia na extremidade esquerda sempre segue sua localização na timeline). vários scripts estão abertos no painel Actions e você pode clicar em cada guia para mover-se entre eles. Na figura a seguir.

no Macintosh. (ponto) Control+Shift+. pressione Control+. Selecione Close Script (Fechar script) ou Close All Scripts (Fechar todos os scripts) no menu pop-up (na parte superior direita do painel Actions).(menos) tecla de atalho no Macintosh Command+= Command+Command+Shift+.(sinal de menos) no Windows ou Command+.2. Selecione Pin Script (Prender script) no menu pop-up (na parte superior direita do painel Actions). clique (Macintosh) na guia e selecione Pin Script (Prender script). pressione Control+= (sinal de igual) no Windows ou Command+= no Macintosh. Command+Shift+. (vírgula) Control+Shift+.0 . Com o ponteiro do mouse focalizado no painel Script. clique no ícone de tachinha à direita da guia. pressionando Control. ■ ■ Para liberar um ou mais scripts. Clique com o botão direito do mouse (Windows) ou.(sinal de menos) Control+Shift+. clique (Macintosh) em uma guia e selecione Close Script (Fechar script) ou Close All Scripts (Fechar todos os scripts). Com o ponteiro do mouse focalizado no painel Script. siga um destes procedimentos: ■ Se um script preso aparecer em uma guia na parte inferior esquerda do painel Script no painel Actions. Siga um destes procedimentos: ■ ■ Clique no ícone de tachinha à direita da guia. Clique com o botão direito (Windows) ou. ■ ■ ■ Para usar atalhos de teclado com scripts presos: ■ É possível usar os seguintes atalhos de teclado para trabalhar com scripts presos: Ação Prender script Liberar script Mover o foco para a guia da direita Mover o foco para a guia da esquerda Liberar todos os scripts tecla de atalho no Windows Control+= (sinal de igual) Control+. Command+Shift+- 64 Escrevendo e editando o ActionScript 2. pressionando Control.

Os comportamentos podem ser usados de modo conveniente na criação do aplicativo Flash — como uma forma de evitar a escrita do ActionScript ou. Selecione o destino na lista de destinos disponíveis. Para inserir um caminho de destino: 1. inversamente. O caminho é anexado à ação. botões e outras instâncias de símbolos. Sobre comportamentos Os comportamentos são funções predefinidas do ActionScript que você pode anexar a objetos no documento do Flash sem precisar criar o código ActionScript. Você pode definir um caminho de destino absoluto ou relativo. 2. Sobre comportamentos 65 . Clique em OK. Selecione e posicione o ponteiro em uma ação no script. além de uma funcionalidade que permite arrastar clipes de filme. Siga um destes procedimentos: ■ ■ 3. disponível no painel Actions. A ferramenta Target Path (Caminho de destino). Selecione a opção de caminho Absolute (Absoluto) ou Relative (Relativo). carregamento de arquivos SWF e JPEGs externos. A caixa de diálogo Insert Target Path (Inserir caminho de destino) é exibida. Clique em Target Path na barra de ferramentas do painel Actions. Para aplicar ações a instâncias em uma timeline. solicita que você insira o caminho de destino da ação selecionada no script. como navegação por quadros. Eles oferecem uma funcionalidade predefinida do ActionScript. controle da ordem de empilhamento dos clipes de filme. como um meio de aprender sobre o funcionamento do ActionScript em determinadas situações.Inserindo caminhos de destino Várias ações criadas no script afetarão clipes de filme. defina um caminho de destino — o endereço da instância que você deseja especificar como destino. 4. 5. Insira manualmente o caminho da instância de destino.

Sobre as configurações de publicação do ActionScript Você pode editar o ActionScript de duas maneiras. e não em um arquivo de script externo. Você também pode definir o caminho de classe do documento atual. Você pode editar o ActionScript incorporado a um documento do Flash usando o painel Actions. em seguida. externo ao documento do Flash. como mostrado no exemplo a seguir: O comportamento é adicionado ao objeto e exibido no painel Actions. Edite as configurações de publicação do documento do Flash para alterar a versão do ActionScript que será usada na publicação do documento. seleciona o comportamento desejado. Como o painel Actions e a janela Script são basicamente duas exibições diferentes que utilizam o mesmo editor do ActionScript.Eles somente estão disponíveis quando você trabalha em um documento do Flash. Para obter mais informações sobre como definir um caminho de classe em nível de documento ou no nível global. usando a janela Script.0 . um clipe de filme ou um botão. Você também pode editar o ActionScript localizado em um arquivo de script separado. você seleciona um objeto de ativação em seu documento. ignorando o caminho de classe global do ActionScript. consulte “Modificando o caminho de classe” na página 68. Em geral. as configurações e as preferências do ActionScript no Flash aplicam-se a ambos. 66 Escrevendo e editando o ActionScript 2. Para obter mais informações sobre como modificar as configurações de publicação do ActionScript. seleciona o botão Add (Adicionar) no painel Behaviors (Comportamentos) para exibir os comportamentos disponíveis e. consulte “Modificando as configurações de publicação do ActionScript” na página 67.

0 e o caminho de classe é herdado da configuração do caminho de classe global. Para obter mais informações. em vez de no 2.0 está selecionado por padrão.0. Selecione File (Arquivo) > Publish Settings (Configurações de publicação) e clique na guia Flash. 2.Modificando as configurações de publicação do ActionScript Por padrão. O compilador do ActionScript 2.0. Se precisar alterar a versão do ActionScript ou especificar um caminho de classe em nível de documento. Para solucionar esse problema. quando você publica um documento do Flash. reescreva o código usando a notação de ponto (. O ActionScript 2. Selecione a versão do ActionScript no menu pop-up. Para alterar a versão do ActionScript: 1. parentClip/ testMC:varName= "olá mundo") gera erros de compilação quando você seleciona o ActionScript 2. a versão do ActionScript é definida como 2.0 compila todo o código ActionScript 1. edite as configurações de publicação.).0 como a versão do ActionScript. altere essa configuração antes de publicar seu documento do Flash. Use o botão Settings (Configurações) (próximo ao menu pop-up da versão do ActionScript) para modificar o caminho de classe em nível de documento. Sobre as configurações de publicação do ActionScript 67 . em vez de barras. ou selecione o compilador do ActionScript 1.0. consulte “Modificando o caminho de classe” na página 68. exceto: a sintaxe de barra (/) usada para indicar caminhos de clipes de filme (por exemplo.0. Se criar seus scripts no ActionScript 1.

■ Para excluir um diretório do caminho de classe.0. você também pode definir um caminho de classe em nível de documento. Ou então. Se você acidentalmente excluir esse caminho de classe. 68 Escrevendo e editando o ActionScript 2. navegue até o diretório que deseja adicionar e clique em OK. Clique em ActionScript na lista Category e. ■ Para editar um diretório de caminho de classe existente. Para modificar o caminho de classe global: 1.0). clique em Browse to Path (Navegar até caminho). selecione o caminho na lista Classpath. O Flash utiliza esse caminho de classe para acessar as classes internas. selecione o caminho na lista Classpath e clique em Remove from Path (Remover do caminho).0 . Siga um destes procedimentos: ■ 2. Isso será útil quando você criar suas próprias classes e desejar substituir o caminho de classe global do ActionScript definido nas preferências do ActionScript. Para adicionar um diretório ao caminho de classe. A alteração do caminho de classe nas configurações de publicação somente será aplicada ao arquivo do Flash atual. você pode adicionar caminhos de diretório absolutos (por exemplo./my_classes ou ". digite o caminho desejado e clique em OK. Selecione Edit > Preferences (Windows) ou Flash > Preferences (Macintosh) para abrir a caixa de diálogo Preferences. Clique duas vezes na nova linha. Uma outra alternativa é clicar em Add New Path (+) (Adicionar novo caminho) para adicionar uma nova linha à lista Classpath (Caminho de classe). .. C:/my_classes) e caminhos de diretório relativos (por exemplo. Você pode usar a caixa de diálogo Preferences para modificar o caminho de classe global. clique duas vezes no caminho na lista Classpath.Modificando o caminho de classe Ao usar o ActionScript 2. 3. Em ambos os casos. Para modificar a configuração do caminho de classe em nível de documento. navegue até o diretório que deseja adicionar e clique em OK. restabeleça-o adicionando $(LocalData)/Classes como um novo caminho de classe. em seguida. clique em ActionScript 2. digite um caminho relativo ou absoluto e clique em OK. use a caixa de diálogo Publish Settings para o arquivo FLA.0 Settings (Configurações do ActionScript 2."). N OT A Não exclua o caminho de classe global absoluto (consulte Caminhos de classe globais e em nível de documento). clique em Browse to Path.

3.Para modificar o caminho de classe em nível de documento: 1. selecione o caminho na lista Classpath. Para adicionar um diretório ao caminho de classe. clique em Browse to Path. Ou então. navegue até o diretório que deseja adicionar e clique em OK. Clique na guia Flash. Clique em Settings próximo ao menu pop-up ActionScript Version (Versão do ActionScript). Arquivos de configuração instalados com o Flash 8 Quando você instala o Flash Basic 8 ou o Flash Professional 8. Você pode utilizar esses arquivos para definir determinadas configurações no ambiente de criação. selecione o caminho na lista Classpath e clique em Remove from Path. Selecione File > Publish Settings para abrir a caixa de diálogo Publish Settings. Macintosh: Hard Disk/Users/usuario/Library/Application Support/Macromedia/Flash 8/ idioma/Configuration/Classes. ■ Para excluir um diretório do caminho de classe. 2. Para obter mais informações sobre como definir e modificar caminhos de classe. Caminhos típicos da pasta: ■ Windows: Hard Disk\Documents and Settings\usuario\Local Settings\Application Data\Macromedia\Flash 8\idioma\Configuration\Classes. ■ Para editar um diretório de caminho de classe existente. digite o caminho desejado e clique em OK. vários arquivos e pastas de configuração relacionados ao ActionScript são incluídos no sistema. modifique cuidadosamente e salve um backup dos arquivos alterados. ■ Sobre as configurações de publicação do ActionScript 69 . Siga um destes procedimentos: ■ 4. consulte “Sobre a definição e a modificação do caminho de classe” na página 255. clique em Browse to Path. Uma outra alternativa é clicar em Add New Path (+) para adicionar uma nova linha à lista Classpath. Clique duas vezes na nova linha. Como sempre. navegue até o diretório que deseja adicionar e clique em OK. Pasta de classes do ActionScript Contém todas as classes do ActionScript (arquivos do AS) incluídas no Flash Professional 8 ou no Flash Basic 8. digite um caminho relativo ou absoluto e clique em OK. clique duas vezes no caminho na lista Classpath.

localizado em: Windows: Hard Disk\Documents and Settings\usuario\Local Settings\Application Data\Macromedia\Flash 8\idioma\Configuration\ActionsPanel\. ■ Arquivo de configuração ActionsPanel. consulte o arquivo readme na pasta Classes. Pasta de inclusão de classes Contém todos os arquivos de inclusão globais do ActionScript e está localizada em: ■ Windows: Hard Disk\Documents and Settings\usuario\Local Settings\Application Data\Macromedia\Flash 8\idioma\Configuration\Include. Macintosh: Hard Disk/Users/usuario/Library/Application Support/Macromedia/Flash 8/ idioma/Configuration/Include.0 . Para obter mais informações sobre arquivos do ASO. usado nos dois exibidores e em arquivos do ASO (aso). Para obter mais informações sobre a organização desse diretório. ■ Arquivo de configuração AsColorSyntax. Ela também contém um diretório para o pacote (mx).xml É o arquivo de configuração para realce da sintaxe por cores do código ActionScript.A pasta Classes é organizada em pastas contendo diretórios com as classes do Flash Player 7 (FP7) e do Flash Player 8 (FP8). ■ ■ 70 Escrevendo e editando o ActionScript 2. consulte “Usando arquivos ASO” na página 298. Macintosh: Hard Disk/Users/usuario/Library/Application Support/Macromedia/Flash 8/ idioma/Configuration/ActionsPanel/ActionScript_1_2. Macintosh: Hard Disk/Users/usuario/Library/Application Support/Macromedia/Flash 8/ idioma/Configuration/ActionsPanel.xml Inclui o arquivo de configuração das referências do código ActionScript e está localizado em: ■ Windows: Hard Disk\Documents and Settings\usuario\Local Settings\Application Data\Macromedia\Flash 8\idioma\Configuration\ActionsPanel\ActionScript_1_2.

0 para definir classes ou interfaces devem ser armazenados como arquivos de script externos. Como a proposta ECMA-4 ainda não se tornou padrão e está em processo de alteração. O ActionScript 2. ele permite escrever scripts que atendem melhor aos padrões usados em outras linguagens orientadas a objeto.0 também permite que você declare o tipo de objeto de uma variável ao criá-la (consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85) e fornece erros de compilador bem aprimorados (consulte Apêndice A. O ActionScript 2.0 deve interessar principalmente a desenvolvedores de Flash intermediários ou avançados autores de aplicativos que precisam da implementação de classes e subclasses.0 oferece suporte a todos os elementos padrão da linguagem ActionScript. na página 809). programação orientada a objeto) no ActionScript 2.0 baseia-se nessa especificação com menos rigidez. com uma única classe definida em cada script.CAPÍTULO 3 Sobre o ActionScript Os recursos OOP (object-oriented programming. É possível importar pacotes (coleções de arquivos de classe em um diretório) usando caracteres curinga. ou seja.html). “Mensagens de erro”.0 tem como base a proposta ECMAScript 4 desenvolvidas no momento pela ECMA TC39-TG1 (consulte www.mozilla. ■ 71 .0 incluem os seguintes pontos: ■ 3 Scripts que usam o ActionScript 2. O ActionScript 2. As principais considerações sobre o ActionScript 2. como Java. Você pode importar arquivos de classes individuais implicitamente (armazenando-os em um local especificado por caminhos de pesquisa globais ou específicos de documentos e depois utilizando-os em um script) ou explicitamente (usando o comando import).org/js/language/es4/index. o ActionScript 2. classes e interfaces não podem ser definidas no painel Actions (Ações).

Avisos e erros do compilador Os dois recursos anteriores (modelo OOP e atribuição estrita de tipos de dado) permitem que a ferramenta de criação e o compilador forneçam mensagens de erro e avisos do compilador que ajudam a localizar falhas nos aplicativos de forma mais rápida que anteriormente no Flash. que não requer a interação do usuário. “Classes”.0. A T E NÇ Ã O A configuração padrão de publicação para os novos arquivos criados no Flash 8 é ActionScript 2. Atribuição estrita de tipos de dados O ActionScript 2. você pode continuar usando a sintaxe do ActionScript 1.0.0 para usar a sintaxe do ActionScript 2. Se você planeja modificar um arquivo FLA existente com ActionScript 1. consulte o Capítulo 7. que parecerão familiares se você já tiver programado com Java. Por exemplo. O ActionScript 2. verifique se o arquivo especifica ActionScript 2.0 é uma “formalização sintática” do método de encadeamento de protótipo usado em versões anteriores do Macromedia Flash para criar objetos e estabelecer herança. parâmetros de função e tipos de retorno de função. por exemplo. O que é ActionScript Os principais recursos do ActionScript 2. Programação orientada a objeto) O recurso primário do ActionScript 2. Com o ActionScript 2.0 são suportados pelo Flash Player 6 e versões posteriores. uma animação simples.■ Os aplicativos desenvolvidos com o ActionScript 2. Caso contrário. especialmente se estiver realizando um trabalho mais tradicional do Flash. apesar de o Flash não gerar necessariamente erros de compilador. interface e packages. na página 239.0 é um modelo familiar para a criação de programas orientados a objeto.0.0 em suas configurações de publicação. como class.0 incluem: Modelo familiar OOP (Object-Oriented Programming.0 para escrever programas orientados a objeto no Flash.0 implementa vários conceitos e palavraschave orientados a objeto. O modelo OOP fornecido pelo ActionScript 2.0. o código a seguir declara uma variável chamada userName de tipo String (um tipo de dados interno do ActionScript. ou classe).0 também permite especificar explicitamente os tipos de dados para variáveis.0. 72 Sobre o ActionScript . é possível criar classes personalizadas e estender as classes internas do Flash. var userName:String = "". seu arquivo será compilado incorretamente. Embora a Macromedia recomende o uso do ActionScript 2. Para obter mais informações sobre como usar o ActionScript 2.

Entretanto. em vez de adicioná-lo ao arquivo FLA.0. você deve decidir como organizará os arquivos associados.Ao usar o ActionScript 2. Nesse caso. que pode ser vantajoso para o desenvolvimento de seu aplicativo. mas nem todos os documentos utilizam classes. é mais eficiente incluir o ActionScript dentro do documento.0 73 .0. Algumas vezes. Caso contrário. Em alguns casos.0.0 Ao iniciar um novo documento ou aplicativo no Flash. em geral é mais produtivo usar classes ou arquivos de código externos para organizar o ActionScript. tente colocar todo o código naTimeline.0 e o ActionScript 2. Esse é o padrão para arquivos criados em Flash MX 2004 e Flash 8. Você pode usar classes em alguns projetos. Sobre a opção entre o ActionScript 1. Em geral. por exemplo. O uso de classes para armazenar funcionalidade não é a mais fácil ou melhor solução para aplicativos pequenos ou arquivos FLA simples.0 e começar a reescrevê-lo em ActionScript 2. Se estiver criando um arquivo SWF destinado a uma versão antiga do Flash Player. Sobre a opção entre o ActionScript 1. por exemplo. Ou então.0. se você abrir um arquivo FLA antigo que usa ActionScript 1. vários exemplos pequenos na documentação não utilizam classes. Isso não significa que você deve usar necessariamente o ActionScript 1. O ActionScript 2.0 permite o uso de uma abordagem orientada a objeto para o desenvolvimento de aplicativos através de um conjunto adicional de elementos de linguagem. O ActionScript 2. você poderá aplicar esse conhecimento a outras linguagens a serem aprendidas no futuro.0. você se sentirá familiarizado com o ActionScript caso tenha encontrado outra linguagem baseada na mesma estrutura e padrões de sintaxe. um aplicativo de dispositivo móvel. não é possível escolher a versão do ActionScript a ser usada. o que torna a linguagem mais fácil e valiosa para ser aprendida. é mais fácil manter todo o código ActionScript no arquivo FLA. e evite incluir código em instâncias (como botões ou clipes de filme) de um arquivo FLA.0 e o ActionScript 2. verifique se as configurações de publicação para o arquivo FLA especificam ActionScript 2. no menor número de quadros possível. seu arquivo FLA não será compilado corretamente e não serão gerados erros. Por exemplo. use o ActionScript 1. Quando você cria um projeto pequeno. que é compatível com o Flash Player no caso de vários dispositivos. ao criar aplicativos ou arquivos FLA complexos. Você pode optar por incluir o código no arquivo FLA usando o ActionScript 2.0.0 com sua atribuição estrita de tipos de dados e seus novos métodos e propriedades. Por exemplo. em vez de inseri-lo em uma classe importada.0 também oferece uma sintaxe que segue os padrões de outras linguagens de programação. altere suas configurações de publicação para ActionScript 2.

0 na publicação de aplicativos. ou 8 ao trabalhar com o ActionScript 2.0. como manter-se consistente com a distinção entre maiúsculas e minúsculas. Portanto. 74 Sobre o ActionScript . se você compilar o arquivo SWF com Configurações de Publicação definidas para o Flash Player 7 ou 8 e o ActionScript 1. Várias delas. 7. As anotações de tipos de dados (tipos de dados estritos) são impostas durante a compilação para o Flash Player 7 e 8 quando você publica as configurações definidas para o ActionScript 2. usar a conclusão de código. Se planeja atualizar o aplicativo em versões futuras do Flash ou torná-lo maior e mais complexo. use o ActionScript 2. você pode usar o Flash Player 6. melhorar a legibilidade.0.0 e classes para facilitar a atualização e a modificação do aplicativo. somente no Flash Player.0. lembre-se de seguir as práticas recomendadas. o código funcionará desde que não use classes do ActionScript 2.0.Independentemente da versão do ActionScript. evitar palavras-chave para nomes de instância e manter uma convenção de nomeação consistente. portanto. o Flash irá impor a distinção entre maiúsculas e minúsculas.0 com configurações de publicação definidas para o Flash Player 6 e o ActionScript 1. aplicam-se às duas versões.0. Não há distinção entre maiúsculas e minúsculas no código.0 realiza a compilação para o bytecode do ActionScript 1. Noções básicas do ActionScript e do Flash Player Se você compilar um arquivo SWF que contenha o ActionScript 2. O ActionScript 2.

números. . . . . . . Capítulo 5. . . . . . . . o Capítulo 6. . . . . . . “Funções e métodos” demonstra como usar funções e métodos na linguagem ActionScript. . . . . . . . . . Neste capítulo. . O uso de dados é geralmente essencial durante a criação de aplicativos ou sites da Web. . . você também aprenderá a trabalhar com dados em um arquivo FLA e verá os tipos de dados com os quais é possível trabalhar. . .116 4 Sobre dados Dados referem-se a números. . . . . . . . . . . . valores booleanos (true e false) etc. . . . . . . . . . . objetos (como clipes de filme). . . . classes internas do ActionScript etc. . . . . . . . . . . . . . . . . . . .114 Sobre a conversão . “Fundamentos da sintaxe e da linguagem. você também aprenderá sobre os tipos de dados do Flash e como usá-los. . . . . . . 75 Sobre tipos de dados. . . . . . . . . . . . . . . . . . . consulte estas seções: Sobre dados . . . . . . . . . . . . . . . . . Por exemplo. No próximo capítulo. . . . . . . . . . . . 75 . . . . . . . . . . . . . . . você pode exibir as informações em campos de texto ou componentes ou exibir imagens em instâncias de clipe de filme. . . . . . . seqüências de caracteres e outras informações que você pode manipular no Flash. . . . . . . . . . . . . Neste capítulo. . . . . . . . . . . .CAPÍTULO 4 Dados e tipos de dados Este capítulo é o primeiro de vários que descrevem e demonstram alguns dos conceitos fundamentais do ActionScript. . . Você também pode usar dados ao criar gráficos avançados e animação gerada com script e possivelmente terá de manipular os valores usados para controlar seus efeitos. . . . . . . . . . . . Alguns dos tipos de dados mais comuns incluem seqüências de caracteres (como nomes e partes de texto). . . . . Você pode armazenar dados em um banco de dados e representar as informações de diversas maneiras em um arquivo SWF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Você praticará algumas técnicas básicas de codificação para aprender a criar aplicativos complexos. . . . . . . . . . . . serviços da Web. . . . . . . . . . . 91 Organizando dados em objetos . . . . . . . . . . . . . . . . . . Para obter mais informações sobre dados e tipos de dados. .” você descobrirá como usar a sintaxe do ActionScript e instruções de formulário. . . . . . . Em seguida. . . 76 Sobre variáveis . . . . . . . É possível definir dados em variáveis no Flash ou carregar dados de sites ou arquivos externos usando XML. .

O ActionScript contém vários tipos de dados básicos que você provavelmente usará com freqüência em seus aplicativos. todos os tipos de dados e classes são totalmente definidos em ActionScript 2. é possível atribuir tipos de dados a variáveis ao declará-las. consulte “Sobre variáveis” na página 91.0 define vários tipos de dados comumente usados. você usa diversos tipos de dados. Consulte a tabela em “Sobre tipos de dados primitivos e complexos” na página 77 para obter mais informações. consulte “Sobre classes de nível superior e internas” na página 302. Number(). Isso pode ser feito com os operadores instanceof e typeof (consulte “Sobre a determinação do tipo de dados” na página 90). como Array e Date. instâncias de objetos e definições de funções para atribuir o tipo de dados com o qual está trabalhando. No ActionScript 2. Os dados são armazenados em uma variável. Object(). Os tipos de dados atribuídos podem ser qualquer um dos tipos básicos ou representar uma classe personalizada criada por você. Além disso. O ActionScript 2. Você usa tipos de dados ao criar variáveis. Para obter informações sobre variáveis. na página 239. consulte “Sobre tipos de dados primitivos e complexos” na página 77. Para obter mais informações. Os tipos de dados descrevem o tipo de valor que uma variável ou um elemento do ActionScript pode conter. 76 Dados e tipos de dados . Você também pode criar classes personalizadas para seus aplicativos. Ao criar um código ActionScript. talvez você precise determinar os tipos de dados de uma expressão ou variável para entender seu comportamento. Para obter mais informações sobre como criar classes personalizadas. Para obter informações sobre variáveis. que são consideradas tipos de dados complexos ou de referência. Para obter mais informações sobre tipos de dados complexos e de referência. consulte “Sobre variáveis” na página 91.0). Boolean(). String(). consulte “Sobre tipos de dados” na página 76. Sobre tipos de dados Um tipo de dados descreve um dado e os tipos de operações que podem ser executados nele. Toda classe definida com o uso de declarações de classe é considerada um tipo de dados. consulte o Capítulo 7.0 Language Reference (Referência da linguagem ActionScript 2.Para obter informações sobre tipos de dados. Para obter mais informações sobre classes básicas e outras classes internas.0. Uma variável atribuída a um tipo de dados pode armazenar somente um valor contido no conjunto de valores desse tipo de dados. Você pode converter um tipo de dados em outro durante a execução usando uma das seguintes funções de conversão: Array(). O ActionScript também contém classes básicas. Ao depurar scripts. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85. “Classes”.

Function e XML. Date. Error. ■ No Windows. datatypes. Os tipos de dados que definem conjuntos de valores complexos incluem Array. null. consulte “Tipo de dados MovieClip” na página 80. Complexo. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DataTypes. ■ Sobre tipos de dados primitivos e complexos Os diversos valores de tipos de dados podem ser divididos em duas categorias principais: primitivos ou complexos. navegue até HD Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/DataTypes. as variáveis que contêm tipos de dados primitivos se comportam de maneira diferente das que contêm tipos de dados complexos. Para obter mais informações.0 Language Reference. MovieClip Sobre tipos de dados 77 . consulte “Tipo de dados Boolean” na página 79. na pasta Samples do seu disco rígido. Para obter mais informações sobre esses tipos de dados complexos. isso significa que as operações executadas em tipos de dados primitivos geralmente são mais rápidas e eficientes do que as executadas em tipos de dados complexos. Nenhum outro valor é válido para variáveis desse tipo. eles são chamados tipos de dados de referência. que mostra como usar os tipos de dados em um aplicativo. O valor padrão de uma variável Boolean declarada. O tipo de dados MovieClip permite controlar símbolos de clipes de filme com os métodos da classe MovieClip. Os valores complexos pertencem ao tipo de dados Object ou a um tipo que se baseia no tipo de dados Object. mas não inicializada é false. String e undefined. Um valor complexo (ou tipo de dados complexo) é um valor que não é primitivo e faz referência aos valores primitivos. Em geral. Para obter mais informações. Para obter mais informações.Você pode localizar um arquivo de origem de exemplo. No Macintosh. Os seguintes tipos de dados definem um conjunto de um ou mais valores primitivos: Boolean. Um valor primitivo (ou tipo de dados primitivo) é um valor que o ActionScript armazena no nível mais baixo de abstração.fla. Number. O ActionScript possui os seguintes tipos de dados básicos que você pode usar em seus aplicativos: Tipo de dados Boolean Descrição Primitivo. O tipo de dados Boolean consiste em dois valores: true e false. consulte “Usando variáveis em um projeto” na página 111. consulte as entradas correspondentes em ActionScript 2. Em determinadas situações.

Complexo. Esse tipo de dados pode representar inteiros. consulte “Tipo de dados Object” na página 83. Para obter mais informações.Tipo de dados null Descrição Primitivo. ActionScript 2. consulte “Tipo de dados String” na página 83.MIN_VALUE (muito baixo). O tipo de dados null contém o valor null. O tipo de dados Number pode armazenar desde um valor Number. Para obter mais informações. cujo padrão é undefined. Esse valor significa nenhum valor — ou seja. Uma operação em um valor String retorna uma nova instância da seqüência de caracteres. Para obter mais informações. Essa classe serve como base para todas as definições de classe do ActionScript e permite organizar os objetos uns dentro dos outros (objetos aninhados). consulte “Tipo de dados Void” na página 85. O tipo de dados String representa uma seqüência de caracteres de 16 bits que pode incluir letras. Para obter mais informações. Void é um tipo de dados complexo que faz referência ao tipo de dados primitivo Void. Somente é possível atribuir o valor undefined às variáveis pertencentes à classe Object. O tipo de dados Object é definido pela classe Object. números e sinais de pontuação. Complexo. consulte “Tipo de dados undefined” na página 85.0 Language Reference e “Tipo de dados Number” na página 82. Para obter mais informações. o número é armazenado como um inteiro. usando o formato UTF-16. Você pode atribuir o valor null em inúmeras situações para indicar que não há um valor atribuído a uma propriedade ou a uma variável. inclua um ponto decimal no número. Para obter mais informações. O tipo de dados null é o padrão de todas as classes que definem tipos de dados complexos. Primitivo. Primitivo. uma falta de dados. consulte. Primitivo. O tipo de dados Void contém somente um valor: void. Para armazenar um número de ponto flutuante. Number Object String undefined Void 78 Dados e tipos de dados . inteiros sem sinal e números de ponto flutuante.MAX_VALUE (muito alto) até Number. O tipo de dados undefined contém um valor: undefined. Uma exceção a essa regra é a classe Object. consulte “Tipo de dados null” na página 81. As seqüências de caracteres são armazenadas como caracteres Unicode. Esse é o valor padrão das instâncias da classe Object. Use esse tipo de dados para designar funções que não retornam um valor. Sem o ponto decimal.

Você pode localizar um arquivo de origem de exemplo. my_lv. ■ Tipo de dados Boolean Um valor booleano é true ou false.monthNames).controls.helpexamples. userNameEntered e isPasswordCorrect e. var submit_button:mx. var password_ti:mx.load("http://www.Button. // Adicionar dois componentes TextInput. // Atribuir um tipo de dados estrito às três instâncias do componente var userName_ti:mx. } }.txt"). O ActionScript também converte os valores true e false em 1 e 0 quando apropriado. rastrear monthNames if (sucess) { trace(my_lv.Label. O exemplo a seguir verifica se os usuários inserem valores em duas instâncias do componente TextInput. datatypes.fla. navegue até HD Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/DataTypes. na pasta Samples do seu disco rígido.TextInput. //sucess é um valor booleano my_lv.controls. que mostra como usar os tipos de dados em um aplicativo. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DataTypes. Consulte os comentários no exemplo de código para obter mais detalhes.controls.controls. No Macintosh. O exemplo a seguir carrega um arquivo de texto em um arquivo SWF e exibe uma mensagem no painel Output (Saída) caso o arquivo de texto não seja carregado corretamente ou os parâmetros se ele for carregado com êxito. var my_lv:LoadVars = new LoadVars(). Os valores booleanos são freqüentemente usados com operadores lógicos em instruções do ActionScript que fazem comparações para controlar o fluxo de um script. var welcome_lbl:mx.TextInput. se ambas resultarem em true. um componente Label e um componente Button no Stage. uma mensagem de boas-vindas será atribuída à variável String titleMessage. rastrear uma mensagem } else { trace("unable to load text file"). Sobre tipos de dados 79 . //se sucess for false.com/flash/params. //Ocultar o rótulo welcome_lbl. Duas variáveis Boolean são criadas.visible = false.onLoad = function(sucess:Boolean) { //se sucess for true. ■ No Windows.

text. } }.visible = true. e o valor retornado deve ser numérico. Tipo de dados MovieClip Clipes de filme são símbolos que podem reproduzir animações em um aplicativo Flash. Trabalhando com clipes de filme no Stage startDrag() O exemplo a seguir chama os métodos e getURL() para instâncias diferentes de clipe de filme existentes no Stage: my_mc.addEventListener("click". A instância especificada como destino deve ser um clipe de filme. consulte “Usando funções no Flash” na página 227 e “Sobre operadores lógicos” na página 205. Para obter mais informações.startDrag(true). btnListener). // Quando o Button é clicado. 80 Dados e tipos de dados .getURL("http://www. var isPasswordCorrect:Boolean = (password_ti. basta chamar os métodos da classe MovieClip com o operador ponto (. Eles são os únicos tipos de dados que fazem referência a elementos gráficos. Os métodos da classe MovieClip não são chamados com um construtor. welcome_lbl. if (userNameEntered && isPasswordCorrect) { var titleMessage:String = "Welcome " + userName_ti. O segundo exemplo retorna a largura do clipe de filme chamado my_mc no Stage. Você pode criar uma instância de clipe de filme no Stage (Palco) ou dinamicamente.text + "!". btnListener. //exibir o rótulo welcome_lbl.// Criar um objeto ouvinte. } trace(getMCWidth(my_mc)). procura um nome de usuário e uma senha. var loadListener:Object = new Object().length > 0). submit_button.). parent_mc.macromedia.com/support/" + product). que é usado com o componente Button._width.text == "vertigo"). Em seguida. O tipo de dados MovieClip permite controlar símbolos de clipes de filme com os métodos da classe MovieClip. var userNameEntered:Boolean = (userName_ti.text = titleMessage.click = function(evt:Object) { // Verifica se o usuário insere pelo menos um caractere nas instâncias do componente TextInput // e retorna um valor true/false booleano. function getMCWidth(target_mc:MovieClip):Number { return target_mc.

square_mc.createEmptyMovieClip("image_mc". use MovieClip. square_mc. 100).createEmptyMovieClip() .createEmptyMovieClip("square_mc". Tipo de dados null O tipo de dados null possui apenas um valor: null.lineTo(200.onPress = function() { this.com/flash/images/image1.lineTo(100.lineStyle(1. square_mc.createEmptyMovieClip(). image_mc. }. square_mc. Por exemplo.stopDrag().startDrag(). 100). consulte Capítulo 11. square_mc. this.loadMovie("http://www.lineTo(200. square_mc.jpg"). mas não contém mais um valor Sobre tipos de dados 81 .lineTo(100. square_mc.onRelease = function() { this. mas ainda não recebeu um valor Para indicar que uma variável existe. é possível atribuir o valor null nas seguintes situações: ■ ■ Para indicar que uma variável existe. você pode criar uma galeria de imagens com um grande número de miniaturas que deseja organizar no Stage. 1). Interface de programação de aplicativos) Drawing para desenhar um retângulo. this. 200). Esse valor significa nenhum valor — ou seja.beginFill(0xFF0000.helpexamples. Por exemplo. uma falta de dados. Para criar um clipe de filme dinamicamente. 9). square_mc.endFill(). square_mc.moveTo(100. como mostra o seguinte exemplo: // Cria um clipe de filme para armazenar o recipiente. Com MovieClip. 100). 0x000000. }. Para obter mais informações. Os manipuladores de eventos e os métodos startDrag() e stopDrag() da classe MovieClip são adicionados para tornar o retângulo arrastável. 100).Criando clipes de filme dinamicamente O uso do ActionScript para criar clipes de filme dinamicamente é útil quando você não deseja criar manualmente clipes de filme no Stage ou anexá-los a partir da biblioteca. 100). square_mc. O segundo exemplo cria um clipe de filme chamado square_mc que usa a API (Application Programming Interface.0 Language Reference. Você pode atribuir o valor null em inúmeras situações para indicar que ainda não há valor atribuído a uma propriedade ou a uma variável. 200). “Trabalhando com clipes de filme”. é possível criar um aplicativo usando apenas o ActionScript. na página 369 e a entrada %{MovieClip}% em ActionScript 2. // Carrega uma imagem em image_mc.

getBytesTotal()) * 100). e o máximo é aproximadamente 1. } Tipo de dados Number O tipo de dados Number é um número de dupla precisão e ponto flutuante. O exemplo a seguir demonstra como usar null para testar se os campos de formulário têm foco de formulário: if (Selection. O exemplo a seguir usa o método sqrt() (square root . bottles = 10 + Math.random() * 7).floor(Math. subtração (-).getBytesLoaded() / intro_mc.sqrt(100).round((intro_mc. multiplicação (*).0 Language Reference. incremento (++) e decremento (--).■ Como resultado de uma função. consulte as entradas %{Math}% e %{Number}% em ActionScript 2. O valor mínimo de um objeto Number é aproximadamente 5e-324. É possível manipular números usando os operadores aritméticos de adição (+).79E+308. Para obter mais informações sobre os métodos e as propriedades dessas classes. O exemplo a seguir localiza a porcentagem do clipe de filme intro_mc carregada e a representa como um inteiro: var percentLoaded:Number = Math. divisão (/). Também é possível usar métodos das classes internas Math e Number para manipular números. para indicar que não havia valor disponível a ser retornado pela função Como parâmetro de uma função. módulo (%). 82 Dados e tipos de dados .raiz quadrada) da classe Math para retornar a raiz quadrada do número 100: Math. O exemplo a seguir retorna um inteiro aleatório entre 10 e 17 (inclusive): var bottles:Number = 0. para indicar a omissão de um parâmetro ■ Vários métodos e funções retornarão null se nenhum valor tiver sido definido. consulte “Usando operadores numéricos” na página 198. trace("There are " + bottles + " bottles").getFocus() == null) { trace("no selection"). Para obter mais informações.

números e sinais de pontuação. Este exemplo usa os métodos play() e nextFrame(): mcInstanceName. a velocidade de uma bola. o número de quadros carregados. Isso permite aninhar objetos. por exemplo. user. por sua vez. Insira seqüências de caracteres em instruções do ActionScript colocando-as entre aspas simples (') ou duplas ("). Por exemplo. use o operador ponto (. a idade e o telefone do usuário. ou a última tecla pressionada pelo usuário. name.phone = "555-1234". é uma propriedade de employee: employee. O valor de uma propriedade pode ser qualquer tipo de dados do Flash. os nomes dos itens de um carrinho de compras.nextFrame(). organizá-los uns dentro dos outros. até mesmo o tipo de dados Object. no código a seguir.hoursWorked O objeto MovieClip do ActionScript possui métodos que permitem controlar instâncias de símbolos de clipes de filme no Stage.age = 32. Para adicionar interatividade a um aplicativo com o ActionScript. mc2InstanceName. consulte “Exemplo: Criando classes personalizadas” na página 278. Portanto. A criação de objetos personalizados permite que você organize essas informações em grupos. Por exemplo. você precisará de muitas informações. user. Para especificar os objetos e suas propriedades. age e phone. o nome. user. Cada propriedade possui um nome e um valor. hoursWorked é uma propriedade de weeklyStats. Tipo de dados String Uma seqüência de caracteres é uma seqüência de letras. _alpha (transparência) é uma propriedade. Para obter mais informações. Você também pode criar objetos personalizados para organizar informações em seu aplicativo Flash. Ele cria um novo objeto chamado user e três propriedades. O código ActionScript apresentado a seguir mostra como usar objetos personalizados para organizar informações. var user:Object = new Object(). Sobre tipos de dados 83 .Tipo de dados Object Um objeto é uma coleção de propriedades.weeklyStats. Uma propriedade é um atributo que descreve o objeto.). ou seja. que.play().name = "Irving". simplifique e reutilize scripts. a transparência de um objeto (como um clipe de filme) é um atributo que descreve sua aparência. que são tipos de dados String e Numeric.

Por exemplo. " + firstName. Você pode usar o operador de adição (+) para concatenar. coloque uma barra invertida (\) antes delas. A tabela a seguir lista todos os caracteres de escape do ActionScript: Seqüência de escape \b \f \n \r \t \" \' \\ \000 . Para obter informações sobre os métodos e as propriedades da classe String. ou unir. Isso é chamado escape de caractere. A classe String é uma classe interna do ActionScript.0 Language Reference.\xFF \u0000 . Há outros caracteres que só podem ser representados no ActionScript por seqüências de escape especiais. Para incluir aspas em uma seqüência de caracteres. "L7" é uma seqüência de caracteres atribuída à variável favoriteBand_str: var favoriteBand_str:String = "L7". consulte a entrada %{String}% em ActionScript 2. na instrução a seguir.Uma forma comum de usar o tipo String é atribuir uma seqüência de caracteres a uma variável. duas seqüências de caracteres. O ActionScript trata os espaços no início ou no final de uma seqüência de caracteres como uma parte literal dessa seqüência.\uFFFF Caractere Caractere Backspace (ASCII 8) Caractere de alimentação de formulário (ASCII 12) Caractere de alimentação de linha (ASCII 10) Caractere de retorno de carro (ASCII 13) Caractere Tab (ASCII 9) Aspas duplas Aspas simples Barra invertida Um byte especificado em octal Um byte especificado em hexadecimal Um caractere Unicode de 16 bits especificado em hexadecimal Assim como em Java. A expressão a seguir inclui um espaço depois da vírgula: var greeting_str:String = "Welcome. Qualquer operação que modifique uma seqüência de caracteres retorna uma nova seqüência. 84 Dados e tipos de dados . as seqüências de caracteres são imutáveis no ActionScript.\377 \x00 .

Você pode declarar explicitamente o tipo de objeto de uma variável ao criá-la. um valor undefined não é atribuído a uma variável ou a uma propriedade.Tipo de dados undefined O tipo de dados undefined possui um valor. Se você atribuir um valor a uma variável. usado em uma definição de função para indicar que a função não retorna um valor. diferentemente de null. as variáveis são usadas para armazenar valores no código. o Flash Player tentará determinar o tipo de dados do item quando ele for atribuído. como mostra o exemplo a seguir: if (init == undefined) { trace("initializing app"). } Se o aplicativo tiver vários quadros. como no exemplo a seguir. tanto pelo seu código como pela interação do usuário. durante a execução. Sobre tipos de dados 85 . O valor undefined é atribuído automaticamente. durante a execução. uma seqüência de caracteres ou outro tipo de dados. Use o tipo de dados undefined para verificar se uma variável está definida. o Flash Player avaliará. undefined. init = true. Esse tipo de dados permite criar um código que é executado somente quando o aplicativo está em execução. void. como mostra o exemplo a seguir: //Cria uma função com o tipo de retorno Void function displayFromURL(url:String):Void {} Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados No Flash. o elemento à direita do operador e determinará que ele é do tipo Number: var x = 3. Se você não definir explicitamente que um item armazena um número. isso é chamado atribuição estrita de tipos de dados. e é atribuído automaticamente a uma variável à qual um valor não foi atribuído. o código não será executado uma segunda vez porque a variável init não será mais undefined. Tipo de dados Void O tipo de dados Void possui um valor.

Durante a criação. A atribuição estrita de tipos de dados significa que o editor do ActionScript mostra automaticamente as referências de código dos objetos. Para obter informações sobre como atribuir nomes a variáveis. A atribuição estrita de tipos de dados oferece vários benefícios durante a compilação. consulte “Atribuindo um tipo de dados” na página 87. a atribuição estrita de tipos de dados ajuda a identificar erros no código durante a compilação e evita a atribuição do tipo de dados incorreto a uma variável existente. Para declarar uma variável usando a atribuição estrita de dados. o uso da atribuição estrita também ajuda a impedir sua tentativa de acesso a propriedades ou métodos que não façam parte do tipo de um objeto.) Uma atribuição posterior pode alterar o tipo de x. O ActionScript sempre converte automaticamente tipos de dados primitivos (como Boolean. a atribuição estrita de tipos de dados é chamada atribuição forte de tipos de dados a uma variável. por exemplo. O Flash verifica se há erros de incompatibilidade de tipos durante a compilação e exibirá uma mensagem de erro se você usar o tipo incorreto de valor. Portanto. use o seguinte formato: var variableName:datatype. null ou undefined) quando uma expressão exige a conversão e a atribuição estrita de tipos de dados não é aplicada às variáveis. consulte “Sobre variáveis” na página 91. Para obter mais informações sobre como atribuir tipos de dados e os tipos que podem ser atribuídos. a atribuição estrita de tipos de dados ativa as referências de código no editor do ActionScript (mas ainda assim é necessário usar sufixos de nomes de instância para elementos visuais). para o compilador. Dados e tipos de dados .Como x não foi declarado com a atribuição estrita de tipos de dados. Number. String. (Consulte “Atribuindo um tipo de dados” na página 87. o compilador não pode determinar o tipo. Como a incompatibilidade de tipos de dados gera erros do compilador. a variável x pode ter qualquer tipo de valor. A declaração de tipos de dados (atribuição estrita de tipos de dados) pode ajudar a evitar ou a diagnosticar erros no código durante a compilação. A atribuição estrita de tipo de dados ajuda a garantir a não atribuição inadvertida de um tipo incorreto de valor a uma variável. NO T A 86 Algumas vezes. a instrução x = "hello" altera o tipo de x para String. Para obter mais informações sobre como criar variáveis. consulte “Sobre a atribuição de nomes a variáveis” na página 96.

■ No Windows. } Sobre tipos de dados 87 . como Number. age:Number) { } // Atribuição estrita de tipo de dados de parâmetro e valor de retorno function square(myNum:Number):Number { var squared:Number = myNum * myNum.. Boolean. incluindo desde tipos nativos.Você pode localizar um arquivo de origem de exemplo. navegue até HD Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/DataTypes. crie um argumento de função. ■ Atribuindo um tipo de dados Atribua tipos de dados sempre que definir uma variável.fla. String e Boolean. ou até mesmo classes personalizadas criadas por você ou outros desenvolvedores. são acrescentados doispontos e o tipo de dados: var my_mc:MovieClip. Há vários tipos de dados possíveis. como Number. como no exemplo a seguir: // Atribuição estrita de tipo de dados a uma variável ou a um objeto var myNum:Number = 7. após o nome da variável. String. que mostra como usar os tipos de dados em um aplicativo. defina o tipo de retorno da função ou defina uma variável para ser usada em um loop for ou for. Para atribuir um tipo de dados. use a sintaxe pós-dois-pontos. var birthday:Date = new Date(). return squared. //Atribuição estrita de tipo de dados de parâmetros function welcome(firstName:String. datatypes. Array ou Object. No Macintosh.in. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DataTypes. defina seu tipo usando a palavra-chave var e a sintaxe pós-dois-pontos. a qual indica que. Para atribuir um tipo de dados específico a um item. na pasta Samples do seu disco rígido. ou classes internas fornecidas com o Flash Player 8. quer você a declare usando a palavrachave var. Os tipos mais comuns de dados que precisam ser especificados são os internos. que são mostrados nos exemplos de código apresentados a seguir. como BitmapData e FileReference.

Como os arquivos publicados com o ActionScript 1. Ou. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85. a atribuição do tipo incorreto de valor a uma variável à qual um tipo foi atribuído estritamente não gera um erro do compilador. se criar um atalho para uma função.0 não respeitam as atribuições estritas de tipos de dados durante a compilação. Neste exemplo. um erro de tipos incompatíveis é gerado porque o arquivo SWF espera um valor booleano. // Olá. Para obter mais informações. myNum = 12. /* Tipos incompatíveis em uma instrução de atribuição: String encontrado onde Boolean é necessário. Date etc. /* Não há erro no ActionScript 1. No exemplo a seguir.Você pode declarar o tipo de dados de objetos com base em classes internas (Button. } sayHello("world"). você poderá especificar que os objetos que criar sejam do tipo Student: var myStudent:Student = new Student(). Augustus Outra vantagem da atribuição estrita de tipos de dados é que o Flash exibe automaticamente referências de código para objetos internos quando o tipo de dados é atribuído a eles estritamente. Veja no exemplo a seguir como especificar o tipo Function ou Void para objetos: function sayHello(name_str:String):Void { trace("Hello. bem como em classes e interfaces criadas por você.0 */ 88 Dados e tipos de dados . se houver um arquivo Student.as no qual define a classe Student. suponha que você defina o seguinte código: // no arquivo de classe Student. // Olá. var myNum:String = "abc". mas há um erro de tipos incompatíveis no ActionScript 2. Se criar uma função que não tenha um tipo de retorno.as class Student { public var status:Boolean. greeting("Augustus"). // propriedade dos objetos Student } // no arquivo FLA var studentMaryLago:Student = new Student(). studentMaryLago. você poderá especificar o tipo de retorno Void para essa função. " + name_str).status = "enrolled". mundo var greeting:Function = sayHello. você poderá atribuir o tipo de dados Function à nova variável.).0. */ Quando o Flash compila esse script.

Os arquivos publicados com o ActionScript 2. ou clicando no botão Settings (Configurações) no inspetor Properties (Propriedades) (certifique-se de que não haja instâncias selecionadas).0 podem usar opcionalmente a atribuição de tipos de dados. consulte “Sobre a verificação de tipo” na página 89. fazendo com que o compilador permita chamadas de método ilegais e que referências a propriedades não definidas sejam passadas sem serem relatadas. e não como atribuição estrita de tipo. defina suas configurações de publicação para o ActionScript 2. Portanto. Portanto. o ActionScript também pode realizar a verificação de tipo durante a execução. A verificação de tipo pode ocorrer durante a compilação ou a execução. você usa o parâmetro para armazenar um valor do tipo Number e outro do tipo String. Para obter informações sobre verificação de tipo. selecione a guia Flash na caixa de diálogo Publish Settings e escolha uma opção no menu pop-up de versões do ActionScript. function dynamicTest(xParam) { if (typeof(xParam) == "string") { var myStr:String = xParam. quando você publica um arquivo no ActionScript 1. Para obter mais informações sobre tipos estritos de dados e atribuição de tipos de dados.A razão disso é que. (O ActionScript 2. Em seguida. Sobre tipos de dados 89 . } else if (typeof(xParam) == "number") { var myNum:Number = xParam. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85 e “Atribuindo um tipo de dados” na página 87.0. Como o ActionScript é uma linguagem com atribuição dinâmica de tipos.0. Durante a execução. var myNum:String = "abc" como sintaxe de barra.) Esse comportamento pode resultar na atribuição de um objeto do tipo incorreto a uma variável. Sobre a verificação de tipo A verificação de tipo consiste em examinar se o tipo de uma variável e de uma expressão são compatíveis. a verificação de tipo ocorrerá durante a compilação. se você implementar a atribuição estrita de tipos de dados em seu código. a função dynamicTest() usa o operador typeof para testar se o parâmetro é do tipo String ou Number. por exemplo. o Flash interpreta uma instrução. o Flash verifica se o tipo especificado para uma variável corresponde ao(s) valor(es) atribuído(s) a ela. Você pode especificar as configurações de publicação e definir em que versão do ActionScript deseja publicar seus arquivos modificando essas configurações no menu principal. em File (Arquivo) > Publish Settings (Configurações de publicação).0 não aceita sintaxe de barra. trace("String: " + myStr). Se você usar a atribuição estrita de tipos de dados. Por exemplo. o código a seguir não especifica o tipo de dados do parâmetro xParam. Para usar uma versão específica do ActionScript ou do Flash Player.

O compilador do ActionScript permite que você use propriedades e chame métodos não existentes durante a compilação. } } dynamicTest(100). se você usar variáveis não associadas explicitamente a um tipo de dados. /* O operador typeof não especifica a classe. Você pode usar o operador typeof para retornar informações sobre os dados. ocorrerá um erro durante a execução. O exemplo a seguir mostra como usar o operador typeof para retornar o tipo de objeto que está sendo rastreado: // Criar uma nova instância da classe LoadVars. O código não gerará um erro durante a compilação. é possível criar propriedades ou atribuir métodos dinamicamente durante a execução. Não é necessário adicionar explicitamente informações de tipo de dados ao ActionScript. isso poderá ser vantajoso em algumas situações de codificação. se a propriedade ou o método não estiver acessível durante a execução. você pode detectar problemas que parecem estar relacionados aos tipos de dados de itens diferentes. o código a seguir cria uma função chamada runtimeTest() que chama um método e retorna uma propriedade. // objeto 90 Dados e tipos de dados .trace("Number: " + myNum). Com o ActionScript. Dessa maneira. function runtimeTest(myParam) { myParam. Por exemplo.someMethod(). Como o código é menos restritivo. talvez seja útil saber o tipo de dados de determinada variável. é possível determinar o tipo de dados de um item.someProperty. dynamicTest("one hundred"). Use o operador typeof para obter os tipos de dados. Um exemplo da flexibilidade oferecida pela verificação dinâmica de tipo envolve o uso de propriedades e métodos não conhecidos durante a compilação. ele especifica apenas que my_lv é um objeto*/ var typeResult:String = typeof(my_lv). mas lembre-se de que ele não retorna informações sobre a classe à qual uma instância pertence. } Sobre a determinação do tipo de dados Ao testar e depurar seus programas. var my_lv:LoadVars = new LoadVars(). trace(typeResult). ambos desconhecidos para o compilador. return myParam. mas. Ou.

você cria uma nova variável String chamada myName e converte-a no tipo de dados Number: var myName:String = new String("17"). gravar valores que mudam à medida que o arquivo SWF é reproduzido ou avaliar se uma condição é true ou false. Para obter mais informações sobre classes. Para obter mais informações sobre testes e depuração.0 Language Reference. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85 e “Atribuindo um tipo de dados” na página 87. quando o placar de um jogador muda em um jogo do Flash. “Depurando aplicativos”. na página 745 Para obter mais informações sobre herança e interfaces. trace(myNumber instanceof Number). // true var myNumber:Number = new Number(myName). trace(myName instanceof String). Ao alterar o valor de uma variável durante a reprodução do arquivo SWF. mas o conteúdo (o valor) pode mudar. consulte o Capítulo 8. O código a seguir mostra a aparência de uma variável no ActionScript: var myVariable:Number = 10. “Herança”. Sobre variáveis 91 . O recipiente (representado pelo nome da variável) é sempre o mesmo em todo o ActionScript. como. consulte o Capítulo 7.Neste exemplo. // true Para obter mais informações sobre esses operadores. você poderá registrar e salvar informações sobre as atividades do usuário. “Classes”. O uso de :Number no código anterior atribui o tipo de valor que a variável contém. na página 239. Talvez a variável precise ser atualizada continuamente durante a reprodução do arquivo SWF. Sobre variáveis Uma variável é um recipiente que contém informações. consulte %{operador typeof}% e %{operador instanceof}% em ActionScript 2. Para obter mais informações sobre como atribuir tipos de dados. consulte o Capítulo 18. As variáveis são essenciais quando você cria e trata da interação com o usuário em um arquivo SWF. Essa variável contém um valor numérico. por exemplo. denominado atribuição de tipos de dados. Você pode alterar o valor de uma variável em um script quantas vezes desejar. na página 319.

Há diversos tipos de variáveis. Também é possível verificar e definir os valores da variável no Debugger (Depurador). use a instrução trace() a fim de enviar o valor para o painel Output. D IC A ■ ■ ■ ■ ■ ■ ■ A inicialização de uma variável facilita o controle e a comparação de seu valor durante a reprodução do arquivo SWF. para obter mais informações. A atribuição de um valor inicial é chamada inicialização da variável e ocorre geralmente no Frame 1 (Quadro 1) da Timeline (Linha de tempo) ou em uma classe carregada quando a reprodução do arquivo SWF inicia. Os tipos mais comuns de informações que podem ser armazenados em uma variável são um URL (tipo String). Para obter mais informações sobre variáveis. trace(hoursWorked) envia o valor da variável hoursWorked para o painel Output no ambiente de teste. o resultado de uma operação matemática (tipo Number).É recomendável atribuir um valor a uma variável ao declará-la pela primeira vez. consulte “Sobre tipos de dados” na página 76. sendo que cada variável possui um valor. Para obter mais informações sobre os diversos tipos de variáveis e escopo. Por exemplo. Para exibir o valor de uma variável. O Flash Player 7 e versões posteriores avaliam as variáveis não inicializadas de maneira diferente do Flash Player 6 e versões anteriores. consulte “Sobre variáveis e escopo” na página 101. independentemente das variáveis de outros arquivos SWF ou clipes de filme. um nome de usuário (tipo String). você deverá compreender essas diferenças a fim de evitar um comportamento inesperado. no ambiente de teste. Cada arquivo SWF e instância de um objeto (como um clipe de filme) tem um conjunto de variáveis. Se tiver criado scripts para o Flash Player 6 e planejar criar ou portar scripts para o Flash Player 7 ou versões posteriores. As variáveis podem conter diversos tipos de dados. O tipo de dados que uma variável contém afeta a forma como o valor da variável é alterado quando atribuído em um script. Em seguida. consulte os tópicos a seguir: “Sobre a declaração de variáveis” na página 93 “Sobre a atribuição de valores” na página 93 “Sobre a atribuição de nomes a variáveis” na página 96 “Usando variáveis em um aplicativo” na página 97 “Sobre variáveis e escopo” na página 101 “Sobre valores padrão” na página 93 “Sobre operadores e variáveis” na página 96 92 N OT A Dados e tipos de dados . o número de vezes que um evento ocorreu (tipo Number) ou se o usuário clicou em determinado botão (tipo Boolean). o valor será exibido no painel Output quando você testar o arquivo SWF no ambiente de teste. que são afetados pelo escopo.

consulte “Sobre variáveis” na página 91. Ao declarar uma variável. Para definir variáveis. Para obter mais informações sobre como criar e usar variáveis. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85. mas não definir o seu valor. ela será considerada uma variável não inicializada. Nesse caso. você também atribui um tipo de dados a ela. datas ou até mesmo classes personalizadas criadas por você. Você pode declarar uma variável chamada firstName. Sobre a atribuição de valores Você pode definir um valor como o conteúdo atual de uma variável. o tipo de dados String é atribuído à variável firstName. números. Ao declarar a variável. você atribui um tipo de dados a ela. O valor padrão de uma variável não inicializada é undefined. A variável é inicializada quando você define o seu valor pela primeira vez. Se você declarar uma variável. O valor poderá consistir em seqüências de caracteres. Sobre valores padrão Um valor padrão é o valor que uma variável contém antes de seu valor ser definido. Sobre variáveis 93 . use a palavra-chave var e siga as convenções de atribuição de nomes de variáveis. diretamente em um objeto ou em um arquivo de classe externo. como mostra o exemplo a seguir: var firstName:String. no Flash. Lembre-se de que. Você também pode atribuir um valor a uma variável.■ ■ “Sobre o carregamento de variáveis” na página 106 “Usando variáveis em um projeto” na página 111 Sobre a declaração de variáveis Você pode declarar variáveis em um quadro da timeline. as variáveis são declaradas com a palavra-chave var. objetos. arrays. Para obter mais informações sobre como atribuir tipos de dados. desde que ele corresponda ao tipo de dados atribuído à variável. XML. O exemplo a seguir mostra como criar uma variável chamada catName: var catName:String.

Esse erro informa que você tentou definir o tipo incorreto de dados para uma variável especificada. Quando um valor numérico é atribuído a uma variável. em vez de atribuí-lo posteriormente (como nos exemplos anteriores). você poderá atribuir um valor a ela. o valor precisa estar entre aspas retas. Esse exemplo atribui o valor Pirate Eye à variável catName. Ao reatribuir um valor a uma variável existente. // Pirate Eye Lembre-se de que o valor atribuído deve corresponder ao tipo de dados atribuído a ele (nesse caso. String). :Number). Após a linha anterior do ActionScript.Após declarar a variável. Ao declarar uma variável. você também pode atribuir um valor a ela. Se você posteriormente tentar atribuir um número à variável catName. você poderá atribuir um novo valor usando o seguinte ActionScript: numWrinkles = 60. Se o valor for numérico ou booleano (true ou false). usando o seguinte ActionScript: var catName:String = "Pirate Eye". como catName = 10. as aspas não são necessárias. NO T A 94 Como Pirate Eye é uma seqüência de caracteres. Se desejar alterar o valor de numWrinkles posteriormente no código. Exemplos de valores numéricos e booleanos são mostrados no trecho de código a seguir: Dados e tipos de dados . Você pode rastrear o valor da variável catName e verificar que o valor real não inclui as aspas. você poderá usar a instrução trace(). o seguinte erro será exibido no painel Output durante o teste do arquivo SWF: Type mismatch in assignment statement: found Number where String is required. como no seguinte exemplo: var catName:String = "Pirate Eye". trace(catName). Essa instrução envia o valor para o painel Output. Se desejar exibir o valor da variável catName no ambiente de teste. como mostra o código a seguir: var numWrinkles:Number = 55. você não precisa usar a palavra-chave var ou definir o tipo de dados da variável (nesse caso. insira esta linha: catName = "Pirate Eye". Você poderia definir a variável catName ao declará-la. ele não usará aspas retas.

por exemplo. Por exemplo. o formato será ligeiramente diferente. O Flash cria algumas variáveis automaticamente. "Smithers". O primeiro (e mais longo) método para codificar um array é apresentado a seguir: var myObj:Object = new Object(). "Smithers". Você pode reescrever o exemplo anterior da seguinte maneira: var childrenArr:Array = ["Pylon".4. Se você desejar criar um array e atribuir valores a ele. N OT A Nem todas as variáveis precisam ser definidas explicitamente. myObj. age:50. O segundo e (mais curto) método para codificar o array myObj é o seguinte: var myObj:Object = {firstName:"Steve". Como você pode observar nesse exemplo. na Internet ou em manuais. var hasChildren:Boolean = false.childrenArr = new Array("Mike".width e Stage. "Gil"). que usam colchetes ([]). você pode criar um novo objeto chamado myObj. var married:Boolean = true. myObj. No exemplo anterior. Há dois métodos para criar um novo objeto. É importante estar familiarizado com essa sintaxe alternativa. Sobre variáveis 95 .firstName = "Steve". De maneira semelhante. "Robbie". true ou false. "Robbie". "Chip"]}.age = 50. o uso do método mais curto pode poupar muito tempo e digitação.var age:Number = 38. especialmente quando você define instâncias de objetos. pois você a encontrará se trabalhar em equipes ou quando trabalhar com código ActionScript de terceiros encontrado. Para obter mais informações sobre como criar arrays e os operadores de acesso de array. para encontrar as dimensões do Stage. childrenArr:["Mike". Há uma sintaxe alternativa (abreviada) para criar um array com os operadores de acesso de array. "Chip"). como 38. embora você também possa usar um valor decimal ou de ponto flutuante. você poderia usar os valores destas duas variáveis predefinidas: Stage. consulte “Sobre arrays” na página 172 e “Sobre uso da sintaxe de ponto para referenciar uma instância” na página 125. "Gil"]. a variável age contém um valor inteiro (não-decimal). As variáveis booleanas (como married ou hasChildren) têm somente dois valores possíveis. como mostra o código a seguir: var childrenArr:Array = new Array("Pylon". myObj.height.

Se você usar o operador + em dois ou mais valores de seqüência de caracteres. as seqüências serão concatenadas. consulte “Sobre operadores” na página 185.Sobre operadores e variáveis Talvez você não entenda os símbolos matemáticos contidos em seu código. pois a variável foi definida anteriormente. propriedade. use o seguinte código: numChildren = 8. N O TA 96 Um identificador é um nome de variável. um sublinhado (_) ou um cifrão ($). consulte “Sobre literais” na página 138. Os operadores calculam um novo valor a partir de um ou mais valores e são usados para atribuir um valor a uma variável no código. Se desejar alterar o valor da variável numChildren. Os caracteres subseqüentes podem ser uma letra. false. o script a seguir usa o operador de atribuição para atribuir o valor 7 à variável numChildren: var numChildren:Number = 7. Para obter mais informações sobre literais. algumas regras devem ser observadas. um número. Os valores manipulados pelos operadores são denominados operandos. Para obter mais informações sobre como usar operadores no ActionScript. Ao atribuir um valor. função ou método. como true. As variáveis devem ser exclusivas em seu escopo (consulte “Sobre variáveis e escopo” na página 101). Outro exemplo é o operador de adição (+). Por exemplo. Sobre a atribuição de nomes a variáveis Tenha cautela ao nomear variáveis. que adiciona dois ou mais valores numéricos para produzir um novo valor. objeto. Use o operador de igualdade (=) para atribuir um valor a uma variável: var username:String = "Gus". um sublinhado ou um cifrão. Uma variável não pode ser uma palavra-chave nem um literal do ActionScript. NO TA ■ ■ ■ Não é necessário usar var. O primeiro caractere do identificador deve ser uma letra. O nome de uma variável deve seguir estas regras: Uma variável deve ser um identificador. Esses símbolos são chamados operadores no ActionScript. pois. embora elas possam ter praticamente qualquer nome. Dados e tipos de dados . use um operador a fim de definir um valor para uma variável. null ou undefined.

Para obter as convenções de codificação recomendadas para a atribuição de nomes a variáveis. trace(helloStr. se você atribuir o nome new a uma variável e testar o seu documento. // 0 // Mas. É necessário declarar e inicializar uma variável em um script antes de usá-la em uma expressão. Por exemplo. // indefinido O editor do ActionScript oferece suporte a referências de código para classes internas e variáveis que tenham como base essas classes...■ As variáveis não devem ser um elemento da linguagem ActionScript. Usando variáveis em um aplicativo Nesta seção. você usará variáveis em trechos curtos de código ActionScript. Para obter mais informações sobre como criar expressões. var helloStr:String = new String(). a variável não ficará indefinida e poderá gerar resultados inesperados. digite o seguinte código: var members:Array = new Array(). na página 119. As referências de código fornecem uma sintaxe no estilo de dica de ferramenta e um menu pop-up que o ajuda a criar o código rapidamente. o valor da variável no Flash Player 7 e versões posteriores será NaN. trace(helloStr. e o script poderá produzir resultados indesejados: Sobre variáveis 97 . o Flash exibe uma lista de métodos e propriedades disponíveis para objetos Array.) no painel Actions (Ações). e + é um operador.length). Por exemplo. consulte “Atribuição de nome a variáveis” na página 772. // erro: identificador esperado var helloStr:String = new String(). As expressões são combinações de operandos e operadores que representam um valor.length). No exemplo a seguir. poderão ocorrer erros de sintaxe ou resultados inesperados. Se desejar que o Flash forneça referências de código para um tipo de objeto específico atribuído a uma variável. consulte o Capítulo 5. var new:String = "hello". o Flash gerará um erro do compilador: // Este código funciona como esperado. Se você não inicializar uma variável antes de usá-la em uma expressão. como no exemplo a seguir. Assim que você digita o ponto (. Se você usar uma variável indefinida. na expressão i+2. i e 2 são operandos. Se você não seguir as regras ao atribuir um nome a uma variável. como um nome de classe. members. “Fundamentos da sintaxe e da linguagem”. se você atribuir a uma variável o mesmo nome de uma classe interna. você poderá atribuir um tipo estrito a ela.

addEventListener("click". Abra o inspetor Properties e digite good_button na caixa de texto Instance Name.com". Selecione Control (Controlar) > Test Movie (Testar filme) e observe que o botão não funciona (ele não abre a página da Web). 4. // NaN var myNum:Number = 6. Esse botão abre a página da Web corretamente. } bad_button. Digite o seguinte código no Frame 1 da Timeline. portanto. 5. } good_button. trace(squared). 8.macromedia. trace(squared).addEventListener("click". goodClickListener). badClickListener). Abra o inspetor Properties (Propriedades) e digite bad_button na caixa de texto Instance Name (Nome da instância).com". a instrução que declara e inicializa a variável myNum vem em primeiro lugar. No exemplo a seguir. squared pode ser substituído por um valor: var myNum:Number = 6. var squared:Number = myNum * myNum. como mostrado a seguir. var targetUrl:String = "http://www. // Não funciona function badClickListener(evt:Object):Void { getURL(targetUrl). Adicione o seguinte ActionScript ao Frame 1 da Timeline (após o ActionScript adicionado anteriormente): // Funciona function goodClickListener(evt:Object):Void { var targetUrl:String = "http://www. Arraste um componente Button do painel Components (Componentes) até o Stage (Palco). Selecione Control > Test Movie e clique no segundo botão adicionado ao Stage. 6.macromedia. Selecione o botão.var squared:Number = myNum * myNum. 3. 7. 2. Arraste outro componente Button até o Stage. Para comparar a passagem de variáveis indefinidas e definidas para uma função: 1. getURL(targetUrl). 98 Dados e tipos de dados . // 36 Um comportamento semelhante ocorre quando você passa uma variável não definida para um método ou uma função.

3. // 30 trace(otherNum). portanto. em vez de uma referência a esse valor. o valor de otherNum permanece igual a 15 porque otherNum não procura o seu valor em myNum. são passados por valor. Os tipos de dados primitivos. A variável otherNum contém o valor de myNum recebido (na linha 2 do código).O tipo de dados que uma variável contém afeta como e quando o seu valor será alterado.fla. trace(inValue). No exemplo a seguir. 3. a referência solicita o conteúdo e responde sem transferir o valor para a variável. Para usar variáveis no ActionScript: 1. Quando você altera myNum para 30 (na linha 3 do código). O tipo de dados Object pode conter uma quantidade tão grande de informações complexas que uma variável com esse tipo não armazenará o valor real. 5. trace(myNum). var outValue:Number = sqr(inValue). // 3 trace(outValue). return myNum. Selecione Control > Test Movie para que os valores sejam exibidos no painel Output. } var inValue:Number = 3. 2. Sobre variáveis 99 . o valor é passado para a função sqr(). O valor da variável inValue não é alterado. Crie um novo documento do Flash e salve-o como var_example. a variável inValue contém um valor primitivo. var otherNum:Number = myNum. // 9 Nesse código. Quando a variável precisa saber seu valor. Agora adicione o seguinte ActionScript após o código adicionado na etapa 2: function sqr(myNum:Number):Number { myNum *= myNum. isso significa que é usado o valor atual da variável. A variável otherNum contém o valor de myNum recebido (na linha 2 do código). você definirá myNum como 15 e copiará o valor para otherNum. Selecione o Frame 1 da Timeline e digite o código a seguir no painel Actions: var myNum:Number = 15. o valor de otherNum permanece igual a 15 porque otherNum não procura o seu valor em myNum. 4. Selecione Control > Test Movie para que os valores sejam exibidos no painel Output. Array e Object são exemplos de tipos de dados complexos. Essa referência é semelhante a um alias que aponta para o conteúdo da variável. embora o valor de myNum seja alterado na função. // 15 Quando você altera myNum para 30 (na linha 3 do código). como Strings e Numbers. e o valor retornado é 9. mas uma referência a esse valor. myNum = 30.

fla.jack trace(newArray). Selecione o Frame 1 da Timeline e digite o código a seguir no painel Actions: var myArray:Array = new Array("tom". Ao editar o conteúdo do segundo array. portanto. // tom.fla. N OT A O Flash usa um índice que inicia em zero. apenas uma cópia da referência (ou alias) ao conteúdo do array. 0 é o primeiro item do array. A instrução trace() envia tom.jack para o painel Output. "josie"). No exemplo a seguir. em vez de conterem seu valor real. // tom. 1 é o segundo e assim por diante. Quando você altera o segundo elemento de myArray para jack. consulte “Passando uma variável por referência” na página 100. myArray[1] = "jack". trace(myArray). A função zeroArray() aceita um objeto Array como parâmetro e define todos os elementos desse array como 0. Esse ActionScript cria um objeto Array chamado myArray com dois elementos. 100 Dados e tipos de dados . pois ambos apontam para o mesmo valor. var newArray:Array = myArray. Ela pode modificar o array porque ele é passado por referência. Passando uma variável por referência Como os tipos de dados Array e Object armazenam uma referência a um valor. 3. escolha Flash Document (Documento do Flash) para criar um novo arquivo FLA e salve-o como copybyref. Para passar um array por referência: 1. O exemplo a seguir mostra como passar um objeto por referência. você modifica o conteúdo do primeiro e do segundo arrays. Para passar um objeto por referência: 1. Crie a variável newArray e passe uma referência para myArray. ele afeta todas as variáveis que contêm uma referência a ele. ou seja. na verdade. Selecione File > New.Para obter informações sobre como passar uma variável por referência. você cria. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript. Ao criar uma cópia do array.jack 2. Selecione File (Arquivo) > New (Novo). myArray contém um objeto Array. escolha Flash Document para criar um novo arquivo FLA e salve-o como arraybyref. tenha cautela ao trabalhar com arrays e objetos. o array é passado para a função zeroArray() por referência.

for (i = 0.0. Se tentar fazer referência a objetos no escopo incorreto ou a variáveis expiradas.0. cada um dos valores do array é substituído e definido como zero. consulte “Sobre arrays” na página 172. Além de indicar quando e onde é possível fazer referência a variáveis. Como o array é passado por referência.0). // 1. myArr[2] = 3. não é necessário retornar o seu conteúdo atualizado a partir da função zeroArray(). Portanto. você receberá erros nos documentos do Flash. myArr[0] = 1. A primeira instrução trace() desse ActionScript exibe o conteúdo original do array myArray (1. Quando as variáveis são definidas no corpo de uma função.2. os quais levarão a um comportamento inesperado ou à interrupção de uma funcionalidade.3).3 zeroArray(myArr). A instrução trace() subseqüente exibe o novo conteúdo do array myArray (0. Para obter mais informações sobre escopo. consulte “Sobre escopo e referência” na página 130. A variável poderá ser conhecida em uma timeline ou em uma função específica. // 0. } } var myArr:Array = new Array(). o escopo especifica por quanto tempo determinada variável existirá em um aplicativo. A compreensão do escopo das variáveis é importante durante o desenvolvimento de aplicativos Flash com o ActionScript. Sobre variáveis e escopo O escopo de uma variável refere-se à área na qual a variável é conhecida (definida) e na qual pode ser referenciada.0 3. ou poderá ser conhecida globalmente em todo o aplicativo. uma variável global é definida em todas as áreas do código.2. elas deixam de existir assim que a função especificada é encerrada. trace(myArr). i < theArr. Adicione o seguinte ActionScript ao Frame 1 da Timeline: function zeroArray (theArr:Array):Void { var i:Number.2. e não por valor.length. Há três tipos de escopos de variável no ActionScript: ■ Variáveis globais e funções estão disponíveis para cada timeline e escopo do documento. Sobre variáveis 101 . trace(myArr). Para obter mais informações sobre arrays. Depois que você chama a função zeroArray() e passa uma referência ao array myArray. i++) { theArr[i] = 0. myArr[1] = 2. Selecione Control > Test Movie para testar o ActionScript.

Para obter informações e uma solução alternativa. N OT A 102 As classes do ActionScript 2. // Declara a variável global trace(counter). trace(counter). Não é possível usar a atribuição estrita de dados para variáveis globais. o código a seguir cria a variável global myName: var _global. privados e estáticos de variáveis.■ ■ Variáveis de Timeline estão disponíveis para qualquer script nessa timeline. use o identificador _global antes do nome da variável e não use a sintaxe var =. consulte “Variáveis globais” na página 102. // Acessa a variável global e exibe 100 function count():Void { for (var counter:Number = 0.myName = "George". consulte o Capítulo 5. como no seguinte código: trace(_global. Dados e tipos de dados . Variáveis globais As variáveis globais e as funções estão visíveis para cada timeline e escopo do documento. // Sintaxe incorreta para a variável global _global. consulte “Sobre membros de classe” na página 265 e “Controlando o acesso de membros em classes” na página 288. você poderá acessar a variável de escopo global se adicionar a ela o prefixo _global.myName = "George". se inicializar uma variável local com o mesmo nome de uma variável global. Variáveis locais estão disponíveis no corpo da função em que são declaradas (delineado por chaves). // Sintaxe correta para a variável global Entretanto. counter <= 2. Portanto. Para obter diretrizes sobre o uso de escopo e variáveis. counter++) { // Variável local trace(counter).0 criadas por você oferecem suporte a escopos públicos.counter). // Acessa a variável local e exibe de 0 a 2 } } count(). como mostra o exemplo a seguir: _global. “Sobre escopo e referência”. você poderia acessá-la se adicionasse o prefixo _global ao contador. Para obter mais informações.counter = 100. Por exemplo. você não terá acesso à variável global enquanto estiver no escopo da variável local. Entretanto. as variáveis locais são definidas somente em parte do código. Para declarar (ou criar) uma variável com escopo global. // Acessa a variável global e exibe 100 Esse exemplo mostra simplesmente que a variável global não é acessada no escopo da função count(). na página 130. Por exemplo.

fla a ele. Selecione Insert (Inserir) > Timeline > Blank Keyframe (Quadro-chave em branco). após a instrução trace(). isto não seria possível: _global. consulte Capítulo 17. disponível para todos os quadros */ 3. Com o novo quadro-chave selecionado. Sobre variáveis 103 .foo:String = "foo". “Noções básicas de segurança”. Como os documentos do Flash executam um loop. adicione stop(). Selecione Control > Test Movie para testar o novo documento. //erro de sintaxe O recurso de segurança sandbox do Flash Player versão 7 e versões posteriores impõe restrições ao acesso de variáveis globais em arquivos SWF carregados a partir de domínios de segurança separados. Para usar variáveis de timeline em um documento: 1. /* inicializada no Frame 1 e. É necessário declarar uma variável de timeline antes de tentar acessá-la em um script. 4. Selecione o Frame 20 da Timeline. 5. Variáveis de Timeline As variáveis de Timeline estão disponíveis para qualquer script nessa timeline. Por exemplo. Crie um novo documento do Flash e atribua o nome timelinevar. em Frame 20. se você colocar o código var myNum:Number = 15.foo:String = "foo". por padrão. digite o seguinte ActionScript no painel Actions: trace(myNum). Para interromper a ação de loop. na página 707. use a instrução var e inicialize-as em qualquer quadro da timeline.Você não poderá atribuir tipos de dados estritos às variáveis criadas no escopo _global. o valor 15 é exibido continuamente no painel Output toda vez que a reprodução alcança o Frame 20 da Timeline. todos os scripts anexados a um quadro anterior a esse não poderão acessar myNum e serão indefinidos em vez de conterem o valor 15. //erro de sintaxe var _global. 2. 6. Adicione o seguinte ActionScript ao Frame 1 da Timeline: var myNum:Number = 15. Para obter mais informações. A variável está disponível para esse quadro e para todos os quadros subseqüentes. Para declarar variáveis de timeline. portanto. Por exemplo. O valor 15 é exibido no painel Output após aproximadamente um segundo. como no exemplo apresentado a seguir. pois precisará usar a palavra-chave var ao atribuir um tipo de dados.

essa variável não estará disponível fora da função. // Olá. ela é definida no escopo desse bloco e expira no final dele. A variável de timeline ainda existirá for a da função. var str1:String = "Timeline". Por exemplo. porque myStr não está definida globalmente Se o nome usado para a variável local já estiver declarado como uma variável de timeline. mundo trace(nameStr). em seguida. Para usar variáveis locais em um aplicativo: 1. a definição local terá precedência sobre a definição da timeline enquanto a variável local estiver no escopo. // Timeline No próximo exemplo. você declara variáveis locais. Por exemplo.Variáveis locais Ao usar a instrução var em um bloco de função. function localScope():Void { var myStr:String = "local". trace(str1). mas a instrução trace fora da função gera a definição da variável na timeline. " + nameStr. Abra o painel Actions (Window (Janela) > Actions (Ações)) e adicione o seguinte ActionScript ao Frame 1 da Timeline: function sayHello(nameStr:String):Void { var greetingStr:String = "Hello. // Local } scopeTest(). trace(greetingStr). } localScope(). Portanto. Crie um novo documento do Flash. observe que certas variáveis existem apenas enquanto determinada função existir e poderão gerar erros se você tentar fazer referência a elas fora do escopo dessa função. function scopeTest():Void { var str1:String = "Local". trace(str1). Quando uma variável local é declarada em um bloco de função (também chamado definição de função). cria uma variável local de mesmo nome na função scopeTest(). // Indefinida. 2. trace(myStr). o código a seguir cria uma variável de seqüência de caracteres timeline chamada str1 e. a variável local existe somente nessa função. A instrução trace contida na função gera a definição local da variável. } sayHello("world"). // indefinido trace(greetingStr). se você declarar uma variável chamada myStr em uma função localScope. // indefinido 104 Dados e tipos de dados .

Selecione Control > Test Movie para testar o documento.. um código ou eventos externos à função poderão alterar seu valor.2. i++) {. // <em branco> initArray(3). No exemplo a seguir. Isso ajuda a evitar a atribuição do tipo de dados incorreto a uma variável existente. as variáveis deixarão de existir. Uma variável local só pode ser alterada em seu próprio bloco de código. // indefinido N OT A A sintaxe a seguir também costuma ser usada para um loop for: for (var i:Number = 0. i++) { myArr[i] = i + 1. mundo” no painel Output e indefinido para os valores de nameStr e greetingStr porque as variáveis não estão mais disponíveis no escopo atual.3 trace(i). não há conflito porque as variáveis são usadas em escopos separados. // 1. i < arrayLength. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85. que podem gerar resultados inesperados em seu aplicativo. Ela existe somente na função initArray(). O Flash exibe a seqüência de caracteres “Olá. você poderá usá-la para armazenar a idade de uma pessoa em um contexto e a idade do filho de uma pessoa em outro contexto. i é usada como uma variável local. Quando a função encerrar. Se uma expressão em uma função usar uma variável global.}. É recomendável usar variáveis locais no corpo de uma função para que a função possa atuar como um código independente. Sobre variáveis 105 . trace(myArr). o que alteraria a função.3. for(i = 0. i < arrayLength. Você pode atribuir um tipo de dados a uma variável local ao declará-la.. Somente é possível fazer referência a nameStr e greetingStr na execução da função sayHello. Para obter mais informações. Esse exemplo exibe undefined no ambiente de teste do Flash porque a variável i não está definida na timeline principal. se usar age como uma variável local. function initArray(arrayLength:Number):Void { var i:Number. Por exemplo. Nesse caso. Você pode usar variáveis locais para ajudar a evitar conflitos de nome. ela só existe dentro da função initArray(): var myArr:Array = new Array(). As variáveis i e j são geralmente usadas como contadores de loop. } } trace(myArr).

100. O campo de texto exibe undefined. Para obter mais informações. você poderá passar valores de uma página HTML para o documento do Flash. Você também pode criar um visualizador de imagens no Flash e definir uma imagem padrão para exibição no site da Web. Os valores passados algumas vezes são conhecidos como seqüência de caracteres de consulta ou variáveis codificadas em URL. Crie um documento do Flash e atribua o nome urlvariables. 3. 4. 20). consulte os seguintes tópicos: ■ ■ ■ “Usando variáveis a partir do URL” na página 106 “Usando FlashVars em um aplicativo” na página 109 “Carregando variáveis a partir de um servidor” na página 110 Usando variáveis a partir do URL Ao desenvolver um aplicativo ou um exemplo simples no Flash.Sobre o carregamento de variáveis Nas seções a seguir. 100. Para obter mais informações sobre como carregar variáveis (como pares de nome/valor). Você pode inicializar o menu para mostrar a navegação correta por padrão. 2.autoSize = "left". na página 663. Para ter certeza de que as variáveis estão definidas corretamente antes de continuar. Para usar variáveis de URL em um documento: 1. verifique a existência das variáveis no Flash. As variáveis de URL são úteis quando você deseja criar um menu no Flash. você carregará variáveis do servidor de diferentes maneiras ou em um documento a partir de uma seqüência de caracteres de URL ou de FlashVars (você pode usar FlashVars a fim de passar variáveis para o Flash) em seu código HTML. 0.createTextField("myTxt". “Trabalhando com dados externos”. por exemplo.myURL. dependendo de suas necessidades. consulte o Capítulo 16. Selecione File (Arquivo) > Save As (Salvar como) e salve o documento na área de trabalho. Selecione Control > Test Movie para testar o arquivo SWF no Flash Player. Para isso. 106 Dados e tipos de dados . Essas práticas demonstram que há várias maneiras de usar variáveis fora de um arquivo SWF. myTxt.text = _level0. Você poderá usar variáveis de diferentes maneiras em um arquivo SWF.fla a ele. 0. Selecione o Frame 1 da Timeline e adicione o seguinte código ao painel Actions: this. verifique se elas estão indefinidas. myTxt.

Em seguida. Examine esse HTML para entender como as variáveis de URL funcionam na etapa a seguir (na qual você adicionará um código para essas variáveis).0.swf?myURL=http:// weblogs. HTML na guia Formats (Formatos). Adicione o código que aparece em negrito: this.0" width="550" height="400" id="urlvariables" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="urlvariables.0. um documento HTML é criado por padrão no mesmo diretório do arquivo SWF.myURL == undefined) { myTxt. if (_level0.0" width="550" height="400" id="urlvariables" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="urlvariables.macromedia.text = "myURL is not defined".com/pub/shockwave/cabs/flash/ swflash.macromedia.com/go/getflashplayer" /> </object> 6.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="urlvariables.com" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> Sobre variáveis 107 . myTxt.com/pub/shockwave/cabs/flash/ swflash. } Quando você publica o documento do Flash. selecione File (Arquivo) > Publish settings (Configurações de publicação) e.autoSize = "left".macromedia.0. } else { myTxt. Para verificar se a variável está definida. 100.5. <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload. 20).cab#version=8.0. O código a seguir demonstra o HTML do documento responsável por incorporar um documento do Flash em uma página HTML. modifique o ActionScript adicionado ao painel Actions na etapa 3 de acordo com o código a seguir.createTextField("myTxt".myURL. 100.cab#version=8.text = _level0. <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.swf). Se um arquivo HTML não tiver sido criado. em seguida. Para passar variáveis do documento HTML gerado para o documento do Flash. 0. 0.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="urlvariables" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www. publique o documento novamente.macromedia. você pode passá-las após o caminho e o nome do arquivo (urlvariables. Adicione o texto em negrito ao arquivo HTML gerado na área de trabalho.

URL Encoding: Reading special characters from a text file (Codificação de URL: Lendo caracteres especiais em um arquivo de texto). Observe que as palavras estão separadas pelos sinais +.macromedia.html e localize o seguinte código: ?myURL=http://weblogs. Se desejar passar diversas variáveis para o Flash.com Substitua-o por este texto: ?myURL=http://weblogs. se os valores passados contiverem esse caractere.macromedia. 8. Como o E comercial (&) serve como delimitador para diversos pares de nome/valor. Localize o seguinte código da etapa 6: ?myURL=http://weblogs. As palavras são separadas dessa maneira porque os valores são codificados em URL e o sinal + representa um único espaço em branco.macromedia. poderão ocorrer resultados inesperados. consulte a Flash TechNote (Nota técnica do Flash).macromedia.com" quality="high" bgcolor="#ffffff" width="550" height="400" name="urlvariables" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http:// www. separe os pares de nome/valor com um E comercial (&).com&myTitle=Macromedia+News+Aggregator Substitua-o por este código: ?myURL=Ben+%26+Jerry&flavor=Half+Baked 108 Dados e tipos de dados . N OT A Para obter uma lista de caracteres especiais comuns codificados em URL. Abra o documento urlvariables.com&myTitle=Macromedia+News+Aggregator Lembre-se de que é necessário efetuar as mesmas alterações nas marcas object e embed para manter a consistência entre todos os navegadores.com/go/getflashplayer" /> </object> 7.macromedia.<embed src="urlvariables. se os valores a seguir forem passados para o Flash.swf?name=Ben+&+Jerry&flavor=Half+Baked ele criará as seguintes variáveis (e valores) no escopo raiz: 'name': 'Ben ' (note space at end of value) ' Jerry': '' (note space at beginning of variable name and an empty value) 'flavor': 'Half Baked' Para evitar isso. Em virtude da natureza dos pares de nome/valor e da análise. use o E comercial (&) como um caractere de escape no par de nome/valor com seu equivalente codificado em URL (%26).swf?myURL=http://weblogs. my.

'name': 'Ben & Jerry' 'flavor': 'Half Baked' NO T A Todos os navegadores aceitarão seqüências de caracteres de até 64K (65535 bytes).text = "myURL is not defined".html. 4. Usando FlashVars em um aplicativo Usar FlashVars para passar variáveis para o Flash é semelhante a usar o URL para passar variáveis no código HTML. as variáveis são passadas em uma marca param separada.fla. Abra o diretório que contém os arquivos publicados (onde você salvou myflashvars. FlashVars deve ser atribuída nas marcas object e embed para que funcione em todos os navegadores. 100. Adicione o seguinte ActionScript ao Frame 1 da Timeline principal: this.macromedia. Com FlashVars. 20).0. 5.fla no disco rígido) e abra o documento HTML (myflashvars. Salve o HTML revisado e teste o documento do Flash novamente. Crie um novo documento do Flash e atribua o nome myflashvars.9.com/pub/shockwave/cabs/flash/ swflash. Observe que o Flash criou os seguintes pares de nome/valor.autoSize = "left". 0. if (_level0.text = _level0. Adicione o código que aparece em negrito abaixo. 100. myTxt.fla a ele.0" width="550" height="400" id="myflashvars" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> 6. como o Dreamweaver ou o Bloco de Notas. em vez de serem passadas após o nome do arquivo. verifique se HTML está selecionado e clique em OK para fechar a caixa de diálogo. } else { myTxt. Sobre variáveis 109 . Por padrão. para que o documento HTML corresponda ao seguinte: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.0.createTextField("myTxt". 0. Selecione File (Arquivo) > Publish (Publicar) para publicar os arquivos SWF e HTML.myURL == undefined) { myTxt. Para usar FlashVars em um documento: 1. o código HTML é publicado no mesmo local que myflashvars. bem como na marca embed.myURL. } NO T A 3. por padrão) em um editor HTML. Selecione File > Publish Settings.cab#version=8. 2.

como mostra este exemplo. Para obter mais informações sobre como carregar variáveis.<param name="movie" value="myflashvars. 7.macromedia. uma variável do arquivo HTML. O texto http://weblogs. Carregando variáveis a partir de um servidor Há várias maneiras de carregar variáveis no Flash a partir de origens externas (como arquivos de texto. que contém a seqüência de caracteres http://weblogs. Isso significa que não é preciso criar funções para verificar se o carregamento das variáveis foi concluído. é possível carregar facilmente variáveis usando a classe LoadVars.macromedia. “Trabalhando com dados externos”.com. N OT A Todos os navegadores aceitarão seqüências de caracteres de até 64K (65.com/go/getflashplayer" /> </object> Esse código passa uma única variável chamada myURL. Clique duas vezes em myflashvars.com/"> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="myflashvars.535 bytes).macromedia.swf" FlashVars="myURL=http:// weblogs. incluindo pares de nome/valor.macromedia. Quando o arquivo SWF é carregado. Salve as alterações no documento HTML e feche-o. FlashVars deve ser atribuída nas marcas object e embed para que funcione em todos os navegadores.). No Flash. esse procedimento seria necessário se elas fossem carregadas com LoadVars ou XML. documentos XML etc.macromedia. na página 663. é exibido no arquivo SWF.swf" /> <param name="FlashVars" value="myURL=http://weblogs.html para testar o aplicativo.com. 8. Uma das vantagens de usar FlashVars ou passar variáveis no URL é que elas ficam imediatamente disponíveis no Flash quando o arquivo SWF é carregado. 110 Dados e tipos de dados .com/" quality="high" bgcolor="#ffffff" width="550" height="400" name="myflashvars" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www. consulte o Capítulo 16. uma propriedade chamada myURL é criada no escopo _level0.

“Trabalhando com dados externos”. my_lv.Segunda-feira. o evento complete será chamado e o painel Output exibirá o valor de dayNames. DICA Faça download ou exiba o arquivo de texto (http://www. consulte o Capítulo 16. } } my_lv. o argumento success será definido como false e o painel Output exibirá o texto Error. Usando variáveis em um projeto Quando você cria animações ou aplicativos com o Flash. Para obter mais informações sobre como carregar variáveis (como pares de nome/valor). Por exemplo. você talvez precise de variáveis para determinar se o nome de usuário e a senha são válidos ou se foram preenchidos. uma variável para a instância dessa classe e algumas funções que são chamadas dependendo do carregamento bem ou não sucedido do arquivo. Esse código carrega um arquivo de texto de um servidor remoto e analisa seus pares de nome/valor.helpexamples.... // Domingo. Se não for possível fazer o download do arquivo de texto. Se o arquivo for carregado com êxito. Sobre variáveis 111 . Crie um novo documento do Flash. se criar um sistema de login.Terça-feira.dayNames). em algumas situações não será preciso usar nenhum tipo de variável em seu projeto.onLoad = function(success:Boolean):Void { if (success) { trace(this. No exemplo a seguir.com/flash/ params. 2. 3. } else { trace("Error"). você usará variáveis para armazenar o caminho de uma imagem que está sendo carregada com a classe Loader. Selecione o Frame 1 da Timeline e adicione o seguinte ActionScript ao painel Actions: var my_lv:LoadVars = new LoadVars().com/flash/params.load("http://www. na página 663.txt) em um navegador se desejar saber como as variáveis são formatadas.Para carregar variáveis de um servidor: 1.helpexamples.txt"). Selecione Control > Test Movie para testar o documento.

createTextField("error_txt". Em seguida. } mclListener. 10).text = "Error downloading specified image. 2.height . imgUrl = _level0.jpg". target_mc. A primeira linha do código especifica a imagem a ser carregada dinamicamente no documento do Flash. o URL da imagem padrão será substituído pelo novo valor. target_mc.autoSize = "left". Em seguida.fla.loadClip(). que especifica o arquivo de imagem a ser carregado e o clipe de filme de destino no qual a imagem será carregada. 1. target_mc. if (_level0. img_mc). é feito o download da imagem que será ativada quando você chamar o método MovieClipLoader. Para obter informações sobre como usar variáveis de URL. } this. myMCL.imgURL != undefined) { // Se a imagem tiver sido especificada._y = (Stage.addListener(mclListener). As linhas de código seguintes definem a instância MovieClip e um objeto ouvinte para a instância MovieClipLoader futura. verifique se um novo valor de imgURL foi especificado usando FlashVars ou variáveis codificadas em URL. */ var imgUrl:String = "http://www. crie a instância MovieClipLoader e usa o método addListener() para adicionar o objeto ouvinte definido anteriormente para MovieClipLoader.imgURL.com/flash/images/ image1.Para usar variáveis em um projeto: 1. 112 Dados e tipos de dados .onLoadInit = function(target_mc:MovieClip):Void { target_mc. Selecione o Frame 1 da Timeline e adicione o seguinte ActionScript ao painel Actions: /* Especifique a imagem padrão se um valor não tiver sido passado com FlashVars. 0. consulte “Usando FlashVars em um aplicativo” na página 109.target_mc.width . 0.helpexamples. 100. O objeto ouvinte de MovieClipLoader define dois manipuladores de eventos.target_mc._width) / 2._x = (Stage. var mclListener:Object = new Object(). consulte “Usando variáveis a partir do URL” na página 106. substitua o valor padrão. } var myMCL:MovieClipLoader = new MovieClipLoader()._url. Crie um novo documento do Flash e salve-o como imgloader. onLoadInit e onLoadError. Os manipuladores serão chamados quando a imagem for carregada e inicializada com êxito no Stage ou se a imagem não for carregada.createEmptyMovieClip("img_mc".loadClip(imgUrl. Para obter informações sobre FlashVars. mclListener. myMCL.error_txt. Finalmente. 20).onLoadError = function(target_mc:MovieClip):Void { target_mc.\n\t" + target_mc.error_txt._height) / 2. Se um novo valor tiver sido especificado.

você verá que a imagem é centralizada vertical e horizontalmente no Stage. Para modificar esse exemplo e usar suas próprias imagens. NO T A Verifique se Flash e HTML estão selecionados na caixa de diálogo Publish Settings.com/pub/shockwave/cabs/flash/ swflash. 4.jpg"> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="urlvariables.com/flash/ images/image2. Sobre variáveis 113 .helpexamples.0.3.jpg" bgcolor="#ffffff" width="550" height="400" name="urlvariables" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.helpexamples. portanto.swf" /> <param name="FlashVars" value="imgURL=http://www.macromedia. altere o valor de FlashVars (a seqüência de caracteres entre aspas). Como você está testando o documento do Flash na ferramenta de criação. 5.swf" quality="high" FlashVars="imgURL=http:// www. Uma imagem especificada no código HTML é exibida no arquivo SWF. Teste o documento HTML para ver as alterações.0.cab#version=8. a imagem padrão será exibida. Se testar o documento na ferramenta do Flash (selecione Control > Test Movie) ou em um navegador local (File > Publish Preview (Visualizar publicação) > HTML).0" width="550" height="400" id="urlvariables" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="urlvariables. selecione as duas opções. Em seguida.macromedia. Selecione Control > Test Movie para testar o documento.com/flash/images/image2. nenhum valor de imgUrl será passado por FlashVars ou no URL e.com/go/getflashplayer" /> </object> 6. Salve o documento do Flash e selecione File (Arquivo) > Publish (Publicar) para publicar o arquivo como um documento SWF e HTML. Edite o documento HTML gerado em um editor (como Dreamweaver ou Bloco de Notas) e modifique o HTML padrão de acordo com o seguinte texto: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload. Selecione File > Publish Settings e clique na guia Formats. 7.

“Classes”. 2. a classe interna Date fornece informações do relógio do sistema no computador do usuário. pode existir um objeto MovieClip no Stage. Por exemplo. Os campos de texto. o qual contém outros clipes de filme. firstObj. secondVar:28. Agora digite o seguinte ActionScript após o código inserido na etapa 2. A organização de dados em objetos pode ajudar a manter seus documentos do Flash mais organizados. na página 239. Você pode criar um objeto para armazenar uma coleção de dados. os objetos são coleções de propriedades e métodos. 3. // 1º de janeiro de 1980 Esse código.firstVar = "hello world". Os objetos internos pertencem a classes predefinidas no ActionScript.thirdVar = new Date(1980.secondVar = 28. thirdVar:new Date(1980. 0. Para obter informações detalhadas sobre classes internas e personalizadas. como o nome. em seguida. que é um dos métodos usados para criar um objeto simples.Organizando dados em objetos Você já deve estar familiarizado com os objetos que coloca no Stage. // O segundo método var secondObj:Object = {firstVar:"hello world". consulte “Criando arquivos de classes personalizados” na página 249. Selecione o Frame 1 da Timeline e digite o seguinte ActionScript no painel Actions: // O primeiro método var firstObj:Object = new Object(). Por exemplo. O próximo exemplo cria objetos simples de duas maneiras diferentes e. executa um loop no conteúdo desses objetos. Crie um novo documento do Flash e salve-o como simpleObjects. cria uma nova instância do objeto e define algumas propriedades dele. 0. 1). Para criar objetos simples no Flash: 1. No ActionScript. firstObj. 1)}. os clipes de filme e os botões são geralmente chamados objetos quando colocados no Stage.fla. o endereço e o telefone de uma pessoa. consulte o Capítulo 7. Também é possível criar objetos e classes com o ActionScript. Cada objeto tem seu próprio nome e é uma instância de determinada classe. firstObj. Para obter informações gerais sobre como criar uma classe personalizada para armazenar uma coleção de métodos e propriedades. 114 Dados e tipos de dados . A classe interna LoadVars pode ser usada para carregar variáveis em um arquivo SWF. Também pode criar um objeto para armazenar informações sobre as cores de uma imagem. Há várias maneiras de criar um objeto no ActionScript.

Em vez de ter uma série de variáveis como firstname1. i < usersArr. John. Para usar um array para criar um objeto: 1.push({firstname:"Thomas"}). usersArr. for (i = 0. // George. é possível criar um array de objetos para representar os mesmos dados.firstname). Os dois objetos são equivalentes. usersArr. i++) { trace(usersArr[i]. Thomas } 4.push({firstname:"George"}). 3. 2. Para executar um loop em cada um dos objetos anteriores e exibir o seu conteúdo. A vantagem de organizar variáveis em arrays e objetos é que é muito mais fácil executar um loop nas variáveis e ver os valores. } 5. Selecione o Frame 1 da Timeline e digite o seguinte ActionScript no painel Actions: var usersArr:Array = new Array().fla.length. adicione o seguinte ActionScript ao Frame 1 da Timeline (após o código já inserido): var i:String. O código acima cria um novo objeto e inicializa algumas propriedades usando a notação abreviada do objeto. Essa técnica é demonstrada a seguir. usersArr. Selecione Control > Test Movie e o seguinte texto será exibido no painel Output: George John Thomas Organizando dados em objetos 115 . Digite o seguinte código após o ActionScript adicionado na etapa 2.Este é outro método para criar um objeto. 4. firstname2 e firstname3 para representar uma coleção de variáveis. como mostra a etapa a seguir.push({firstname:"John"}). var i:Number. Selecione Control > Test Movie e o seguinte texto será exibido no painel Output: firstVar: hello world secondVar: 28 thirdVar: Tue Jan 1 00:00:00 GMT-0800 1980 Você também pode usar arrays para criar objetos. for (i in firstObj) { trace(i + ": " + firstObj[i]). Crie um novo documento do Flash e salve-o como arrayObject.

consulte “Usando os loops for. é criado um objeto e um loop é executado nele com for. var3:18. Para obter informações sobre loops for. A conversão de um objeto em um tipo diferente consiste em converter o valor armazenado no objeto ou na variável em outro tipo.O exemplo a seguir representa outro loop executado em objetos. var4:1987}. consulte o Capítulo 5.. } //gera a seguinte saída: /* var1: One var2: Two var3: 18 var4: 1987 */ Para obter informações sobre como criar loops.. Neste exemplo.0 permite que você converta um tipo de dados em outro. Por exemplo. var myNumber:Number = Number(myBoolean). var i:String.in” na página 167. Sobre a conversão O ActionScript 2. coloque o nome do objeto entre parênteses (()) e preceda-o com o nome do novo tipo. consulte os seguintes tópicos: ■ “Sobre a conversão de objetos” na página 117 116 Dados e tipos de dados . var myBoolean:Boolean = true. na página 166. for (i in myObj) { trace(i + ": " + myObj[i]). Para converter um objeto em um tipo diferente.. “Classes”.in. consulte o Capítulo 7. Para obter mais informações sobre a conversão. Os resultados da conversão de tipos variam de acordo com os tipos de dados envolvidos. na página 239. var2:"Two"..in. o código a seguir converte um valor booleano em um inteiro. “Usando os loops for”. Para obter mais informações sobre objetos. e cada propriedade é exibida no painel Output: var myObj:Object = {var1:"One".

bark(curAnimal). Se a expressão for um objeto que implemente a interface ou tenha uma classe base que implemente a interface. a conversão terá êxito.bark(). que retornará null se a conversão falhar durante a execução (isso ocorre nos arquivos publicados no Flash Player 7 ou versões posteriores. o compilador não sabe que a conversão falhará (ou seja. é uma instrução legal. onde você deseja que o compilador se comporte como se o tipo de dados do item fosse type.bark(). poderão ocorrer erros durante a execução. Caso contrário. // Funcionará curAnimal = new Cat().bark(). portanto. } var curAnimal:Animal = new Dog(). foo. o compilador pressupõe que foo. if (foo) { foo. que você tentou converter um objeto Cat em um tipo Animal). O código a seguir mostra um exemplo: // Both the Cat and Dog classes are subclasses of the Animal class function bark(myAnimal:Animal) { var foo:Dog = Dog(myAnimal). Sobre a conversão 117 . bark(curAnimal). Entretanto. A conversão é basicamente uma chamada de função. se você incluir uma verificação no script para garantir que a conversão tenha êxito. function bark(myAnimal:Animal) { var foo:Dog = Dog(myAnimal). Se a conversão for bem sucedida. os arquivos publicados no Flash Player 6 não oferecem suporte a falhas de conversão durante a execução). Entretanto.Sobre a conversão de objetos A sintaxe usada na conversão é type(item). portanto. Entretanto. como mostra este exemplo. N O TA A conversão em null ou undefined retornará undefined. // Não funcionará Nesse exemplo. } } Você pode converter uma expressão em uma interface. você declarou ao compilador que foo é um objeto Dog e. o retorno da chamada de função será o objeto original. o compilador não é capaz de determinar se uma conversão falhará durante a execução e não gerará erros durante a compilação nesses casos. nenhum erro ocorrerá durante a compilação. ela falhará.

Esse exemplo define duas variáveis de seqüência de caracteres (firstNum e secondNum). consulte a entrada de cada função de conversão em ActionScript 2. %{função Boolean}%. // 1729 trace(Number(firstNum) + Number(secondNum)). 118 Dados e tipos de dados . // 46 Para obter mais informações sobre as funções de conversão de dados. A conversão de dados é importante ao trabalhar com dados carregados por meio de XML ou FlashVars. Por exemplo. var secondNum:String = "29". %{função Object}% e %{função String}%. como mostra o seguinte exemplo: var firstNum:String = "17". O resultado inicial é que os números são concatenados em vez de serem adicionados. trace(firstNum + secondNum).Não é possível substituir tipos de dados primitivos que têm uma função de conversão global correspondente por um operador de conversão de mesmo nome. não é possível converter em Array porque a função de conversão Array() tem precedência sobre o operador de conversão. que são adicionadas juntas. %{função Number}%. A segunda instrução trace converte os dois números no tipo de dados Number antes de executar a adição que gera o resultado adequado. pois são do tipo de dados String.0 Language Reference: %{função Array}%. Isso ocorre porque as funções de conversão globais têm precedência sobre os operadores de conversão.

você adicionará o ActionScript diretamente a um quadro da Timeline (Linha de tempo). Na linguagem ActionScript. que podem ser agrupadas para formar os parágrafos. É possível também escrever milhares de linhas de código para potencializar uma aplicação bancária interativa. No ActionScript.0 Language Reference (Referência à linguagem ActionScript 2. O ActionScript pode ser tão simples quanto isso. um ponto-e-vírgula encerra uma instrução. você usará as classes para separar o ActionScript do arquivo FLA. “Dados e tipos de dados. A maioria dos termos do ActionScript também tem requisitos individuais. Os próximos capítulos apresentarão exemplos de código mais longos e cada vez mais complexos que complementarão e facilitarão os fundamentos aprendidos neste capítulo.” explicou como a linguagem ActionScript usa os dados e como é possível formatá-los no código. consulte a entrada correspondente em ActionScript 2. As regras gerais descritas nesta seção aplicam-se a toda a linguagem ActionScript. 119 . Ele contém pequenos trechos de código e alguns exemplos para demonstrar os conceitos fundamentais da linguagem. na língua portuguesa. O Capítulo 4.0. NO TA 5 Neste capítulo.CAPÍTULO 5 Fundamentos da sintaxe e da linguagem A função da sintaxe e das instruções do ActionScript é semelhante à função das palavras nas frases. na página 767.0”. Nos capítulos posteriores. um ponto encerra uma frase. é possível digitar uma ação stop() para interromper o loop da reprodução de uma instância de clipe de filme ou de um arquivo SWF. Por exemplo. Este capítulo demonstrará como formar as instruções no ActionScript usando a sintaxe. Para obter mais informações sobre como aplicar as regras descritas nesta seção. Como você pode ver. Para obter as regras de um termo específico. consulte Capítulo 19. o ActionScript pode realizar tarefas muito simples ou tarefas muito complexas. “Melhores práticas e convenções de codificação para ActionScript 2. Aplicar os princípios básicos do ActionScript para criar programas sofisticados pode ser desafiador para usuários novatos no ActionScript.

. É necessário usar a sintaxe correta do ActionScript para formar as instruções. . . . . . . . . . . . . são combinações legais de símbolos do ActionScript que representam um valor. Você pode. . . . . . . . . . . se verdadeira ou não. . . . . . . . . . . . . . . . . . . . . por exemplo. . . . . . . . consulte os seguintes tópicos: Sobre sintaxe. . . . . . . . . . . . . . . . . . . } Para obter mais informações sobre as instruções. . . . . . . . . . por exemplo. . 120 Fundamentos da sintaxe e da linguagem . . . de acordo com o status da condição. . // if statement if (condition) { // statements. . . . . 143 Sobre instruções. . . . . . . . . . . . . . . . . . . . . . . . A expressão segue as regras de precedência e associação do ActionScript. . . . instruções e expressões . . . . . . . . . . . . . 185 Sobre sintaxe. . . . . . . . . . . . . . . . 149 Sobre arrays . a fim de que o código seja compilado e executado corretamente no Flash. . . . . . . . . . . . . . . . . executar uma ação específica. . operandos. . . . . . O compilador não poderá compreender uma sintaxe incorreta e exibirá erros ou avisos no painel Output (Saída) quando você tentar utilizar o documento no ambiente de teste. . . . diferentes das instruções. . . . . . . . . . . . .Para obter mais informações sobre como trabalhar com os fundamentos da sintaxe e da linguagem do ActionScript. Uma instrução é uma diretriz fornecida ao arquivo FLA para fazer algo. . . utilizar uma instrução condicional para determinar se algo é verdadeiro ou existe. . . consulte “Sobre instruções” na página 149. . A instrução if é condicional e avalia uma condição para determinar a próxima ação a ser executada no código. . . . . . . . . . . . . . . . . . . . Em seguida. . . . poderá executar ações especificadas. . . . . . . a sintaxe seria a gramática e a ortografia de uma linguagem de programação. . . valores. . 120 Sobre sintaxe de ponto e caminhos de destino. . instruções e expressões A linguagem ActionScript é composta de classes internas. . . . . . . . . . a sintaxe é um conjunto de regras e diretrizes que ajudam a compor a linguagem ActionScript corretamente. . . . . funções e procedimentos. . . . . . . . . . 132 Sobre constantes e palavras-chave. . . . . . . . Uma expressão pode ser composta por operadores. . . . . . . . . . . Nesse caso. . . . . . . . As expressões têm valores. . . . . . . . . . . Portanto. . . . . . . . . . . . . . . 124 Sobre pontuadores de linguagem . . . . . . Geralmente. . . enquanto os valores e as propriedades têm tipos. . . . . . . . 172 Sobre operadores. . . . o Flash Player interpreta a expressão e retorna um valor que pode ser utilizado no aplicativo. . . . . . . . . . . As expressões. . . . como funções ou expressões. .

No entanto. se você conhecê-lo. Este manual não tem como objetivo ensinar programação. O site da tecnologia Java contém tutoriais sobre a programação orientada a objetos (http:/ /java.sun. o ActionScript lhe parecerá familiar. como Document. Para obter mais informações sobre os objetos e as propriedades. ou que tenha convenções de formatação e nomeação inconsistentes.com/docs/books/tutorial/java/index. o código a seguir é uma expressão: x + 2 Na expressão anterior. é difícil entender a lógica de um arquivo FLA que não contenha recuos ou comentários. Por exemplo. Para obter mais informações.html) que destinam-se à linguagem Java. A maneira como a linguagem ActionScript é formatada também determina até que ponto será possível fazer a manutenção do código.ecmainternational. consulte “Tipo de dados Object” na página 83. Quando você recua blocos do ActionScript (como loops e instruções if ). consulte www. O ActionScript também baseia-se nessa especificação.Por exemplo.htm. x e 2 são operandos e + é um operador. Não é preciso conhecer o JavaScript para utilizara o ActionScript. instruções e expressões 121 . Para obter mais informações sobre como formatar o ActionScript. ■ Algumas diferenças entre o ActionScript e o JavaScript são descritos na lista a seguir: ■ Sobre sintaxe. Para obter mais informações sobre os operadores e operandos.org/publications/standards/Ecma-262. consulte os seguintes tópicos: ■ ■ “Diferenças entre o ActionScript e o JavaScript” “Sobre distinção entre maiúsculas e minúsculas” Diferenças entre o ActionScript e o JavaScript O ActionScript é semelhante à linguagem de programação JavaScript básica. mas são úteis para compreendermos os conceitos aplicados ao ActionScript. Para obter mais informações sobre os fundamentos da sintaxe e da linguagem. Window e Anchor. a leitura e a depuração do código tornam-se mais fáceis caso ocorra algum problema. ■ A especificação de linguagem ECMAScript (ECMA-262) Edition 3 deriva-se do JavaScript e serve como padrão internacional para a linguagem JavaScript. Há vários recursos que fornecem mais informações sobre os conceitos gerais de programação e sobre a linguagem JavaScript. consulte “Sobre operadores” na página 185. O ActionScript não oferece suporte a objetos específicos de navegadores. consulte “Formatando a sintaxe do ActionScript” na página 799. Você encontrará também a formatação correta do ActionScript nessas seções.

Para obter mais informações sobre como atribuir nomes a variáveis. = 10. = 10.ecma-international.org/publications/standards/Ecma-262.0 or ActionScript 2. na página 767. No ActionScript. Não é recomendável diferenciar as variáveis ou qualquer identificador pelo uso de maiúsculas e minúsculas. consulte Capítulo 19. como rótulos de instrução. o código faz distinção entre maiúsculas e minúsculas.htm). como as classes e a atribuição forte de tipos de dados. No entanto. O ActionScript não oferece suporte a expressões regulares que usam o objeto RegExp. Isso significa que as variáveis com uso de maiúsculas e minúsculas um pouco diferente não são consideradas idênticas.macromedia. // undefined Uma outra alternativa seria escrever o código da seguinte maneira: // In file targeting Flash Player 8 // and either ActionScript 1. a função eval() pode executar somente referências a variáveis.0 oferece suporte a vários recursos que não constam na especificação ECMA-262.0”. // Creates three var myVar:Number var myvar:Number var mYvAr:Number N O TA 122 different variables = 10. “Melhores práticas e convenções de codificação para ActionScript 2. Muitos desses recursos são modelados após a especificação de linguagem ECMAScript (ECMA-262) Edition 3 (consulte www. O ActionScript 2.com/software/ central. a Macromedia Central não oferece suporte ao objeto RegExp.hilite = true. O código do ActionScript a seguir mostra isso: // use mixed capitalization var firstName:String = "Jimmy". consulte www.hilite = true. // use all lower case trace(firstname). ■ ■ ■ Sobre distinção entre maiúsculas e minúsculas Quando você escreve usando a linguagem ActionScript para Flash Player 7 e posterior. O ActionScript não oferece suporte a algumas construções sintáticas do JavaScript. Fundamentos da sintaxe e da linguagem . Para obter mais informações sobre a Macromedia Central.■ ■ O ActionScript não oferece suporte completo a todos os objetos internos do JavaScript. CAT.0 // // Sets properties of two different objects cat.

Se você criou arquivos FLA para Flash Player 6 ou anterior com maiúsculas e minúsculas não correspondentes nas variáveis. Portanto.0).load(). como foi feito neste manual. recomenda-se ser coerente na escolha das convenções de maiúsculas e minúsculas. se você usar loadMovie() para carregar um arquivo SWF do Flash Player 6 em um arquivo SWF do Flash Player 8. o Flash rastreia a seqüência de caracteres Jimmy no painel Output (Saída). Se um aplicativo Flash Player 8 estrito (que faz distinção entre maiúsculas e minúsculas) chamar um arquivo SWF do Flash Player 6 não estrito. firstName e firstname são consideradas duas variáveis separadas (no ActionScript 1. Por exemplo. A distinção entre maiúsculas e minúsculas tem um grande impacto quando se está trabalhando com um serviço da Web que usa suas próprias regras de nomeação de variáveis e quando as variáveis são incluídas ao retornarem do servidor para o arquivo SWF. Se você encontrar erros durante a execução e estiver exportando para mais de uma versão do Flash Player. consulte Capítulo 19.0. as classes e os nomes de função. o ActionScript executado no arquivo SWF do Player 6 será não estrito. Assim. o SWF da versão 6 continuará não fazendo distinção entre maiúsculas e minúsculas. “Melhores práticas e convenções de codificação para ActionScript 2. por exemplo. Altere a instância. a funcionalidade e os arquivos podem ser interrompidos durante a conversão do arquivo ou aplicativo que referencia uma versão mais recente do Flash Player.0”. Não use maiúsculas e minúsculas para diferenciar dois identificadores. também será mais fácil diferenciar as variáveis. Os resultados podem ser inesperados se você não utilizar os nomes exatamente como fornecidos no Flash. Como o Flash Player 7 e as versões posteriores fazem distinção entre maiúsculas e minúsculas. a variável ou o nome da classe. os scripts importados através do comando #include e os scripts de um arquivo FLA. embora o da versão 8 seja considerado um arquivo que faz distinção entre maiúsculas e minúsculas. A distinção entre maiúsculas e minúsculas é implementada em cada arquivo SWF. os nomes de propriedade em uma estrutura ou objeto poderão ter todas as letras maiúsculas. Esse é um conceito importante.0 ou ActionScript 2. analise os arquivos de script externos e os scripts dos arquivos FLA para confirmar se o uso de maiúsculas e minúsculas está consistente. Sobre sintaxe.Quando você publica usando versões do Flash Player (Flash Player 6 e anterior). na página 767. N OT A A distinção entre maiúsculas e minúsculas também afeta as variáveis externas carregadas em um arquivo SWF (as variáveis carregadas com LoadVars. como os arquivos de classe do ActionScript 2. se você usar o serviço da Web ColdFusion. instruções e expressões 123 . FIRSTNAME. Por exemplo. Para obter mais informações sobre as convenções de codificação. por exemplo). e não apenas as maiúsculas ou minúsculas. A distinção entre maiúsculas e minúsculas é implementada para scripts externos.

os elementos de linguagem escritos com as maiúsculas ou minúsculas corretas ficarão azuis. Os caminhos de destino são endereços hierárquicos de nomes de instâncias de clipes de filme. Para obter mais informações sobre como atribuir um nome de instância e usar a sintaxe de ponto para referenciar uma instância. Você pode usar um caminho de destino para atribuir uma ação a um clipe de filme ou para obter ou definir o valor de uma variável ou propriedade. Para especificar um caminho de destino de um clipe de filme ou botão. variável. selecione a instância e digite o nome da instância no Property inspector (Inspetor de propriedades). variáveis e objetos em um arquivo SWF. função ou objeto. Para atribuir um nome a uma instância de clipe de filme. esse operador é utilizado para identificar o caminho de destino de uma instância (como um clipe de filme). você usa o operador de ponto (. consulte “Tipo de dados Object” na página 83. você deve atribuir um nome de instância ao clipe de filme ou botão. Sobre sintaxe de ponto e caminhos de destino No ActionScript. consulte “Sobre palavras reservadas” na página 147. Para controlar um clipe de filme. “Sobre escopo e referência” na página 130 “Usando o botão Target Path” na página 131 “Sobre sintaxe de barra” na página 131 Para obter mais informações sobre os objetos e as propriedades.Quando a sinalização da sintaxe por cores for ativada. As seções a seguir demonstram como escrever expressões com sintaxe de ponto. é necessário especificar um caminho de destino. Uma outra alternativa é especificar o nome da instância com o código. caso ela tenha sido criada através do ActionScript. 124 Fundamentos da sintaxe e da linguagem .) (sintaxe de ponto) para acessar as propriedades ou os métodos que pertencem a um objeto ou a uma instância do Stage (Palco). Além disso. por padrão. Uma expressão com sintaxe de ponto começa com o nome do objeto ou clipe de filme seguido de um ponto e termina com o elemento a ser especificado. Para obter mais informações. arquivo SWF carregado ou botão. consulte os seguinte tópicos: ■ ■ ■ ■ “Sobre uso da sintaxe de ponto para referenciar uma instância” na página 125.

loadMovie("http://www. que você pode especificar de duas formas (conforme demonstrado abaixo): ■ Manualmente. algumas vezes.getNextHighestDepth()). criar instâncias dentro de outras ou deixá-las aninhadas em várias outras instâncias. use um nome de instância. denominado caminho de destino. como mostra o código a seguir: this. Por exemplo. É possível. contanto que ela tenha um nome. Isso pode ser muito simples. A sintaxe de ponto ajuda a criar um caminho para a instânciaalvo. Para referenciar (ou endereçar) objetos em um arquivo SWF.Sobre uso da sintaxe de ponto para referenciar uma instância Para escrever a linguagem ActionScript que controla uma instância (por exemplo. usando o ActionScript. até mesmo. pic_mc. use o ActionScript.createEmptyMovieClip("pic_mc". Para criar uma instância. conforme demonstrou o código anterior. this.jpg"). Para obter mais informações sobre como trabalhar com o escopo. um clipe de filme) ou manipula ativos em um arquivo SWF carregado. consulte “Sobre escopo e referência” na página 130 e “Sobre variáveis e escopo” na página 101. Para atribuir um nome às instâncias. Sobre sintaxe de ponto e caminhos de destino 125 . selecionando uma instância e digitando um nome de instância no Property inspector (Inspetor de propriedades) (quando uma instância estiver no Stage). Um arquivo FLA tem uma hierarquia específica. Isso é denominado caminho de destino. O caminho da instância-alvo é. use a sintaxe de ponto (também denominada notação de ponto). digite um nome na caixa de texto Instance Name (Nome da instância). é necessário referenciar uma instância de clipe de filme ou de botão antes de aplicar uma ação a ela.com/flash/images/image1. ■ Para atribuir um nome à instância no Property inspector. como acontece ao carregar uma imagem nele. Qualquer instância pode ser manipulada. É possível criar instâncias no Stage (Palco) ou usar o ActionScript. especifique o nome e o endereço dessa instância no código. Em seguida.helpexamples. Dinamicamente. Também é possível atribuir um nome de instância a um objeto criado com o ActionScript. Esse código cria um novo clipe de filme e atribui a ele o nome de instância pic_mc. você pode manipular a instância pic_mc usando o código. Atribua um nome a ela ao criá-la.

Use a ferramenta Oval para desenhar uma forma no Stage (Palco). será necessário modificar o caminho de destino apropriadamente. 126 Fundamentos da sintaxe e da linguagem . Selecione Modify (Modificar) > Convert to Symbol (Converter em símbolo). mover a reprodução ou abrir uma página da Web). selecione a opção Movie Clip (Clipe de filme) e clique em OK para criar o símbolo. 7. em seguida. selecione Flash Document (Documento do Flash). criando o caminho de destino.Referenciando uma instância Para que uma instância funcione no arquivo SWF. Lembre-se que você recebeu várias instâncias nos nomes de instância do arquivo FLA e. Ao fazer isso. Lembre-se de selecionar o traço e preenchê-lo se necessário. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da camada actions: myClip.fla ao arquivo. Selecione o clipe de filme no Stage e atribua a ele o nome de instância myClip no Property inspector (Inspetor de propriedades). Selecione File > Save As (Salvar como) e atribua o nome target. Use a ferramenta Selection (Seleção) para selecionar a forma oval no Stage. O ActionScript dimensiona a instância para a metade de sua largura original. Selecione File (Arquivo) > New (Novo) e. Desenhe uma forma oval de qualquer tamanho e cor. depois. é preciso definir o local do arquivo SWF em que essa instância está (por exemplo. em que linha de tempo ela está ou em que instância ela está aninhada). Para obter mais informações sobre os objetos e as propriedades. DICA 2. 8. consulte “Tipo de dados Object” na página 83. 6. Geralmente. você referencia essa instância e a instrui a fazer algo (por exemplo. atribuindo uma ação a ela ou alterando suas propriedades. Como o ActionScript está na mesma linha de tempo que o símbolo de clipe de filme. Essa linha de código referencia a instância myClip no Stage. 3. 4. Insira uma nova camada e renomeie-a como actions. Se a instância estiver em outra linha de tempo ou aninhada em outra instância._xscale = 50. é necessário referenciá-la e instruí-la a executar alguma tarefa. 5. é necessário referenciar a instância usando somente o nome da instância. adicionou código ao arquivo FLA que usa esses nomes de instância. Para referenciar uma instância: 1.

myClip. por exemplo) aparece imediatamente antes da ação. Selecione a nova instância e digite myOtherClip na caixa de texto Instance Name (Nome da instância) no inspetor Properties (Inspetor de propriedades). Selecione a ferramenta Oval e desenhe a forma oval dentro da instância myClip. Sobre sintaxe de ponto e caminhos de destino 127 . Como o arquivo target.nestedClip.Referenciando uma instância aninhada Também é possível referenciar as instâncias aninhadas dentro de outras instâncias. Observe que o clipe manipulado (nestedClip. Você observará essa tendência nas próximas seções. 4. Se você trabalhar com clipes de filme aninhados que tenham suas próprias linhas de tempo.myOtherClip. observe que myOtherClip terá 25% da largura original. manipule a reprodução na linha de tempo de uma instância aninhada usando um código similar ao trecho a seguir: myClip.fla.gotoAndStop("tweenIn"). Clique duas vezes na instância myClip no Stage (Palco). Selecione a nova forma e. Antes de passar para o próximo exercício.fla conforme indicado no procedimento sobre como referenciar uma instância e renomeie-a como target2. selecione Modify (Modificar)> Convert to Symbol (Converter em símbolo). Esse ActionScript redimensiona a instância myOtherClip para metade de sua largura atual. Talvez você queira colocar uma segunda instância de clipe de filme dentro da instância myClip no exercício de “Referenciando uma instância” na página 126. em seguida. 7. 5. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da camada actions: myClip. 2. é necessário concluir o exercício de “Referenciando uma instância” na página 126 e seguir estas etapas para referenciar uma instância aninhada. Selecione a opção Movie Clip (Clipe de filme) e clique em OK. Você também pode referenciar essa instância aninhada usando o ActionScript. Para referenciar uma instância aninhada: 1. Clique em Scene 1 (Cena 1) na barra de edição para retornar à Timeline (Linha de tempo) principal. Abra target._xscale = 50. 3.gotoAndPlay(15). 6. 8.fla modificou a propriedade _xscale das instâncias myClip e myOtherClip é um símbolo aninhado.someOtherClip.

Também é possível definir uma variável em um clipe de filme. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento.getNextHighestDepth()). 4. os valores anteriores seriam substituídos assim que os novos valores fossem definidos.0 Language Reference (Referência à linguagem ActionScript 2. É possível adicionar novas propriedades ao clipe de filme starClip.helpexamples. 128 Fundamentos da sintaxe e da linguagem .fla.loadMovie("http://www. rotateClip. Insira uma nova camada e renomeie-a como actions. Mesmo que tenha adicionado um código que crie uma instância de clipe de filme. que define uma variável no clipe de filme starClip: starClip.com/flash/images/ image1. 5. 6. consulte %{dynamic statement}% em ActionScript 2.gravity = 0.Você não está limitado a acessar métodos e propriedades de instâncias predefinidos no Stage. Depois. a menos que tenha adicionado algo ao clipe.jpg"). pois a classe MovieClip foi definida com a palavra-chave dynamic. conforme visto no código a seguir.8. starClip. Referenciando instâncias dinâmicas e conteúdo carregado Também é possível criar um objeto usando o ActionScript e referenciá-lo posteriormente usando um caminho de destino. você poderia carregar uma imagem no clipe de filme. Por exemplo. nada aparecerá no Stage.speed = 1. você pode usar o ActionScript a seguir para criar um clipe de filme. Digite o seguinte ActionScript após o código adicionado na etapa 3: rotateClip. poderá alterar a rotação desse clipe de filme usando o ActionScript. 3.0). Para obter mais informações sobre a instrução dinâmica. MovieClip) podem adicionar e acessar propriedades dinâmicas durante a execução.1. conforme demonstrado nos exemplos anteriores. mas não conseguirá ver nada no Stage (Palco). Você pode informar que criou um clipe de filme devido à instrução trace. this. trace(rotateClip). Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da camada actions: this. Se as variáveis de velocidade ou gravidade já existissem na instância de clipe de filme starClip. 2. A palavra-chave dynamic especifica que os objetos baseados na classe especificada (nesse caso. conforme mostrado neste exemplo: Para referenciar uma instância de clipe de filme criada dinamicamente: 1._rotation = 50.createEmptyMovieClip("rotateClip". Retorne ao ambiente de criação e abra o painel Actions (Ações). Crie um novo documento do Flash e salve o arquivo como targetClip. Por exemplo.

getNextHighestDepth() permite criar dinamicamente novas instâncias de clipe de filme no Stage sem que seja necessário verificar se já existe alguma instância em uma profundidade específica. use esse padrão. use o código a seguir. se você quiser definir uma variável para uma forma que esteja dentro de outra forma.mouseOver = true. um arquivo SWF carregado no nível 99 possui o caminho de destino _level99. Selecione Control > Test Movie para testar o documento. }. //Set the visibility of level 99 to false.onEnterFrame = function(){ _level99. Agora. a propriedade de um objeto seria myClip. Você está referenciando a instância rotateClip com o ActionScript. 99). Por exemplo. O método MovieClip. um arquivo SWF é carregado no nível 99 e define sua visibilidade para false: //Load the SWF onto level 99. Por exemplo. Para identificar um arquivo SWF carregado: ■ Use _levelX. No exemplo a seguir. A instância submitBtn está dentro de formClip na linha de tempo principal: this.swf". onde X é o número de nível especificado na função loadMovie() que carregou o arquivo SWF._visible = false. loaderClip. loadMovieNum("contents. Sobre sintaxe de ponto e caminhos de destino 129 . DICA É recomendável evitar o uso de níveis caso seja possível carregar um conteúdo nos clipes de filme em profundidades diferentes. Definindo variáveis através de um caminho É possível definir variáveis para instâncias aninhadas dentro de outras instâncias. Por exemplo. Para expressar um método ou propriedade de um objeto específico (como um clipe de filme ou um campo de texto). Também é possível referenciar ou identificar partes dos arquivos SWF carregados em um arquivo SWF base. 7.formClip.Esse código carregará uma imagem no clipe de filme rotateClip criado junto com o código.submitBtn. aparecerá uma imagem no Stage que pode ser girada 50º no sentido horário._alpha = 50.

se o clipe de filme dogClip estiver aninhado dentro do clipe de filme de animação animalClip. referencie o pai do clipe de filme (que é o Stage principal). Por exemplo. mas a linha de tempo principal tiver que ser referenciada. O escopo _root geralmente se refere à linha de tempo principal do documento atual do Flash. Evite usar o escopo _root. consulte “Sobre variáveis e escopo” na página 101.0”. consulte Capítulo 19. _level0. na página 767. Teste o arquivo SWF e a seguinte mensagem aparecerá no painel Output: me: _level0. trace("my parent: " + this.myClip aparecerá no painel Output (Saída) para cada trecho de código acima. a não ser que seja absolutamente necessário. Se você estiver familiarizado com o Flash e o ActionScript. Caso rastreie o clipe de filme.stop(). A instância aninhada chama-se instância filha.myClip my parent: _level0 Isso significa que você referenciou a linha de tempo principal. o clipe de filme que aninha um segundo clipe de filme é denominado pai da instância aninhada. provavelmente já observou pessoas usando o escopo _root._parent). elimine a palavra-chave this e use apenas myClip Você poderia adicionar a palavra-chave this para fins de legibilidade e consistência. ao referenciar um clipe de filme chamado myClip que esteja na linha de tempo atual. portanto. Para referenciar a linha de tempo atual. No entanto. Use caminhos de destino relativos. É possível referenciar instâncias pai e linhas de tempo pai usando o ActionScript. “Melhores práticas e convenções de codificação para ActionScript 2. Clique duas vezes em um clipe de filme e coloque o seguinte ActionScript na linha de tempo do clipe de filme: trace("me: " + this)._parent. Por exemplo. Para obter mais informações sobre o escopo. Se desejar. O Stage (Palco) e a Timeline (Linha de tempo) principais são basicamente um clipe de filme e podem. a seguinte instrução da instância dogClip instruirá animalClip a interromper a animação: this. se o ActionScript estiver dentro do clipe de filme myClip. 130 Fundamentos da sintaxe e da linguagem .myClip. serem referenciados como tal. use a palavra-chave this. Use parent para criar um caminho relativo para um objeto. Para obter mais informações sobre as práticas de codificação recomendadas. em vez de _root. use this.Sobre escopo e referência Quando você aninha instâncias.

Abra o painel Actions (Ações) (Window (Janela) > Actions) e clique no botão Insert Target Path (Inserir caminho de destino).0 e Flash Player 7 ou 8. 2. consulte a página de produtos do Flash Lite. Sobre sintaxe de barra A sintaxe de barra foi usada no Flash 3 e 4 para indicar o caminho de destino de um clipe de filme ou de uma variável. 3. mas não é suportada no ActionScript 2. conforme o desejado. possivelmente ocorrerão erros se o arquivo SWF for carregado em outro documento do Flash. O uso da sintaxe de barra não é recomendável. 4. Essa sintaxe é suportada pelo ActionScript 1.0 no Flash Player 7 e versões anteriores.1 (e versões anteriores). em vez de referenciar sua própria raiz. Se você referenciar uma instância existente no Stage (Palco). Os clipes de filme do documento atual aparecem em uma caixa de diálogo. O caminho de destino da instância selecionada aparece no painel Script.Caso utilize _root no código. no qual a sintaxe de barra deve ser utilizada. poderá usar o botão Target Path (Caminho de destino) para determinar qual deve ser o caminho dessa instância. Usando o botão Target Path Às vezes. demora um pouco para descobrir um caminho de destino específico ou qual caminho de destino é necessário para um determinado código. Sobre sintaxe de ponto e caminhos de destino 131 . Ela é necessária. Para obter mais informações sobre o Flash Lite. Quando o arquivo SWF é carregado em outro arquivo SWF. Clique em OK. Selecione uma das instâncias na lista da caixa de diálogo. a menos que não haja outra opção. quando é preciso criar um conteúdo destinado especificamente ao Flash Player 4 ou Flash Lite 1. Isso pode gerar resultados imprevisíveis ou interromper a funcionalidade. Para usar o botão Target Path: 1. por exemplo. o escopo _root do arquivo carregado pode apontar para o escopo raiz no qual ele é carregado.

é recomendável usar o ponto-e-vírgula ao criar scripts.).). consulte “Formatando a sintaxe do ActionScript” na página 799. os ponto-e-vírgulas precedentes são anexados ao final da instrução. É possível omitir o ponto-e-vírgula. N OT A 132 O uso de um ponto-e-vírgula para encerrar uma instrução permite inserir mais de uma instrução em uma única linha. pois ele melhora a legibilidade do código. por padrão. Um outro local em que se usa o ponto-e-vírgula é nos loops for. Para obter informações sobre espaço em branco e formatação de código. consulte os seguintes tópicos: ■ ■ ■ ■ ■ “Ponto-e-vírgula e dois-pontos” na página 132 “Chaves” na página 133 “Parênteses” na página 137 “Sobre literais” na página 138 “Sobre comentários” na página 139 Para obter mais informações sobre o operador de ponto (. myClip. Ponto-e-vírgula e dois-pontos As instruções do ActionScript são encerradas com um ponto-e-vírgula (. consulte “Usando operadores de ponto e de acesso de array” na página 194. conforme demonstrado nas duas linhas de código a seguir: var myNum:Number = 50. Os tipos de pontuadores mais comuns são ponto-e-vírgula. As seções a seguir explicam como usar os pontuadores no código. Nesse caso.Sobre pontuadores de linguagem Existem diversos pontuadores de linguagem no Flash. parênteses [()] e chaves ({}). Para obter mais informações sobre os pontuadores de linguagem. No entanto. (. O exemplo se repete de 0 a 9 e exibe cada número no painel Output (Saída): Fundamentos da sintaxe e da linguagem . dois-pontos (:)._alpha = myNum. Ele é utilizado para separar parâmetros. o compilador do ActionScript assumirá que cada linha de código representa uma única instrução. Cada um desses pontuadores têm um significado especial na linguagem Flash e ajuda a definir tipos de dados. encerrar instruções ou estruturar o ActionScript.) e os operadores de acesso de array ([]). conforme mostrado no exemplo a seguir. Quando você clica no botão Auto Format (Formatação automática) do painel Actions (Ações) ou da janela Script. mas isso geralmente dificulta a leitura do código.

return squared. consulte Capítulo 4. “Dados e tipos de dados”.) e em classes e interfaces criadas por você. Date. O exemplo a seguir mostra um código escrito de modo insatisfatório: Sobre pontuadores de linguagem 133 . } É possível declarar o tipo de dados de objetos com base em classes internas (Button.. “Melhores práticas e convenções de codificação para ActionScript 2. if. var myDate:Date = new Date().. Também é possível especificar se os objetos são do tipo de dados Function ou Void. Para atribuir a um item um tipo de dados específico. consulte Capítulo 19. // strict typing of parameters function welcome(firstName:String. Essa prática ajudará a evitar erros no ActionScript quando você esquecer de adicionar chaves ao código. i < 10.var i:Number.else Delimite cada instrução entre chaves quando ela fizer parte de uma estrutura de controle ou for). N OT A Também é possível colocar a chave de abertura na linha após a declaração. do tipo personalizado Student: var firstStudent:Student = new Student(). No trecho a seguir. for (i = 0.0”. // 0. na página 75. As convenções de codificação recomendam colocar a chave de abertura na mesma linha para fins de consistência.9 } Os dois-pontos (:) são utilizados no código para atribuir tipos de dados às variáveis. Para obter informações sobre as chaves e convenções de codificação. como no exemplo a seguir: // strict typing of variable or object var myNum:Number = 7.. as definições de classe e as funções do ActionScript em blocos usando as chaves ({}). myAge:Number) { } // strict typing of parameter and return value function square(num:Number):Number { var squared:Number = num * num. MovieClip etc. na página 767.1. i++) { trace(i).. Coloque a chave de abertura na mesma linha da declaração.. você criará um novo objeto. mesmo que ela contenha somente uma instrução. Chaves Agrupe os eventos. defina seu tipo usando a palavra-chave var e a sintaxe pós-dois-pontos. Para obter mais informações sobre como atribuir tipos de dados.

DICA As chaves serão adicionadas a essa instrução se você clicar no botão Check Syntax (Verificar sintaxe). }. o que poderá gerar resultados inesperados.loadClip(imgUrl. se você adicionar uma segunda instrução após a instrução trace.helpexamples. 100). O exemplo a seguir exibe um arquivo de classe simples que pode ser utilizado para criar um objeto Student. 2.onLoadStart = function() { trace("starting"). a segunda instrução será executada. if (numUsers == 0) { trace("no users found")."). myClipl. Selecione File > Save As (Salvar como) e salve o novo documento como Student. }. mclListener. this. consulte Capítulo 7. Selecione File (Arquivo) > New (Novo) e.onLoadInit = function(target_mc:MovieClip):Void { trace("success"). na página 239. quer a variável numUsers seja igual a 0 ou não.var numUsers:Number. ele é considerado insatisfatório porque não tem chaves delimitando as instruções. Para obter mais informações sobre os arquivos de classe. Por isso.as. var imgUrl:String = "http://www. Embora esse código seja válido. var myClipl:MovieClipLoader = new MovieClipLoader().com/flash/images/image1. em seguida. mclListener. “Classes”. Para usar chaves em um arquivo do ActionScript: 1.createEmptyMovieClip("img_mc". if (numUsers == 0) trace("no users found. adicione as chaves para que a saída do código seja semelhante à mostrada neste exemplo: var numUsers:Number. 134 Fundamentos da sintaxe e da linguagem .onLoadError = function(target_mc:MovieClip):Void { trace("failure"). }.jpg". var mclListener:Object = new Object(). mclListener. } O exemplo a seguir cria um objeto ouvinte de eventos e uma instância MovieClipLoader. selecione ActionScript File (Arquivo do ActionScript). myClipl. Nesse caso. img_mc).addListener(mclListener).

. this. "John". trace(firstStudent. Selecione File > New e clique em Flash Document (Documento do Flash) para criar um novo arquivo FLA. 8.fla import Student. lastName:String) { this. public function Student(id:String. trace(firstStudent. // Craig 6. } public function set firstName(value:String):Void { this._lastName = lastName. var firstStudent:Student = new Student("cst94121". Selecione File > New e._id = id._firstName._firstName = value.firstName). Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: // student_test.fla.firstName = "Craig"._middleName = middleName. "Doe"). firstName:String. "H. Selecione File > Save (Salvar) para salvar as alterações efetuadas em student_test.firstName). this.". 9.fla. middleName:String. selecione Flash Document para criar um novo arquivo FLA.3. _lastName:String. Adicione o seguinte ActionScript ao arquivo AS: // Student. Para usar chaves nas funções: 1. 7. } public function get firstName():String { return this.as class Student private var private var private var private var { _id:String. } 4. O exemplo a seguir demonstra como as chaves são utilizadas nas funções.. Salve o novo arquivo FLA como student_test._firstName = firstName. } // . Selecione Control (Controlar) > Test Movie (Testar filme) para testar os arquivos FLA e AS. Sobre pontuadores de linguagem 135 . Salve o arquivo de classe. em seguida. this. 5. _middleName:String. _firstName:String. // John firstStudent.

". No arquivo SWF.text = "". uma mensagem de erro será exibida se você clicar na instância Button do Stage e não tiver o texto no componente TextInput firstName_ti. return false. lastName:"Doe"}.addEventListener("click". } function clickListener(evt_obj:Object):Void { var success:Boolean = checkForm(). middleName:"H. }. as propriedades são definidas no objeto através da especificação dos nomes de variáveis entre chaves ({}): var myObject:Object = {id:"cst94121". Arraste uma instância do componente Button para o Stage e atribua a ela o nome submit_button. com a instância de componente Label selecionada. if (firstName_ti. } 136 Fundamentos da sintaxe e da linguagem . Selecione File > Save para salvar o documento do Flash.text = "Please enter a first name.length == 0) { status_lbl. Digite 200 na caixa de texto W (width) (L (largura)) para redimensionar o componente para 200 pixels de largura. submit_button. 8. Arraste uma instância do componente Label do painel Components (Componentes) para o Stage (Palco).". Esse erro aparecerá no componente Label e informará aos usuários que eles precisam digitar um nome. 9. 4. var i:String.2. 6. } return true. Selecione File > Save As e atribua o nome checkform. clickListener).fla ao arquivo. Abra o Property inspector (Inspetor de propriedades) (Window (Janela) > Properties (Propriedades) > Properties) e. Selecione O próximo exemplo que utiliza chaves mostra como criar e definir propriedades em um objeto. Selecione o Frame 1 da Timeline e adicione o seguinte ActionScript ao painel Actions (Ações): function checkForm():Boolean { status_lbl.text. digite o nome de instância status_lbl na caixa de texto Instance Name (Nome da instância). firstName:"John". Neste exemplo. 10. 5. Arraste uma instância do componente TextInput para o Stage e atribua a ela o nome firstName_ti. 3. for (i in myObject) { trace(i + ": " + myObject[i]). 7. Control > Test Movie para testar o código no ambiente de criação.

happy:Boolean):Void { // Your code goes here. 16. Parênteses Ao definir uma função no ActionScript.8._x + 20) * 0.8. a multiplicação será computada primeiro. atribuído à variável computedValue. É possível usar parênteses para substituir a ordem de precedência do ActionScript ou para facilitar a leitura das instruções do ActionScript._x + 20. deverá adicionar uma instrução para avaliar a expressão. Devido à ordem de precedência. Por exemplo./* id: cst94121 firstName: John middleName: H. var computedValue:Number = tempValue * 0._x e. Se você não usar parênteses. conforme mostrado nas linhas de código a seguir: function myFunction(myName:String. conforme mostrado no exemplo a seguir: var tempValue:Number = circleClip. o código a seguir cria uma instância Object vazia: var myObject:Object = {}. Isso significa que é possível alterar a ordem em que os valores são computados delimitando certos valores entre colchetes. Sobre pontuadores de linguagem 137 . O resultado. é necessário verificar se o parêntese de abertura tem um parêntese de fechamento. myAge:Number. lastName: Doe */ Também é possível usar chaves vazias como atalho de sintaxe para a função new Object(). se você não utilizou os parênteses ou usou duas instruções separadas. será adicionado ao valor atual de circleClip. conforme mostra o exemplo a seguir: var computedValue:Number = (circleClip. } Ao chamar uma função. DICA Lembre-se de que cada chave de abertura deve ter uma chave de fechamento. true).8. você coloca os parâmetros entre parênteses [()]. por fim. o que significa que a primeira operação será 20 * 0. Assim com os colchetes e as chaves. você também coloca qualquer parâmetro transmitido para a função entre parênteses. 78. conforme mostrado no exemplo a seguir: myFunction("Carl".

respectivamente. 1. 3. "beta". 5. Cada propriedade é declarada com doispontos (:). "gamma").) para separar elementos de array.4 null undefined true false Os literais também podem ser agrupados para formar literais compostos. propA. propB:2.) para separar as propriedades de objeto. Os exemplos a seguir são literais: 17 "hello" -3 9. O exemplo a seguir cria um novo objeto genérico e o inicializa com três propriedades. Um literal de array pode ser usado para inicializar um array. Os literais de objeto são delimitados por chaves ({}) e usam a vírgula (. var myNums:Array = new Array(1. propC:3}). propC:3}. 3. pode-se citar true. Os literais também podem ser usados para inicializar um objeto genérico. // using new statement var myStrings:Array = new Array("alpha". 2. 8]. pontuador que separa o nome da propriedade do valor da propriedade. "gamma"]. cada uma delas com valores definidos para 1. É possível criar um objeto genérico usando a instrução new e transmitir o literal de objeto como um parâmetro para o construtor da classe Object. // assigning literal directly var myObject:Object = {propA:1. 5. // using new statement var myObject:Object = new Object({propA:1. // assigning literal directly var myStrings:Array = ["alpha". "beta". var myNums:Array = [1. 2. false. Uma outra alternativa é atribuir o literal de objeto diretamente à instância que está sendo declarada.Sobre literais Um literal é um valor que aparece diretamente no código. Os literais são valores de constante (invariáveis) dos documentos do Flash. Os exemplos a seguir mostram dois arrays que são inicializados através de literais de array. 138 Fundamentos da sintaxe e da linguagem . a seqüência de caracteres “foo”. 0. até mesmo. 52 ou. 2 e 3. propB e propC. Os literais de array são delimitados por colchetes ([]) e usam a vírgula (. Um objeto genérico é uma instância da classe Object. Como exemplos de literal. propB:2. mas também é possível atribuir valores de literal diretamente ao instanciar qualquer classe interna do ActionScript. É possível usar a instrução new e transmitir o literal composto como um parâmetro para o construtor da classe Array. 8).

o espaço em branco será removido. Em vez disso. a menos que seja estritamente necessário usar um objeto String para obter melhor desempenho. É altamente recomendável o uso de comentários para adicionar observações aos scripts.Não confunda um literal de seqüência de caracteres com um objeto String. respondendo a perguntas "como" e "por quê". Um exemplo de comentário desordenado é uma linha de sinais de igual (=) ou asteriscos (*) utilizada para criar um bloco ou uma separação em torno dos comentários. Lembre-se de adicionar novamente o espaço em branco no código ou use linhas de comentário únicas (//) para manter o espaçamento. você ou outro desenvolvedor poderá localizar facilmente seções de código para atualizar ou corrigir. Sobre pontuadores de linguagem 139 . Os comentários documentam as decisões tomadas em relação ao código. Evite usar comentários desordenados. Por exemplo. a primeira linha de código cria o literal de seqüência de caracteres firstStr e a segunda linha de código cria o objeto String secondStr: var firstStr:String = "foo" var secondStr:String = new String("foo") Use literais de seqüência de caracteres. adicione comentários. Sobre comentários Os comentários são uma forma de fazer anotações no código com descrições em inglês sem formatação que não serão avaliadas pelo compilador. Assim. consulte “Sobre seqüências de caracteres e a classe String” na página 477. será possível aperfeiçoar o ActionScript removendo a solução alternativa. use espaços em branco para separar os comentários do ActionScript. Se o problema for corrigido ou amenizado em uma versão futura do Flash ou Flash Player. Será mais fácil remover essas linhas depois que você formatar o código do que tentar encontrar o espaço em branco. Para obter mais informações sobre as seqüências de caracteres. Se você formatar o ActionScript usando o botão Auto Format (Formatação automática) do painel Actions (Ações) ou da Janela Script. É possível usar comentários no código para descrever o que o código está fazendo ou quais dados serão retornados ao documento. Eles facilitam a compreensão do ActionScript. você pode descrever uma solução alternativa nos comentários. No exemplo a seguir. Os comentários devem explicar claramente a intenção do código. e não apenas traduzi-lo. O uso dos comentários pode ajudar você a lembrar decisões de codificação importantes e pode ser útil para qualquer outra pessoa que leia o código. Se algo não estiver muito óbvio no código.

Adicione comentários ao código se você estiver criando aplicativos de exemplo destinados a demonstrar o Flash ou se estiver escrevendo artigos ou tutoriais sobre o ActionScript. remova quaisquer comentários supérfluos do código. Se for necessário incluir vários comentários sobre o funcionamento do código. O tamanho dos comentários não afeta o tamanho do arquivo exportado e eles não precisam seguir as regras de palavras-chave ou sintaxe do ActionScript. como “define the x and y variables” (definir variáveis x e y) ou outros comentários óbvios para outros desenvolvedores. considere se não é necessário reescrever alguns códigos. É possível usar comentários de linha única para fazer qualquer comentário breve que caiba em uma linha. Comentários de linha única Use comentários de linha única para adicionar um comentário a uma única linha de código. anteceda o comentário com duas barras (//). Os desenvolvedores geralmente usam comentários de várias linhas para descrever arquivos.Antes de implantar o projeto. conforme mostrado no código a seguir: // The following sets a local variable for age. por padrão. NO TA 140 O uso de comentários no ActionScript é mais importante quando o objetivo é treinar o público-alvo. Os comentários de linha única são geralmente utilizados para explicar um pequeno trecho de código. Quando a sinalização da sintaxe por cores for ativada. os comentários aparecerão em cinza. estruturas de dados e métodos. isso geralmente será um indício de que o ActionScript não é sofisticado nem intuitivo. Para indicar que uma linha ou parte de uma linha é um comentário. Você poderia criar uma única linha de código ou adicionar uma breve descrição sobre a função de uma parte de um código. Fundamentos da sintaxe e da linguagem . Eles são geralmente inseridos no início de um arquivo e antes ou dentro de um método. Caso ache que há muitos comentários extras no ActionScript. var myAge:Number = 26. O exemplo a seguir inclui um comentário de linha única: while (condition) { // handle condition with statements } Comentários de várias linhas Use comentários de várias linhas (também denominados comentários em bloco) para fazer comentários que ocupem diversas linhas.

As variáveis são usadas para controlar as opções escolhidas. // The following code is commented out and will not run. Sobre pontuadores de linguagem 141 . var currentMonth:Number = myDate. var namePrefix:String = "My name is". /* // create new Date object var myDate:Date = new Date(). var x:Number = 15.getMonth(). coloque /* no início das linhas comentadas e */ no final do bloco de comentário. poderá comentá-las facilmente antecedendo-as com caracteres de barras duplas (//) (por exemplo. Isso permitirá inserir e retirar o comentário do código com rapidez e facilidade. var currentDate:Number = myDate.getFullYear(). a parte do código contida no bloco não é executada: // The following code runs. */ // The code below runs. var age:Number = 20. ///* e //*/). O formato de um comentário de várias linhas é o seguinte: /* O ActionScript a seguir inicializa variáveis utilizadas nos sistemas principais e de submenus. */ D IC A DICA Se você inserir os caracteres de comentário (/* e */) em linhas separadas no início e no final do comentário. Por exemplo. quando o script a seguir é executado. Essa técnica permite criar comentários extensos sem adicionar // no início de cada linha.Para criar um bloco de comentário. var year:Number = myDate. // convert month number to month name var monthName:String = calcMonth(currentMonth). O uso de // em diversas linhas seqüenciais pode acarretar alguns problemas quando os comentários são modificados. Recomenda-se inserir uma linha em branco antes de um comentário em bloco. você poderá testar partes específicas de um script. Ao inserir uma grande quantidade de scripts em um bloco de comentários (que significa comentar uma parte do script). var y:Number = 20.getDate().

class version 1. conforme mostrado no código a seguir. var myCoffee:String = "Hortons". // variable for my age trace(myAge). 142 Fundamentos da sintaxe e da linguagem .Comentários finais Use o recurso de comentário final para adicionar um comentário à mesma linha do código. var myCountry:String = "Canada". Recomenda-se iniciar todos os arquivos de classe com um comentário que forneça o nome da classe. se possível. Inc. os comentários finais se moverão para a próxima linha. Os comentários finais devem ter o seguinte formato: var myAge:Number = 26. você poderia documentar a classe com um comentário semelhante a este: /** Pelican. classes. seu número de versão. Esses comentários aparecem na mesma linha do código do ActionScript. a fim de que os leitores possam distinguí-los do código. Tente manter os comentários alinhados. // 26 Recue os comentários para a direita. Há dois tipos de comentários em uma classe ou arquivo de interface comum: comentários de documentação e comentários de implementação. Os comentários de implementação são usados para fazer comentários sobre o código ou sobre a implementação de seções específicas do código. // my age // my country // my coffee preference Se você usar a formatação automática (clique no botão Auto Format (Formatação automática) no painel Actions (Ações). a data e o copyright. */ Use comentários em bloco para descrever arquivos. será necessário modificar a posição dos comentários após o uso do botão Auto Format. Os desenvolvedores geralmente usam comentários finais para indicar o que uma variável contém ou para descrever o valor retornado em uma linha do of ActionScript. estruturas de dados e métodos.2 10/10/2005 copyright Macromedia. Comentários dentro das classes Use comentários nas classes e interfaces para documentá-las e ajudar os desenvolvedores a compreender o conteúdo da classe. var myAge:Number = 28. Adicione esses comentários depois que formatar o código. Do contrário. Eles são geralmente inseridos no início de um arquivo e antes ou dentro de um método. Use os comentários de documentação para descrever interfaces. métodos e construtores. Por exemplo. Os comentários de documentação são usados para descrever as especificações do código e não descrevem a implementação.

interface ou membro e coloque-o diretamente antes da declaração. Para obter mais informações sobre esses tipos de comentários. As palavras-chave no ActionScript são usadas para executar tipos específicos de ações. não inclua comentários que descrevam o pacote correspondente. function e return. elas são valores que não se alteram em todo o aplicativo. Os valores de constante não facilitam apenas o desenvolvimento e a depuração. O Flash possui diversas constantes predefinidas. Como exemplos de palavras reservadas. consulte as seguintes seções: “Comentários de linha única” na página 140 “Comentários de várias linhas” na página 140 “Comentários finais” na página 142 Sobre constantes e palavras-chave As constantes e as palavras-chave são os componentes básicos da sintaxe do ActionScript. ela contém várias propriedades. Além disso.ENTER ou Key. Os dois tipos de comentários usam delimitadores um pouco diferentes. this. mas também a leitura do código pelos outros desenvolvedores. que podem ajudar a simplificar o desenvolvimento de um aplicativo. Também é possível usar comentários de linha única. A classe Key possui um exemplo de constantes. Sobre constantes e palavras-chave 143 . função ou rótulo). As constantes são propriedades com um valor fixo que não podem ser alteradas. como Key.Inclua um comentário de documentação para cada classe. que não podem ser usadas como identificadores (como os nomes de variável. enquanto os de implementação são delimitados por /* e */. DICA ■ ■ ■ Não inclua comentários que não estejam diretamente relacionados à classe que está sendo lida. Se você utilizar as constantes. Portanto. else. nunca precisará memorizar que os valores de código das teclas Enter e Page Down são 13 e 34. Por isso. elas também são palavras reservadas. Por exemplo.PGDN. comentários em bloco e comentários finais nos arquivos de classe. Os comentários de implementação devem vir logo após a declaração. use comentários de implementação (em blocos de comentários ou em comentários de linha única). pode-se citar if. Se houver informações adicionais a serem documentadas que não se ajustem aos comentários de documentação. Os comentários de documentação são delimitados por /** e */.

use a seguinte instrução: var keyListener:Object = new Object(). conforme mostrado no ActionScript a seguir: 144 Fundamentos da sintaxe e da linguagem . as constantes BACKSPACE. a não ser quando você cria suas próprias classes personalizadas com variáveis de membro privadas.getCode() == Key. Key. SPACE e TAB são propriedades da classe Key e se referem às teclas do teclado.ENTER) { trace("Are you ready to play?"). Não é possível criar uma variável “somente leitura” no Flash. As constantes são úteis quando se quer comparar valores e usar valores fixos no aplicativo. Selecione Control (Controlar) > Test Movie (Testar filme) no menu principal. A constante Key. consulte os seguintes tópicos: ■ ■ ■ “Usando constantes” na página 144 “Sobre palavras-chave” na página 146 “Sobre palavras reservadas” na página 147 Para obter mais informações sobre os objetos e as propriedades.TAB sempre tem o mesmo significado: ela indica a tecla Tab em um teclado. A linguagem ActionScript contém várias constantes predefinidas. Separe as palavras com caracteres de sublinhado. Usando constantes As constantes são propriedades com um valor fixo que não podem ser alteradas. ENTER. keyListener. Portanto. Depois. as constantes (variáveis que não se alteram) devem conter letras maiúsculas. Por exemplo. Para que o ActionScript anterior funcione.addListener(keyListener). As variáveis devem conter letras minúsculas ou letras minúsculas e maiúsculas. elas são valores que não se alteram em todo o aplicativo. Para testar se o usuário está pressionando a tecla Enter. selecione Control > Disable Keyboard Shortcuts (Desativar atalhos de teclado) na janela de visualização do arquivo SWF.0 Language Reference (Referência à linguagem ActionScript 2.0). No Flash. talvez seja necessário desativar os atalhos de teclado no ambiente de criação. enquanto visualiza o arquivo SWF no player. No entanto.Para obter mais informações sobre as constantes e palavras-chave. não há como criar seus próprios valores de constante. Para obter uma lista das constantes da linguagem (como false e NaN). consulte “Tipo de dados Object” na página 83.onKeyDown = function() { if (Key. } }. consulte ActionScript Language Elements (Elementos da linguagem ActionScript) > categoria Constants (Constantes) em ActionScript 2.

private var EXAMPLE_PRIVATE:String = "Class access". a definição de classe no exemplo a seguir cria três constantes que seguem a convenção de nomeação utilizada pelo ActionScript 2. } 2. você usa esse código para acessar o valor da propriedade.EXAMPLE_STATIC).0.macromedia. o que significa que ela se aplica à classe como um todo. Atribua o nome ConstExample.fla. e não a uma determinada instância da classe. consulte “Sobre literais” na página 138. a menos que a constante seja 1. A propriedade EXAMPLE_STATIC é estática.var BASE_URL:String = "http://www. //constant var MAX_WIDTH:Number = 10. Você deve acessar a propriedade estática de uma classe usando o nome da classe. //constant Escreva as constantes estáticas em maiúsculas e separe as palavras com um sublinhado. que você pode usar em um loop for como um valor de contador. Sobre constantes e palavras-chave 145 . selecione ActionScript File (Arquivo do ActionScript) para criar um arquivo AS. No painel Actions. 0 ou -1. 4. 3. Global access será exibido no painel Output (Saída). Isso ajudará a detectar erros de digitação no código que provavelmente não serão encontrados se você usar literais. Para usar constantes em um aplicativo: 1. Selecione Control > Test Movie para testar o documento.com". digite esse código após o código adicionado na etapa 5. em seguida. além de permitir a alteração do valor em um único local. 6. Crie um novo documento do Flash e salve-o como const. É possível usar constantes em situações nas quais é necessário fazer referência a uma propriedade cujo valor nunca é alterado. Selecione File (Arquivo) > New (Novo) e. 7. 5. Por exemplo. public var EXAMPLE_PUBLIC:String = "Public access". Não é possível acessar uma propriedade estática através de uma instância de classe. // output: Global access Ao declarar a propriedade EXAMPLE_STATIC como estática. Abra o painel Actions (Ações) e digite o código a seguir no Frame 1 (Quadro 1) da Timeline (Linha de tempo): trace(ConstExample. Digite o seguinte código na janela Script: class ConstExample { public static var EXAMPLE_STATIC:String = "Global access".as ao novo arquivo. Para obter mais informações sobre os literais. Não codifique diretamente constantes numéricas. e não o nome de uma instância.

// error trace(ConstExample. exclua a instrução trace adicionada na etapa 10. está disponível somente na definição da classe. // error 8. trace(myExample. 11. 12. Public access será exibido no painel Output. o seguinte código no painel Actions: var myExample:ConstExample = new ConstExample(). // error A propriedade EXAMPLE_PRIVATE é privada e. 146 Fundamentos da sintaxe e da linguagem .EXAMPLE_PRIVATE).trace(ConstExample. Insira Esse código cria a instância myExample e acessa a propriedade EXAMPLE_PUBLIC. 9.EXAMPLE_PRIVATE). Selecione Control > Test Movie para testar o documento. ela está disponível para ser codificada fora da definição da classe. Selecione Control > Test Movie para testar o documento. Para acessar uma propriedade não estática.EXAMPLE_PUBLIC). consulte Capítulo 7. As propriedades EXAMPLE_PUBLIC e EXAMPLE_PRIVATE não são estáticas. // output: Public access 10. 14. Por exemplo. Quando você tenta acessar os valores através da classe. na página 239. No painel Actions. A palavra-chave var é mostrada na linha de código a seguir: var myAge:Number = 26. use a palavra-chave var para declarar uma variável. portanto. Insira o seguinte código no painel Actions: trace(myExample. recebe a seguinte mensagem de erro: The property being referenced does not have the static attribute. “Classes”. exclua as instruções trace adicionadas nas etapas 5 e 7. painel Actions. Como a propriedade EXAMPLE_PUBLIC é pública. Selecione Control > Test Movie para testar o documento. A mensagem The member is private and cannot be accessed (O membro é privado e não pode ser acessado) será exibida no painel Output. Para obter mais informações sobre as classes internas e sobre como criar classes personalizadas. acesse o valor através de uma instância da classe. No 13.EXAMPLE_PUBLIC). Sobre palavras-chave As palavras-chave são palavras do ActionScript que têm uma função específica.

A tabela a seguir lista as palavras-chave do Flash que ocasionam erros nos scripts: add catch delete eq function if in le not private static throw void and class do extends ge ifFrameLoaded instanceof lt on public switch try while break continue dynamic finally get implements interface ne onClipEvent return tellTarget typeof with case default else for gt import intrinsic new or set this var Sobre constantes e palavras-chave 147 . this. Isso significa que você não deve usá-las para atribuir nomes a variáveis. pois isso pode acarretar problemas técnicos no seu trabalho. são instruções e palavras do ActionScript reservadas para uso futuro. função ou rótulo) e você não deve usá-las em nenhum outro local dos arquivos FLA para outros fins (como nomes de instância). função ou rótulo).Uma palavra-chave é uma palavra reservada que tem um significado específico: por exemplo. por sua vez. As palavras-chave não podem ser usadas como identificadores (como nomes de variável. O ActionScript reserva palavras da linguagem para fins específicos. As palavras reservadas são palavras-chave. “Dados e tipos de dados”. instâncias. use a palavra-chave class para definir uma nova classe do ActionScript e a palavra-chave var para declarar variáveis locais.. Estes são outros exemplos de palavras-chave reservadas: if. não é possível usar palavraschave como identificadores (como nomes de variável. Portanto. else. Essas palavras-chave estão listadas em “Sobre palavras reservadas” na página 147. Você já utilizou bastante a palavra-chave var. principalmente se leu o Capítulo 4. na página 75. Sobre palavras reservadas As palavras reservadas são palavras que não podem ser utilizadas como identificadores no código. classes personalizadas etc. function e return. pois elas estão reservadas para serem usadas pelo ActionScript. que.

classe de componente e interface são palavras reservadas e não devem ser usados como identificadores no código: Accessibility Binding CellRenderer ComboBox CustomActions DataHolder Date DeltaItem Error Iterator Loader Math Microphone NetConnection Object ProgressBar ScrollPane SOAPCall StyleManager TextFormat Tree UIEventDispatcher Accordion Boolean CheckBox ComponentMixins CustomFormatter DataProvider DateChooser DeltaPacket FocusManager Key LoadVars Media Mouse NetStream PendingCall RadioButton Selection Sound System TextInput TreeDataProvider UIObject Alert Button Collection ContextMenu CustomValidator DataSet DateField DepthManager Form Label LocalConnection Menu MovieClip Number PopUpManager RDBMSResolver SharedObject Stage TextArea TextSnapshot TypedValue Video Array Camera Color ContextMenuItem DataGrid DataType Delta EndPoint Function List Log MenuBar MovieClipLoader NumericStepper PrintJob Screen Slide String TextField TransferObject UIComponent WebService 148 Fundamentos da sintaxe e da linguagem .A tabela a seguir lista palavras-chave que são reservadas para uso futuro no ActionScript ou pela especificação preliminar ECMAScript (ECMA-262) Edition 4. Evite também usar estas palavras-chave no código: abstract byte debugger float enum long protected throws export synchronized double transient short char volatile goto Todos os nomes de classe interna.

nomes de classe de componente e valores como nomes no código (como acontece quando você atribui nomes a variáveis. como funções ou expressões. Por exemplo. Mesmo que haja diferentes formas de compor instruções sem interromper o código. Você pode. de acordo com o status da condição.WebServiceConnector Window XUpdateResolver XML XMLConnector Diversas palavras. executar uma ação específica. O exemplo a seguir mostra o uso recomendado e não recomendado das instruções: Sobre instruções 149 . existem algumas diretrizes gerais que você pode seguir para escrever um ActionScript válido. Portanto. consulte ActionScript 2. Coloque apenas uma instrução em uma linha para aumentar a legibilidade do ActionScript. interfaces. classes ou instâncias). a instrução if é condicional e avalia uma condição para determinar a próxima ação a ser executada no código.0 no Flash). que retorna um resultado como valor da função em que ela é executada.0 Language Reference (Referência à linguagem ActionScript 2. se verdadeira ou não. Sobre instruções Uma instrução é uma diretriz fornecida ao arquivo FLA para fazer algo. não use nomes de propriedades. } Um outro exemplo é a instrução return. o código poderá executar ações especificadas. // if statement if (condition) { // statements. por exemplo. classes. por exemplo. não devem ser usadas como identificadores (como nomes de variável ou instância) no código do ActionScript. utilizar uma instrução condicional para determinar se algo é verdadeiro ou existe. Essas palavras são usadas pelas classes internas que compõem a linguagem ActionScript.0) e pesquise o painel Help (Ajuda) para obter instruções adicionais e as seções de uso deste manual (Introdução ao ActionScript 2. Em seguida. Para entender o que são esses nomes. métodos. embora não sejam palavras reservadas. A escrita do ActionScript pode ser diferenciada através do modo como você forma a sintaxe. Existem diversas maneiras de formatar ou escrever o ActionScript. através da maneira como você espaça as instruções ou do local em que insere as chaves ({}) no código. por exemplo.

// recommended theOtherNum++. } Essa instrução composta contém várias instruções. Para obter informações sobre como escrever e formatar eventos. As seções a seguir mostram como compor instruções específicas no ActionScript. A chave de abertura é colocada no final da instrução composta. “Manipulando eventos”. As instruções dentro de uma instrução composta podem ser qualquer tipo de instrução do ActionScript. As instruções dentro de chaves são recuadas na instrução composta. consulte Capítulo 10. consulte os seguintes tópicos: ■ ■ ■ “Sobre instruções compostas” na página 150 “Sobre condições” na página 151 “Repetindo ações através de loops” na página 162 Sobre instruções compostas Uma instrução composta contém diversas instruções delimitadas por chaves ({}). trace(a). Considere o seguinte exemplo do ActionScript: var myNum:Number = (a = b + c) + d. como mostra o exemplo a seguir: var a:Number = b + c. Para obter mais informações sobre cada instrução. Esse ActionScript incorpora uma atribuição no código. // recommended aNum++. o que dificulta a leitura. isso melhorará a legibilidade. // not recommended Atribua variáveis como instruções separadas. Se você atribuir variáveis como instruções separadas. mas atua como se fosse uma instrução única no código do ActionScript. var b:Number = 10. Uma instrução composta típica é mostrada a seguir. na página 347. trace("a == b"). trace(b).theNum++. anOtherNum++. 150 Fundamentos da sintaxe e da linguagem . como mostra o ActionScript a seguir: var a:Number = 10. A chave de fechamento começa com uma linha e se alinha ao início da instrução composta. if (a == b) { // This code is indented. var myNum:Number = a + d.

Sobre condições Você usa as condições para determinar se algo é verdadeiro ou existe. verifique as condições mais prováveis primeiro. Para obter mais informações sobre quais condições você pode usar e sobre como escrevê-las.. o ActionScript passará para a próxima instrução fora do bloco de código.catch e try.. consulte “Chaves” na página 133. se verdadeira ou não. for. use as instruções if. consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ ■ “Sobre condições de escrita” na página 151 “Usando a instrução if ” na página 152 “Usando a instrução if. é possível alterar os gráficos no documento do Flash com base na hora do relógio do sistema do usuário ou nas condições climáticas do local em que o usuário está no momento. o ActionScript executará a próxima instrução.else” na página 153 “Usando a instrução if. com base no status da condição. como funções ou expressões. se desejar..Para obter mais informações sobre como usar as chaves. Em seguida.else if ” na página 154 “Usando uma instrução switch” na página 156 “Usando as instruções try. for. Sobre instruções 151 . do while. Por exemplo..finally” na página 158 “Sobre o operador condicional e a sintaxe alternativa” na página 160 Sobre condições de escrita As instruções que verificam se uma condição é verdadeira ou falsa começam com o termo if..catch. else if. Se a condição retornar false. while. Se a condição retornar true. Para executar uma ação que dependa da existência de uma condição ou para repetir uma ação (criar instruções de loop). é possível determinar se uma determinada variável é definida ou tem um valor específico e executar um bloco de código com base no resultado. Além disso. else.. DICA Para otimizar o desempenho do código. pode repetir uma ação (usando loops) ou executar ações especificadas.in ou switch.

} Você terá diversas oportunidades de usar as instruções if enquanto estiver trabalhando em um projeto do Flash. se você estiver criando um site do Flash que exija que os usuários façam login antes de acessar determinadas seções do site.text. Caso seja necessário validar nomes de usuário e senhas usando um banco de dados externo. if ((passwordTxt. provavelmente será preciso verificar se a combinação nome de usuário/senha utilizada por um usuário corresponde a um registro no banco de dados. o documento do Flash será redirecionado para o rótulo de quadro invalidLogin. se uma bola se mover para baixo no eixo y.text. 152 Fundamentos da sintaxe e da linguagem . Se os campos passwordTxt e emailTxt contiverem valores e o conteúdo do campo de texto passwordTxt corresponder à variável userID.text == userID){ gotoAndPlay("startProgram").length == 0)) { gotoAndStop("invalidLogin"). se o tamanho dos campos de texto passwordTxt ou emailTxt for 0 (por exemplo. Para obter mais informações sobre as instruções switch. Também será necessário verificar se o usuário tem permissão para acessar a parte especificada do site. } Nesse trecho de código. Por exemplo. use a instrução switch. o arquivo SWF será redirecionado para o rótulo de quadro startProgram.length == 0) || (emailTxt.As instruções a seguir testam três condições. Se você criar scripts de animações no Flash. o usuário não digitou um valor). O termo else if especifica testes alternativos que poderão ser executados se as condições anteriores forem falsas. consulte “Usando uma instrução switch” na página 156. em vez de várias instruções else if. use uma instrução if para confirmar que o usuário digitará algum texto nos campos de nome de usuário e senha. Usando a instrução if Use a instrução if quando quiser executar uma série de instruções com base no status true de uma determinada condição. para que seja possível alterar a direção e a bola possa subir. Consulte as seções a seguir para obter informações sobre como escrever diferentes tipos de condições nos aplicativos ActionScript. Por exemplo. } else if (passwordTxt. // if statement if (condition) { // statements. Para procurar uma das diversas condições. provavelmente será necessário detectar quando a bola colidirá com a borda final do Stage. provavelmente usará a instrução if para testar se uma instância no Stage (Palco) ainda está dentro dos limites do Stage.

Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): // create a string to hold AM and PM var amPm:String = "AM".. a sigla AM será exibida.else permitirá testar uma condição e. a seqüência de caracteres amPM será definida para PM. Usando a instrução if. // no parameters pass to Date. se a hora for maior ou igual a 12.else A instrução condicional if. Do contrário. a sigla PM será exibida. Sobre instruções 153 . 2. } Para executar um bloco de código alternativo. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript. gera uma instrução trace() se o valor for maior que 20 ou gera uma instrução trace() diferente se valor não for maior que 20: if (x > 20) { trace("x is > 20"). } trace(amPm). você cria uma seqüência de caracteres que exibirá AM ou PM com base na hora do dia. executar um bloco de código se a condição existir ou executar um bloco de código alternativo se a condição não existir.. sets amPm string to "PM". em seguida. Se a hora atual for maior ou igual a 12. Nesse código. em seguida. você rastreia a seqüência de caracteres amPm e. use a instrução if sem a instrução else. if (current_date. o código a seguir testa se o valor x é maior que 20. 3.Para usar uma instrução if: 1. Por fim.getHours() >= 12) { amPm = "PM". Selecione File (Arquivo) > New (Novo) e. so returns current date/time var current_date:Date = new Date(). } else { trace("x is <= 20"). // if current hour is greater than/equal to 12. Por exemplo. selecione Flash Document (Documento do Flash).

Do contrário. em seguida. } else { amPm = "AM". redirecione o usuário para o formulário de login e exiba uma mensagem de erro usando o bloco else. se a hora for maior ou igual a 12. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript.. } trace(amPm). se o login for válido.. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): // create a string that holds AM/PM based on the time of day.else if: // else-if statement if (condition) { // statements. A seguinte sintaxe é utilizada em uma instrução if.else if. } else if (condition) { // statements. No entanto.. } else { 154 Fundamentos da sintaxe e da linguagem . você cria uma seqüência de caracteres que retém a sigla AM ou PM de acordo com a hora do dia. Nesse código. se você usar a instrução if para confirmar se o nome de usuário e a senha fornecidos por um usuário corresponde a um valor armazenado em um banco de dados.else do Flash é semelhante à instrução if. Selecione File (Arquivo) > New (Novo) e. a seqüência de caracteres amPM será definida para PM. você verá a sigla AM no painel Output (Saída). so returns current date/time. if (current_date. a sigla PM será exibida. sets amPm string to "PM". Se a hora atual for maior ou igual a 12. redirecione o usuário para uma página de boas-vindas usando o bloco if.getHours() >= 12) { amPm = "PM".else if É possível testar mais de uma condição usando a instrução condicional if. Por fim. Se o login for válido. 2. Para usar a instrução if. Usando a instrução if... selecione Flash Document (Documento do Flash) para criar um novo arquivo FLA. provavelmente será necessário redirecionar o usuário com base na validade do nome de usuário e da senha. // no parameters pass to Date. Por exemplo. // if current hour is greater than/equal to 12. var amPm:String.else em um documento: 1. var current_date:Date = new Date(). você rastreia a seqüência de caracteres amPm e. 3.A instrução if.

else if é utilizado nos projetos do Flash quando é necessário verificar uma série de condições. consulte os comentários no trecho de código anterior. início da noite ou final da noite. currentHour reterá o número 18). Em seguida. se você quiser exibir uma imagem diferente na tela com base na hora do dia em que o usuário está acessando. Por exemplo. if (currentHour < 11) { trace("Good morning"). crie uma série de instruções if que determinarão se é de manhã cedo.. você cria uma seqüência de caracteres chamada currentHour que retém o número da hora atual (por exemplo. se a hora for 18:19. } else if (currentHour < 15) { trace("Good afternoon").getHours(). Para obter mais informações.. Em seguida.else if em um documento: 1. } else if (x < 0) { trace("x is negative"). // else the current hour is between 8PM and 11:59PM } else { trace("Good night"). } 2. mas também se o valor x é negativo: if (x > 20) { trace("x is > 20")... // else. em seguida..else if para rastrear informações no painel Output (Saída).// statements. // else... } Para usar uma instrução if. com base no número retornado. 3. Sobre instruções 155 . O código a seguir não somente testa se o valor x é maior que 20.. Selecione File (Arquivo) > New (Novo) e.. exiba um gráfico apropriado. // if the current hour is less than 11AM. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): var now_date:Date = new Date().. use a instrução if. Use o método getHours() da classe Date para obter a hora atual. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript. var currentHour:Number = now_date. Nesse código.if the current hour is less than 8PM. selecione Flash Document (Documento do Flash).if the current hour is less than 3PM.. de tarde. } else if (currentHour < 20) { trace("Good evening"). } Um bloco if.

Assim como a instrução if. Quando um caso é anulado. O caso default deve sempre ser o último em uma instrução switch e incluir uma instrução break para impedir que um erro de anulação ocorra se outro caso for adicionado. a instrução break solicita ao Flash que ignore o restante das instruções do bloco case e passe para a primeira instrução após a instrução switch delimitada. onde a primeira instrução case não contém uma instrução break e. Selecione File (Arquivo) > New (Novo) e. as duas instruções dos casos A e B serão executadas. a instrução switch testará uma condição e executará instruções se a condição retornar um valor true. 156 Fundamentos da sintaxe e da linguagem . Nesse caso. Por exemplo. selecione Flash Document (Documento do Flash). pois o caso A não possui uma instrução break. portanto. ele não possui uma instrução break. } Para usar uma instrução switch em um documento: 1. Use o seguinte formato ao escrever instruções switch: switch (condition) { case A : // statements // falls through case B : // statements break. uma condição chamada “fall through” será emitida. se a condição do exemplo a seguir retornar A. em seguida. a instrução case a seguir também será executada até que uma instrução break seja encontrada ou que a instrução switch seja encerrada.Usando uma instrução switch A instrução switch cria uma estrutura ramificada para as instruções do ActionScript. Se um bloco case não contiver uma instrução break. case Z : // statements break. Esse comportamento é demonstrado no exemplo a seguir. Todas as instruções switch devem incluir um caso default. Quando a instrução switch é utilizada. mas inclui um comentário no local da instrução break (consulte o exemplo a seguir após o caso A). default : // statements break. os dois blocos de códigos dos dois primeiros casos (A e B) são executados.

Digite letras usando o teclado. break. */ trace("you pressed E or e"). é necessário usar o método String.onKeyDown = function() { // Use the String. break. o bloco será executado se o usuário pressionar a tecla e ou E. Se o usuário pressionar uma tecla que não seja abordada por nenhum dos três primeiros casos. break. case "E" : case "e" : /* E doesn't have a break statement.getAscii())) { case "A" : trace("you pressed A").fromCharCode() para retornar uma seqüência de caracteres que contém os caracteres representados pelos valores ASCII dos parâmetros. break. } }. */ trace("you pressed some other key").fromCharCode() method to return a string. Sobre instruções 157 . O método Key. switch (String.addListener(listenerObj). portanto. default : /* If the key pressed isn’t caught by any of the above cases. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): var listenerObj:Object = new Object(). 3. execute the default case here. Como “E” não possui uma instrução break.2. Ao digitar essas três teclas. case "a" : trace("you pressed a").getAscii() retorna o código ASCII da última tecla que o usuário pressionou ou liberou. A linha de código cria um novo objeto que será utilizado como ouvinte da classe Key. case "I" : case "i" : trace("you pressed I or i"). Use esse objeto para informar ao evento onKeyDown() que o usuário pressionou uma tecla. Key. so this block executes if you press e or E.fromCharCode(Key. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript. e ou i. você verá as instruções trace no ActionScript anterior. incluindo as teclas a. listenerObj. o caso padrão será executado.

As palavras-chave try. Você pode. Escreva as instruções try. o código do bloco finally será executado. Para usar o bloco try. se houver algum. NO TA O bloco finally será executado mesmo que o bloco try seja encerrado por uma instrução return.. em seguida.catch... você poderá escrever manipuladores personalizados para lidar com esse erros e executar as ações apropriadas.finally Os blocos try. o controle passará para o bloco catch... se houver algum. Depois. Selecione File (Arquivo) > New (Novo) e..catch. se o bloco try for concluído normalmente)..catch e try. 158 Fundamentos da sintaxe e da linguagem .finally permitem delimitar o bloco de códigos onde um erro pode ocorrer e responder a esse erro. usar o bloco catch para tentar se conectar a um serviço da Web que informe um administrador sobre um determinado erro.catch e try. O bloco finally opcional sempre é executado...Usando as instruções try.finally para validação de dados antes de dividir alguns números: 1..catch. ainda assim..catch. Se o código do bloco try não gerar um erro (ou seja.finally no seguinte formato: // try-catch try { // statements } catch (myError) { // statements } // try-catch-finally try { // statements } catch (myError) { // statements } finally { // statements } Sempre que o código gerar um erro. Talvez seja necessário carregar dados externos de um serviço da Web ou de um arquivo de texto ou exibir uma mensagem de erro para o usuário final.finally permitem adicionar uma manipulação de erros aos aplicativos do Flash. até mesmo.catch. selecione Flash Document (Documento do Flash). Se algum código do bloco de códigos try gerar um erro (através da instrução throw). o controle passará para o bloco de códigos finally.. independentemente da geração de um erro. a fim de que ele possa verificar o funcionamento do aplicativo.

} trace(n1/n2). conforme demonstrado no exemplo a seguir. Selecione File > New e crie um novo arquivo do ActionScript. Se o valor n2 for igual a zero.as ao arquivo. Digite o seguinte ActionScript no painel Script: // In DivideByZeroException. try { if (n2 == 0) { throw new Error("Unable to divide by zero"). 5. 4. } finally { delete n1. } catch (err:Error) { trace("ERROR! " + err. delete n2. que será detectado pelo bloco catch e resultará na exibição de uma mensagem no painel Output. var n2:Number = 0. Você não está limitado a gerar novas instâncias da classe Error quando ocorrer um erro. Selecione File > Save As (Salvar como) e atribua o nome DivideByZeroException. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. Sobre instruções 159 . Selecione Control > Enter (Entrar) para testar o documento novamente. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): var n1:Number = 7. O painel Output (Saída) exibirá a mensagem Unable to divide by zero (Não é possível dividir por zero). o painel Output exibirá o resultado de n1 dividido por n2. Retorne ao ambiente de criação e altere a seguinte linha de código: var n2:Number = 0.toString()). ocorrerá um erro. Para criar um erro personalizado: 1. to var n2:Number = 2.2.as: class DivideByZeroException extends Error { 3. 2. O bloco finally será executado. Você poderá também estender a classe Error para criar erros personalizados. independentemente da geração de um erro. } 3. 6. Se o valor y não for igual a zero. e excluirá os valores das variáveis n1 e n2 do documento do Flash.

A definição do valor de n2 para qualquer número maior que 0 fará com que o resultado da divisão apareça no painel Output. conhecido também como expressões condicionais. Digite o seguinte ActionScript no painel Actions do Frame 1 da Timeline principal: var n1:Number = 7. verifica se a variável numTwo é maior que zero e retorna o resultado numOne/numTwo ou a seqüência de caracteres carrot: 160 Fundamentos da sintaxe e da linguagem . Para obter mais informações sobre como criar classes personalizadas. Salve o arquivo do ActionScript. } } catch (err:DivideByZeroException) { trace(err. n2 não pode ser menor que zero) no painel Output. 7.fla no mesmo diretório do arquivo do ActionScript e salve o arquivo. var n2:Number = 0. Sobre o operador condicional e a sintaxe alternativa Se quiser usar atalhos. } else { trace(n1/n2). try { if (n2 == 0) { throw new DivideByZeroException(). n2 cannot be less than zero (Erro desconhecido.toString()). } 6. } else if (n2 < 0) { throw new Error("n2 cannot be less than zero").toString()). " + err. Como o valor de n2 é igual a 0. 5. Crie um novo documento do Flash chamado exception_test. Salve o documento do Flash e selecione Control > Test Movie para testar o arquivo no ambiente de teste. A condição a seguir é escrita na forma extensa. } catch (err:Error) { trace("An unknown error occurred. “Classes”.else simples em uma única linha de código. Se você alterar o valor de n2 na segunda linha de 0 para -1 e testar novamente o documento do Flash. o Flash gera uma classe de erro personalizada DivideByZeroException e exibe o erro Divide By Zero no painel Output. poderá utilizar o operador condicional (?:). na página 239.var message:String = "Divide By Zero error". consulte o Capítulo 7. verá a mensagem An unknown error occurred. } 4. mas ele também tende a dificultar mais a leitura do ActionScript.. O operador ajuda a diminuir o valor do código escrito enquanto realiza a mesma tarefa. O operador condicional permite converter instruções if.

a sintaxe reduzida prejudica a legibilidade e. Caso não use parênteses. O código a seguir é um exemplo de ActionScript com melhor legibilidade: var numOne:Number. você (ou outras pessoas que estejam usando o ActionScript) poderá encontrar erros de precedência de operador. } No entanto. se comparado ao código anterior. O segundo trecho é mais curto e tem menos expressões para avaliação. Para obter mais informações sobre precedência de operador. (numOne >= 5) ? numOne : -numOne. if (numTwo > 0) { trace(numOne / numTwo). trace((numTwo > 0) ? numOne/numTwo : "carrot"). var numTwo:Number = 5. portanto. } Usando uma expressão condicional. Caso precise usar operadores condicionais.6 } else { trace("carrot"). Ao escrever condições complexas. // 1. você escreverá o mesmo código usando o seguinte formato: var numOne:Number = 8. o código a seguir não usa parênteses ao redor da condição: if (fruit == "apple" && veggie == "leek") {} O código a seguir usa um formato adequado. consulte “Sobre associatividade e precedência de operadores” na página 188. coloque a condição inicial (antes do ponto de interrogação [?]) entre parênteses.var numOne:Number = 8. recomenda-se usar parênteses [()] para agrupar as condições. var numTwo:Number = 0. Isso ajudará a melhorar a legibilidade do ActionScript. Como pode ver.length > 0) { return true. Por exemplo. } else { return false. delimitando as instruções entre parênteses: if ((fruit == "apple") && (veggie == "leek")) {} Sobre instruções 161 . É possível escrever uma instrução condicional que retorne um valor booleano. o ActionScript do exemplo a seguir será preferencial: return (cartArr. além de ser mais fácil de ler e entender. não é preferencial.length > 0). como mostra o exemplo a seguir: if (cartArr.

Loop for for. Os dois últimos tipos de loops (while e do. Na ação for. 162 Fundamentos da sintaxe e da linguagem .in..while Descrição Repete uma ação usando um contador interno.in while do. Itera os filhos de um clipe de filme ou objeto. como serviços da Web ou arquivos de texto/XML externos. que é repetido em um bloco de códigos um número predefinido de vezes. O ActionScript pode repetir uma ação um número especificado de vezes ou enquanto uma condição específica existir. Consulte os procedimentos a seguir para obter mais informações sobre cada um desses loops. Cada tipo de loop se comporta de um jeito e tem uma função diferente. É semelhante aos loops.while) são úteis quando é necessário executar uma repetição em uma série de instruções mas você não sabe necessariamente quantas vezes precisa fazer isso. para que o loop sempre seja executado pelo menos uma vez. Nesse caso.. Cada execução de um loop é denominada iteração. que pode ser muito útil quando é necessário repetir cada combinação nome/valor de um objeto e executar algum tipo de ação.while.. Use as ações while. while e do. se você tiver um array de itens e quiser executar uma série de instruções em cada item do array. Esta seção contém informações gerais sobre esses loops.. Para repetir uma ação enquanto uma condição existir: ■ Use a instrução while.while. Um outro tipo de loop é o for. Existem quatro tipos de loops no ActionScript: for.. Isso poderá ser útil quando você estiver depurando projetos do Flash e quiser exibir os valores carregados de fontes externas.Repetindo ações através de loops O ActionScript pode repetir uma ação um número especificado de vezes ou enquanto uma condição específica existir.. o contador e a instrução que aumenta a contagem fazem parte da ação. Por exemplo. Os loops permitem repetir uma série de instruções quando uma condição específica é true. do. O tipo de loop mais comum é o for. use um loop for e execute-o de 0 até o número de itens do array.in para criar loops. for e for. for. a única diferença é que a expressão é avaliada na parte inferior do bloco de códigos. é possível usar um loop while que execute a repetição desde que uma determinada condição seja verdadeira.in. Repete uma ação enquanto uma condição existir. Você pode declarar uma variável e escrever uma instrução que aumente ou diminua a variável sempre que o loop for executado... A maioria dos loops usa algum tipo de contador para controlar o número de execuções.

.while. a expressão será avaliada novamente. Cada execução de um loop é denominada iteração. {_x:i*20... {_x:i*20. } while (i > 0). o loop é executado quatro vezes: var i:Number = 4. a primeira expressão (var i:Number = 4) é a expressão inicial que é avaliada antes da primeira iteração. while (i > 0) { myClip. Na ação for. Em um loop do. _y:i*20}). {_x:i*20. _y:i*20}). i > 0. No exemplo a seguir. A terceira expressão (i--) é denominada expressão final e é avaliada sempre após a execução do loop. i. i--) { myClip. i. } Para obter mais informações sobre a instrução for. Para repetir uma ação usando um contador interno: ■ Use a instrução for. a expressão é avaliada na parte inferior do bloco de códigos. Depois que cada instrução do corpo for executada. } Você pode usar a instrução do. do { myClip. Sobre instruções 163 . i--. Você pode declarar uma variável e escrever uma instrução que aumente ou diminua a variável sempre que o loop for executado.duplicateMovieClip("newMC" + i. o contador e a instrução que aumenta a contagem fazem parte da ação.duplicateMovieClip("newMC" + i. A segunda expressão ( i > 0) é a condição que é verificada sempre antes da execução do loop. _y:i*20}). i.while para criar o mesmo tipo de loop que while. i--. Para obter mais informações sobre a instrução while.duplicateMovieClip("newMC" + i. No exemplo a seguir. consulte “Usando os loops while” na página 169. for (var i:Number = 4.Um loop while avaliará uma expressão e executará o código em seu corpo se a expressão for true. a fim de que o loop sempre seja executado pelo menos uma vez. consulte “Usando os loops for” na página 166. Isso é mostrado no exemplo a seguir: var i:Number = 4. A maioria dos loops usa algum tipo de contador para controlar o número de execuções.

} } Para obter mais informações sobre a instrução for. O exemplo a seguir usa a instrução trace para imprimir seus resultados no painel Output (Saída): var myObject:Object = {name:'Joe'. Os filhos são outros clipes de filme. with the value: " + myObject[propertyName]). Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): for (var myName in this) { if (typeof (this[myName]) == "movieclip") { trace("I have a movie clip child named " + myName). with the value: Joe myObject has the property: age. mas os loops dependem muito do processador.in” na página 167. A VI S O 164 As iterações do Flash são executadas rapidamente no Flash Player. age:25. Loops escritos de modo insatisfatório podem ocasionar problemas de desempenho e de estabilidade. consulte as seções individuais que acompanham este capítulo. objetos e variáveis. with the value: 25 myObject has the property: city.0 Language Reference (Referência à linguagem ActionScript 2.in. for (propertyName in myObject) { trace("myObject has the property: " + propertyName + ". como “Usando os loops while” na página 169 e suas respectivas entradas em ActionScript 2. No exemplo a seguir. consulte “Usando os loops for. with the value: San Francisco Talvez seja necessário que o script itere um determinado tipo de filho.. funções. apenas filhos de clipes de filme. uma instância de clipe de filme filho (chamada instance2) está dentro de um clipe de filme no Stage (Palco).. por exemplo.Para executar uma repetição nos filhos de um clipe de filme ou objeto: ■ Use a instrução for. Quanto mais iterações um loop tem e quanto mais instruções são executadas em cada bloco. Para obter mais informações sobre cada instrução. } Este exemplo produz os seguintes resultados no painel Output: myObject has the property: name.. var propertyName:String. Fundamentos da sintaxe e da linguagem . Você pode fazer isso usando for.in. city:'San Francisco'}. mais recursos do processador são consumidos..0).in com o operador typeof.

quer eles sejam simples ou complexos. sempre verifique se é possível encerrá-lo adequadamente (ou seja. for (i = 0. for (i = 0. se ele não é encerrado com um loop infinito). Um loop for é iterado de 0 até o número de itens do array e exibe cada item no painel Output. i < monthArr. Os resultados variam de acordo com o computador em que a condição é executada. "Jun". Isso gera problemas. é um loop sem condição de término.. A mensagem de erro a seguir é exibida em uma caixa de diálogo: A script in this movie is causing Flash Player to run slowly. O código a seguir é um exemplo de loop infinito: // BAD CODE. é necessário conhecer uma condição chamada loop infinito. como o próprio nome já diz. "Jul". "Sep". i++) { trace(monthArr[i]). "Nov". "Dec").creates an infinite loop // USE AT OWN RISK! var i:Number. faz com que o documento do Flash pare de responder a um navegador da Web ou gera um comportamento muito inconsistente do documento do Flash.620 vezes antes de exibir uma mensagem de erro em um determinado computador. var i:Number. i < 10. a velocidade em que o código apresenta falha depende da velocidade da CPU e de outros fatores. Do you want to abort the script? Quando se trabalha com um loop (especialmente com os loops while e do. "Apr". É provável que o erro fique imediatamente óbvio: se o valor de i diminuir após cada iteração do loop e a condição de término nunca for atendida. } O valor de i é inicializado para 0 e a condição de término é atendida quando i é maior ou igual a 10 e depois que cada iteração do valor de i é decrementada. } Quando se trabalha com arrays. var monthArr:Array = new Array("Jan". o loop é executado aproximadamente 142. If it continues to run. "Feb".length. Sobre instruções 165 .Sobre criação e término de loops O exemplo a seguir mostra um array simples de nomes de meses. Por exemplo.while). pois ocasiona falha no aplicativo Flash. O loop infinito. consulte “Usando uma instrução switch” na página 156. "Aug". "May". i--) { trace(i). Para obter mais informações sobre como controlar loops. your computer may become unresponsive. "Oct". Além disso. "Mar".

Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): var i:Number. o código a seguir se repete cinco vezes. o contador e a instrução que incrementa o contador fazem parte da instrução for. Por exemplo. } Você deve fornecer três expressões a uma instrução for: uma variável que é definida com um valor inicial. i++) { 2. for (i = 0. i < 5. for (i = 0. 3. var i:Number. i++) { trace(i). Marque a caixa de seleção Export for ActionScript (Exportar para ActionScript) e digite libraryLinkageClassName na caixa de entrada de texto Class (Classe).Usando os loops for O loop for permite iterar uma variável de um intervalo específico de valores. uma instrução condicional que determina quando o loop terminará e uma expressão que altera o valor da variável com cada loop. 4. Crie um clipe de filme no Stage. Isso será útil se for necessário duplicar um clipe de filme no Stage (Palco) um determinado número de vezes ou repetir um array e executar uma tarefa em cada item desse array. Selecione File (Arquivo) > New (Novo) e. 5. Clique com o botão direito do mouse no símbolo de clipe de filme do painel Library (Biblioteca) e selecione Linkage (Vinculação) no menu contextual. A terceira expressão (i++) é denominada expressão final e é avaliada sempre após a execução do loop. A segunda expressão (i < 5) é a condição que é verificada sempre antes da execução do loop. O valor da variável i começa em 0 e termina em 4. A saída da variável são os números de 0 a 4. selecione Flash Document (Documento do Flash). Clique em OK. Em uma instrução for. em seguida. Para criar um loop for: 1. O loop for é útil quando você sabe exatamente quantas vezes precisa repetir uma série de instruções do ActionScript. condition. i < 5. Escreva a instrução for usando o seguinte formato básico: for (init. a primeira expressão (i = 0) é a expressão inicial que é avaliada antes da primeira iteração. 166 Fundamentos da sintaxe e da linguagem . cada um na sua própria linha. } No exemplo a seguir. update) { // statements. O loop for repete uma ação usando um contador interno.

.in Use a instrução for. Os filhos. Usando os loops for. } 6.in para iterar as propriedades de um objeto genérico (as propriedades de objeto não são mantidas em nenhuma ordem específica.. consulte %{for statement}% em ActionScript 2.0). {_x:(i * 100)}). 300 e 400 pixels. funções. Para obter mais informações.attachMovie("libraryLinkageClassName".. objetos e variáveis. com a variável i definida com um valor de 0 a 4. "three"]. y:30}. Na última iteração do loop.. é possível usar um loop for.in incluem a repetição de instâncias em uma linha de tempo ou a repetição das combinações chave/valor em um objeto. como arquivos de texto ou XML. Lembre-se de incluir um espaço após cada expressão em uma instrução for. Observe como cinco clipes de filme se duplicaram na parte superior do Stage. Esse ActionScript duplica o símbolo de clipe de filme na biblioteca e reposiciona os clipes no Stage nas coordenadas x de 0. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código no Flash Player.this. "clip" + i + "_mc". são outros clipes de filme. A repetição de objetos pode ser uma maneira eficaz de depurar aplicativos.0 Language Reference (Referência à linguagem ActionScript 2. "two". } Sobre instruções 167 . } Esse código exibe o seguinte no painel Output (Saída): x: 20 y: 30 É possível também iterar os elementos de um array: var myArray:Array = ["one". O loop é executado cinco vezes. as propriedades de um objeto ou os elementos de um array. As funções comuns do loop for. 200.. for (var i:String in myObj) { trace(i + ": " + myObj[i]). pois ela permite ver quais dados são retornados pelos serviços da Web ou documentos externos.in para repetir (ou iterar) os filhos de um clipe de filme. for (var i:String in myArray) { trace(myArray[i]). 100. Por exemplo. i. o valor de i é incrementado para 4 e a segunda expressão (i < 5) não é mais verdadeira. elas são exibidas em uma ordem aleatória): var myObj:Object = {x:20. o que fará com o loop seja encerrado. já mencionados anteriormente.

mas os membros estáticos estarão. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): var myObj:Object = {name:"Tara". a menos que a classe seja dinâmica. na página 239. city:"San Francisco"}. consulte %{for. As chaves ({}) usadas para delimitar o bloco de instruções a ser executado pela instrução for.city = San Francisco Fundamentos da sintaxe e da linguagem ." + i + " = " + myObj[i]). 2..name = Tara myObj. O exemplo a seguir usa for. “Classes”. mas os membros estáticos não. Mesmo com instâncias de classes dinâmicas. No entanto. os membros de instância não estarão disponíveis no loop.0 Language Reference (Referência à linguagem ActionScript 2. for (i in myObj) { trace("myObj.in não serão necessárias se apenas uma instrução for executada.0) 168 NO TA Selecione File (Arquivo) > New (Novo) e. se você escrever um loop for.Esse código exibe o seguinte no painel Output: three two one Para obter mais informações sobre os objetos e as propriedades. selecione Flash Document (Documento do Flash).in para iterar as propriedades de um objeto: Para criar um loop: 1. em seguida. Para obter mais informações.. Ao testar o arquivo SWF. os membros de instância estarão disponíveis. você pode iterar somente as propriedades adicionadas dinamicamente.in em um arquivo FLA de uma instância de classe. você verá o seguinte texto no painel Output: myObj. var i:String. Para obter mais informações sobre como escrever arquivos de classe. consulte “Tipo de dados Object” na página 83.age = 27 myObj. NO T A Não será possível iterar as propriedades de um objeto se ele for um instância de uma classe personalizada... consulte Capítulo 7. Se você escrever um loop for.in statement}% em ActionScript 2. 3. } Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código no Flash Player.. age:27.in em um arquivo de classe (um arquivo externo do ActionScript).

Por exemplo.Usando os loops while Use a instrução while para repetir uma ação enquanto existir uma condição. em seguida. a instrução ou a série de instruções será ignorada e o loop terminará. é que os loops infinitos são mais fáceis de serem gerados com os loops while. Um loop while avaliará uma expressão e executará o código em seu corpo se a expressão for true. Para criar um loop while: 1. 4. que se repete contanto que a condição seja true. uma instrução ou uma série de instruções será executada antes que o loop reverso avalie a condição novamente. age:34}). O código de exemplo do loop for não será compilado se você omitir a expressão que incrementa a variável do contador.data. 2. Quando a condição retornar false. 3. o loop se torna um loop infinito. siga este exemplo. Selecione File (Arquivo) > New (Novo) e. Para criar e usar um loop while em um arquivo FLA. i++. o código a seguir rastreia os números no painel Output (Saída): var i:Number = 0. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte ActionScript no painel Actions (Ações): var users_ds:mx. Abra o painel Components (Componentes) e arraste um componente DataSet para o Stage (Palco). mas o exemplo do loop while é compilado mesmo que essa etapa seja omitida. ela é semelhante à instrução if. } Você verá os seguintes números rastreados no painel Output: 0 1 2 3 4 Uma desvantagem do uso de um loop while. O uso do loop while pode ser útil quando você não tem certeza de quantas vezes precisará repetir um bloco de códigos. Se a condição retornar true. selecione Flash Document (Documento do Flash). em vez de um loop for. Abra o Property inspector (Inspetor de propriedades) (Window (Janela) > Properties (Propriedades) > Properties) e digite o nome de instância users_ds.components. // users_ds. Sobre instruções 169 . while (i < 5) { trace(i). Sem a expressão que incrementa i.addItem({name:"Irving".DataSet.

addItem({name:"Walter". age:" + users_ds.while que gera a saída mesmo que a condição não seja atendida.. // Output: 5 Ao usar loops. i++.while Você pode usar a instrução do. age:23 Para obter mais informações. } 5. while (users_ds..while para criar o mesmo tipo de loop que while.currentItem["name"] + ".currentItem["age"]). Use o loop for em vez disso. Para obter mais informações sobre isso e exemplos de %{do. Se a condição em um loop do.. var i:Number = 5. do { trace(i). users_ds. age:23}). Sobre loops do..addItem({name:"Christopher".. As instruções são executadas apenas se a condição retornar true.hasNext()) { trace("name:" + users_ds. As seguintes informações são exibidas no painel Output: name:Irving. caso você sabia quantas vezes deseja executar a repetição. consulte ActionScript 2. consulte %{while statement}% em ActionScript 2. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento.first().while (ele é verificado depois que o bloco de códigos é executado). O código a seguir mostra um exemplo simples de loop do.users_ds. No entanto. age:48}).. age:48 name:Walter. // users_ds. 170 Fundamentos da sintaxe e da linguagem . } while (i < 5).. para que o loop sempre seja executado pelo menos uma vez. age:34 name:Christopher. é necessário evitar a criação de loops infinitos.0 Language Reference (Referência à linguagem ActionScript 2. users_ds. a expressão é avaliada na parte inferior do bloco de códigos em um loop do.next(). um loop infinito será gerado e exibirá um aviso ou travará o Flash Player.0).while retornar continuamente true.0 Language Reference (Referência à linguagem ActionScript 2.while statement}%.0).

3. } 4.in para iterar cada valor e exibir os resultados no painel Output. Aninhando um loop dentro de outro loop: 1. Como cada objeto do array pode ter diferentes combinações nome/valor. for (i = 0. myArr[0] = {name:"One". Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código. for (item in myArr[i]) { trace(item + ": " + myArr[i][item]). var item:String..length.fla ao documento. value:1}. pode repetir cada item usando um loop for simples. Crie um novo documento do Flash. i < myArr. i++) { trace(i). Sobre instruções 171 . 2.in para iterar cada combinação chave/valor nos objetos aninhados. O seguinte será exibido no painel Output (Saída): 0 name: One value: 1 1 name: Two value: 2 Você sabe quantos itens há no array.. // var i:Number. myArr[1] = {name:"Two". } trace(""). value:2}. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): var myArr:Array = new Array(). Este exemplo mostra como usar o loop for para repetir cada item do array e como usar o loop for. é possível usar um loop for. Selecione File (Arquivo) > Save As (Salvar como) e atribua o nome loops.Usando loops aninhados no ActionScript O exemplo a seguir demonstra como criar um array de objetos e exibir cada um dos valores na estrutura aninhada. portanto.

"April"). É possível misturar números. um array ou objeto) ou ficar vazio. o prédio (o array) contém andares (os elementos). Cada andar desse prédio pode conter vários tipos de conteúdo (o executivo e a contabilidade poderiam compartilhar o terceiro andar). é possível armazenar diferentes tipos de dados em um único array. myArr[0] = "January". 172 Fundamentos da sintaxe e da linguagem . var myArr:Array = new Array(). myArr[3] = "April". É como um edifício comercial. até mesmo. uma seqüência de caracteres. é possível adicionar ou remover elementos e mover valores para vários elementos. myArr[2] = "March". e cada andar contém um ou mais departamentos (os valores). que são equivalentes a cada andar do prédio. Por exemplo. É possível também controlar e modificar o próprio array. "February". Um array é como uma estrutura de dados. Cada elemento tem uma posição numérica (o índice). Uma outra alternativa é usar a sintaxe abreviada conforme mostrado a seguir: var myArr:Array = ["January". um array é uma lista de itens. que é como você indica a posição de cada elemento no array. Assim. Basicamente. Um array contém elementos. myArr[1] = "February". um valor booleano ou. Assim. É semelhante ao número dos andares de um prédio. que são numerados (o índice). É importante lembrar que cada elemento de um array não precisa ter o mesmo tipo de dados. e até mesmo adicionar um array aninhado em cada índice de arrays. Cada elemento pode conter uma parte dos dados (que pode ser um número. onde cada andar contém um tipo de dados diferente (como contabilidade no terceiro andar e engenharia no quinto). Os arrays permitem que você mova os valores e altere o tamanho do array (digamos que ele permite renovar o prédio e adicionar ou remover andares).Sobre arrays Um array é um objeto cujas propriedades são identificadas por números que representam suas posições dentro da estrutura. Portanto. "March". talvez seja necessário mover o departamento de engenharia para o térreo do prédio. datas. "March". O exemplo a seguir é um array simples de nomes de meses. O array anterior de nomes de meses também pode ser reescrito da seguinte maneira: var myArr:Array = new Array("January". incluindo outros arrays. seqüências de caracteres e objetos. "April"]. "February".

Para obter informações sobre o operador de acesso de array. vá para Macintosh HD/Applications/Macromedia Flash 8/Samples e Tutorials/Samples/ActionScript/Arrays. Os arrays mais comuns usam um índice numérico para pesquisar um determinado item em um array indexado. Para obter informações sobre o operador de acesso de array. Por exemplo. que você descobrirá nas seções a seguir. Utilize-os para armazenar listas de objetos. Para obter mais informações sobre os arrays comuns. provavelmente terá a lista de reprodução de um usuário armazenada como um array de informações de música. vá para a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\Arrays. o que significa que o seu primeiro elemento é [0]. Para obter informações sobre como usar arrays e sobre os índices. Existem diferentes tipos de arrays. a duração da música. consulte “Usando operadores de ponto e de acesso de array” na página 194. o nome do artista. ■ Usando arrays Existem diversas maneiras de usar os arrays.fla. adiciona e remove itens de dois componentes List. se você criar um aplicativo de áudio no Flash. o local de um arquivo de som (como um MP3) ou quaisquer outras informações que precisem ser associadas a um determinado arquivo. Para obter mais informações sobre os arrays associativos. Para obter informações sobre como adicionar e remover elementos. há um arquivo de exemplo de origem chamado array. O local de um item em um array chama-se índice. armazenada nos objetos. os arrays contêm dados em um formato similar. consulte “Sobre modificação de arrays” na página 175. consulte “Sobre arrays” na página 172.Para obter mais informações sobre como modificar arrays. em vez de um índice numérico. para pesquisar informações. consulte “Criando matrizes” na página 178. Esse exemplo ilustra a manipulação de arrays usando o ActionScript. é provável que receba até mesmo dados como um array de objetos aninhados. o segundo é [1] e assim sucessivamente. Sobre arrays 173 . Geralmente. consulte “Criando arrays associativos” na página 181. consulte “Usando arrays” na página 173. O código do exemplo cria um array e classifica. Cada objeto contém o nome da música. Se você carregar dados dos servidores Web remotos. Localize o arquivo de exemplo nos diretórios a seguir: ■ No Windows. Todos os arrays começam com zero. Na pasta Samples do disco rígido. como um grupo de itens retornados. consulte “Sobre adição e remoção de elementos” na página 177. O segundo tipo de array chama-se array associativo e usa um índice de texto. No Macintosh. consulte “Usando operadores de ponto e de acesso de array” na página 194. Para obter mais informações sobre as matrizes.

.. consulte “Usando os loops for. myArr[0] = "value0". adiciona e remove itens de dois componentes List. for (i in myArr) { // trace the key/value pairs trace("key: " + i + ". value: value1 Para obter mais informações sobre os loops for. defina dados (value0 e value1) nos dois índices do array. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): // define a new array var myArr:Array = new Array(). value: " + myArr[i]). // define values at two indexes myArr[1] = "value1". Crie um novo documento do Flash e salve-o como basicArrays. defina um novo array para reter os valores.in” na página 167. Em seguida. 2. Para criar um objeto Array. Esse exemplo ilustra a manipulação de arrays usando o ActionScript. há um arquivo de exemplo de origem chamado array. O exemplo a seguir usa um array indexado. Para acessar os elementos de um array. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código.fla.. 3. O código do exemplo cria um array e classifica.in.fla. } Na primeira linha do ActionScript. use também o operador de acesso de array ([]). value: value0 key: 1.A classe Array interna permite acessar e manipular arrays. consulte as seguintes seções: ■ ■ ■ “Criando arrays indexados” na página 178 “Criando matrizes” na página 178 “Criando arrays associativos” na página 181 Na pasta Samples do disco rígido. Localize o arquivo de exemplo nos diretórios a seguir: 174 Fundamentos da sintaxe e da linguagem . Use um loop for. Para obter informações sobre como criar diferentes tipos de arrays. Para usar arrays no código: 1. O seguinte texto será exibido no painel Output: key: 0. // iterate over the items in the array var i:String.in para iterar cada um dos itens desse array e exibir as combinações chave/valor no painel Output (Saída) usando uma instrução trace. use o construtor new Array() ou o operador de acesso de array ([]).

buildingArr[4] = buildingArr[2].undefined.undefined. use o código a seguir: var buildingArr:Array = new Array().Accounting. Por exemplo. Ao copiar o valor de um dos índices de array em uma variável temporária. mas nenhuma de contabilidade. vá para Macintosh HD/Applications/Macromedia Flash 8/Samples e Tutorials/Samples/ActionScript/Arrays. verá que o valor do índice de array 2 (Accounting) se perdeu. há um arquivo de exemplo de origem chamado array. trace(buildingArr).■ No Windows. // wrong way (no temporary variable) buildingArr[2] = buildingArr[4]. trace(buildingArr). No Macintosh.undefined. vá para a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\Arrays. buildingArr[2] = buildingArr[4]. o conteúdo original do índice de array 2 se perderá. vá para Macintosh HD/Applications/Macromedia Flash 8/Samples e Tutorials/Samples/ActionScript/Arrays.undefined.Engineering Na pasta Samples do disco rígido. ■ Sobre modificação de arrays É possível também controlar e modificar o array usando o ActionScript. // undefined. Você pode mover valores em torno de um array ou alterar o tamanho do array.Engineering. O código do exemplo cria um array e classifica. // undefined. buildingArr[4] = "Engineering".undefined. Esse exemplo ilustra a manipulação de arrays usando o ActionScript. é possível salvar o valor e copiá-lo com segurança de volta para o código posteriormente. Agora. Se você copiou o conteúdo do índice de array 4 no índice de array 2 e vice-versa. // undefined. trace(buildingArr). adiciona e remove itens de dois componentes List. ■ Sobre arrays 175 . buildingArr[4] = temp_item. buildingArr[2] = "Accounting". você tem duas equipes de engenharia. se você quiser trocar dados nos dois índices de um array. se você usar o código a seguir. Por exemplo.Accounting Talvez seja necessário saber porque é preciso criar uma variável temporária no exemplo anterior.Engineering.undefined. Localize o arquivo de exemplo nos diretórios a seguir: ■ No Windows. No Macintosh.fla.Engineering var temp_item:String = buildingArr[2]. vá para a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\Arrays.

APR. "May". "Jun". há um arquivo de exemplo de origem chamado array. myArr[5] = "five". adiciona e remove itens de dois componentes List.Sobre referência e localização de tamanho Quando você trabalha com arrays. Depois.MAY.Aug. Esse exemplo ilustra a manipulação de arrays usando o ActionScript.toUpperCase(). "Aug".Sep. "Jul". i++) { monthArr[i] = monthArr[i]. se você criar um elemento no índice de array 5. "Oct".JUL. vá para Macintosh HD/Applications/Macromedia Flash 8/Samples e Tutorials/Samples/ActionScript/Arrays. "Feb". geralmente precisa saber quantos itens existem no array. } trace(monthArr). o tamanho do array retornará 6 (já que o array começa sempre com zero).DEC No exemplo anterior. O loop for itera cada item do array e converte o valor em maiúsculas.undefined. for (i = 0. trace(myArr.Feb. No Macintosh. // JAN.NOV. consulte “Usando os loops for” na página 166. i < monthArr. trace(monthArr). o conteúdo do array é exibido novamente.SEP.OCT.undefined.Jul. Isso pode ser muito útil durante a criação de loops for que iteram cada elemento do array e executam uma série de instruções. "Mar". "Dec").five Para obter mais informações sobre os loops for. // undefined. No ActionScript a seguir.Jun.Mar. O conteúdo e o tamanho do array é exibido. Veja um exemplo no trecho a seguir: var monthArr:Array = new Array("Jan".Dec trace(monthArr. Para obter informações sobre o operador de acesso de array.length. ■ 176 Fundamentos da sintaxe e da linguagem .May. conforme seria o esperado: var myArr:Array = new Array(). // 6 trace(myArr).JUN.Oct. você cria um array e o preenche com nomes de meses. "Sep".undefined. consulte “Usando operadores de ponto e de acesso de array” na página 194. Na pasta Samples do disco rígido.undefined. O código do exemplo cria um array e classifica. vá para a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\Arrays. em vez do número real de itens do array.length). // Jan.length).FEB. Localize o arquivo de exemplo nos diretórios a seguir: ■ No Windows. "Apr". // 12 var i:Number. "Nov".AUG.Apr.fla.Nov.MAR.

adiciona e remove itens de dois componentes List.Jul. "Mar". Isso será útil na depuração dos aplicativos. Cada elemento pode reter uma parte dos dados ou ficar vazio. "Dec"). No Macintosh.Sobre adição e remoção de elementos Um array contém elementos e cada elemento tem uma posição numérica (o índice).Sep.May. um array ou objeto.Aug. Localize o arquivo de exemplo nos diretórios a seguir: ■ No Windows.Feb.Dec trace(monthArr. delete monthArr[5].fla. que é a maneira utilizada para indicar a posição de cada elemento no array. vá para Macintosh HD/Applications/Macromedia Flash 8/Samples e Tutorials/Samples/ActionScript/Arrays. O exemplo a seguir demonstra como criar um novo array.May. // Jan. ■ Sobre arrays 177 . "Apr". o tamanho do array será retornado como 6. Em “Sobre referência e localização de tamanho” na página 176. e adicionar e substituir dados em um índice do array: var monthArr:Array = new Array("Jan". Um elemento pode reter os seguintes dados: um número. em vez de desaparecer completamente. "Sep". Ao criar elementos em um array.Nov. o tamanho do array ainda será 12 e o item no índice de array 5 será alterado para uma seqüência de caracteres em branco.Nov. O código do exemplo cria um array e classifica.Dec Mesmo que você tenha excluído o item no índice de array 5.Oct. se atribuir um único valor em um array no índice 5. Na pasta Samples do disco rígido. "Nov". "Jun".Aug. você viu que. excluir um item em um determinado índice.Jul. "Oct". Isso fará com que cinco valores indefinidos sejam inseridos no array.Apr.JUN. até mesmo.Feb.Mar. trace(monthArr). "May". uma seqüência de caracteres ou. trace(monthArr). há um arquivo de exemplo de origem chamado array. vá para a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\Arrays.Mar. // 12 monthArr[5] = "JUN". "Jul".Sep. "Feb". // Jan. crie os índices seqüencialmente sempre que possível.Apr. Esse exemplo ilustra a manipulação de arrays usando o ActionScript.length).Oct. "Aug".undefined.

178 Fundamentos da sintaxe e da linguagem . Crie um novo documento do Flash e salve-o como indexArray. Ele é incrementado em um em cada elemento subseqüente que você adiciona ao array. também conhecidos como matrizes. Adicione o seguinte ActionScript ao Frame 1 da Timeline: var myArray:Array = ["one". é possível implementar arrays como arrays aninhados.push("two"). Por exemplo. "two".push("one"). durante a programação. Portanto. myArray.two. É possível pesquisar os itens por sua posição no array. Crie arrays usando o construtor Array e um literal de array no próximo exemplo. myArray. myArray.fla. que é o que você poderia ter feito nas seções anteriores. a mesma saída aparece no painel Output. podem ser considerados grades. trace(myArray).Criando arrays indexados Os arrays indexados armazenam uma série de um ou mais valores. Esse código equivale ao ActionScript escrito na etapa 2. um tabuleiro de xadrez é uma grade de oito colunas e linhas. // one. 5.two. defina um novo array para reter os valores. O primeiro índice é sempre o número 0. você usará o literal de array para definir um novo array para o código.three Na primeira linha do ActionScript. você provavelmente usará matrizes para modelar esses tipos de estruturas. O seguinte texto será exibido no painel Output (Saída): one. 3.three Nesse código. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): var myArray:Array = new Array(). "three"]. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código. Para criar um array indexado: 1. Durante o teste do código. 2. É possível criar um array indexado chamando o construtor de classe Array ou inicializando o array com um literal de array.three 4.push("three"). Retorne à ferramenta de criação e exclua o código do painel Actions (Ações). cada um deles contendo também um array com oito elementos. Você pode modelar esse tabuleiro como um array com oito elementos. que são basicamente arrays de arrays. // one. Criando matrizes No ActionScript.two. trace(myArray). Os arrays aninhados.

crie um matriz com um elemento para cada dia da semana. conforme mostrado a seguir: // trace(twoDArray). Insira um comentário na instrução trace."two").two. Nesse caso.three. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código. O seguinte será exibido no painel Output: one four Sobre arrays 179 . twoDArray é o array principal que contém dois arrays aninhados. Cada elemento contém um array indexado que armazena a lista de tarefas. Os operadores de acesso de array subseqüentes referem-se aos elementos dos arrays aninhados. // four Para recuperar elementos de uma matriz. Para criar uma matriz básica e recuperar elementos no array: 1. "four")). // one trace(twoDArray[1][1]).Por exemplo. 2. consiste em dois elementos de array.four 4. o twoDArray. o compilador do ActionScript não pode verificar se o elemento acessado é uma propriedade válida do objeto.fla. 5. Esse array. Crie um novo documento do Flash e salve-o como multiArray1. O primeiro [] refere-se ao índice do array de nível superior. "take out trash"]. 6. O seguinte será exibido no painel Output (Saída): one. use vários operadores de acesso de array ([]) após o nome do array de nível superior. considere uma lista de tarefas armazenadas como um array indexado de seqüências de caracteres: var tasks:Array = ["wash dishes". Selecione Control > Test Movie para testar o código. A T E NÇ ÃO Quando você usa o operador de acesso de array. Para armazenar uma lista separada de tarefas para cada dia da semana. new Array("three". Esses elementos são arrays compostos por dois elementos. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): var twoDArray:Array = new Array(new Array("one". Adicione o seguinte ActionScript ao final do código no Frame 1 da Timeline: trace(twoDArray[0][0]). Retorne ao ambiente de criação e abra o painel Actions (Ações). trace(twoDArray). 3.

i < gridSize. Selecione Control > Test Movie para testar o código. j < gridSize.[2][2] Também é possível usar loops for aninhados para iterar os elementos de uma matriz. j++) { mainArr[i][j] = "[" + i + "][" + j + "]". 2.[1][2]. 3. for (i = 0.[2][0]. O seguinte será exibido no painel Output: [0][0]. i < gridSize. Para criar uma matriz usando um loop for: 1. o loop externo itera cada elemento de mainArray. 2. Em seguida. 180 Fundamentos da sintaxe e da linguagem . for (i = 0. você rastreia o array (mainArr). Esse ActionScript cria um array 3 x 3 e define o valor de cada nó de array com seu índice. } } trace(mainArr).[0][2].[1][0]. var j:Number. var i:Number. for (j = 0. var i:Number. Crie um novo documento do Flash e salve-o como multiArray2. } } Nesse código. for (j = 0. var mainArr:Array = new Array(gridSize). Adicione o seguinte ActionScript ao Frame 1 da Timeline: var gridSize:Number = 3. O loop interno itera cada array aninhado e retorna cada nó de array. var mainArr:Array = new Array(gridSize). conforme mostrado no exemplo a seguir. i++) { mainArr[i] = new Array(gridSize).fla. Para usar um loop for para iterar uma matriz: 1.[2][1].[1][1]. Adicione o seguinte ActionScript ao Frame 1 da Timeline: // from previous example var gridSize:Number = 3.fla. conforme mostrado no exemplo anterior.[0][1]. Crie um novo documento do Flash e salve-o como multiArray3. i++) { mainArr[i] = new Array(gridSize). var j:Number.É possível usar loops for aninhados para criar matrizes. j < gridSize. O exemplo a seguir mostrará como fazer isso. j++) { mainArr[i][j] = "[" + i + "][" + j + "]".

Para obter informações sobre o operador de acesso de array. O seguinte será exibido no painel Output: [0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2] Para obter informações sobre como usar os arrays. Ao criar um código para localizar um valor associado a uma chave. Criando arrays associativos Um array associativo. i++) { var innerArrayLength:Number = mainArr[i]. Selecione Control > Test Movie para exibir os elementos mostrados no painel Output. como Number. seguindo o código digitado na etapa 2: // iterate through elements var outerArrayLength:Number = mainArr. para organizar os valores armazenados. consulte “Usando operadores de ponto e de acesso de array” na página 194. Cada chave é uma seqüência exclusiva.length. j < innerArrayLength.3. for (j = 0. for (i = 0. Esse valor pode ser um tipo de dados. que é como um objeto. Sobre arrays 181 .length. é composto de chaves e valores fora de ordem. Use a propriedade length de cada array como condição do loop. em vez de um índice numérico. Ela é associada a um valor e usada para acessá-lo. Os arrays associativos usam chaves. você está indexando ou executando uma pesquisa. 4. } } Esse ActionScript itera os elementos do array. i < outerArrayLength. Array. Adicione o seguinte ActionScript ao Frame 1 da Timeline. consulte “Sobre adição e remoção de elementos” na página 177. Para obter informações sobre os elementos do array. j++) { trace(mainArr[i][j]). É por isso que você usará arrays associativos na maioria das vezes. consulte o “Usando arrays” na página 173. Object etc.

someObj. A desvantagem é que esses arrays não são tão úteis em um loop porque não utilizam números como valor de índice. 3.myX = 100. N O TA É possível acessar variáveis em um array associativo usando dois métodos diferentes: sintaxe de ponto (someObj. A chave e o valor são mapeados entre si. someObj. Por exemplo. O código não deve esperar que as chaves de um array associativo sejam exibidas em uma ordem específica. trace(someObj. que é geralmente mais fácil de memorizar.A associação entre uma chave e um valor é geralmente chamada de vinculação. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): // Define the object to use as an associative array. someObj. Crie um novo documento do Flash. someObj. Eles são úteis quando é necessário realizar freqüentemente a pesquisa por valores de chave. Depois disso. 2. você exibe uma propriedade selecionada através do operador de ponto e da sintaxe de acesso de array.myAlpha). você pode chamar o elemento de array necessário usando uma seqüência de caracteres em vez de um número.myShape = "Rectangle". // 72 trace(someObj["myAlpha"]). NO TA Os arrays associativos são coleções de combinações chave/valor dispostas fora de ordem. someObj. Por exemplo. um livro de contatos poderia ser considerado um array associativo. se você tivesse um array de nomes e idades que precisasse utilizar com muita freqüência. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript.myW = 480. var someObj:Object = new Object(). 182 Fundamentos da sintaxe e da linguagem . Por fim.myH = 360. onde os nomes são as chaves e os endereços de e-mail são os valores. O exemplo a seguir demonstra como criar um objeto e definir uma série de propriedades em um array associativo. Ao usar arrays associativos.myY = 200. você define uma série de propriedades em someObj.myAlpha = 72. // Define a series of properties. // 72 A primeira linha do ActionScript define um novo objeto (someObj) que é utilizado como array associativo. seria recomendável usar um array associativo.myColor = 0xDFDFDF.myColor) e sintaxe de array (someObj[‘myColor’]). someObj. someObj. Para criar um array associativo simples: 1. // Display a property using dot operator and array access syntax.

Para obter mais informações sobre as classes. poderá tirar proveito da inicialização do array com um literal de objeto. 3.O painel Output (Saída) exibe o número 72 duas vezes. que representa os dois níveis alfa rastreados.fla. trace(monitorInfo["type"] + ". Uma instância da classe Object. nas quais é mais conveniente ter chaves de seqüência de strings em vez de índices numéricos. as instâncias Object são basicamente arrays associativos. Selecione Control > Test Movie. é funcionalmente idêntica a um array associativo. use o construtor Object para criar o array: var monitorInfo:Object = new Object(). Recomenda-se usar arrays associativos nas funcionalidades semelhantes a dicionário. na página 239. N OT A Se não for necessário inicializar o array no momento da declaração. consulte Capítulo 7.0: ■ ■ Usando um construtor Object Usando um construtor Array Essas duas maneiras são demonstradas nos exemplos a seguir. Esse código cria um array associativo chamado monitorInfo e usa um literal de objeto para inicializar o array com duas combinações chave/valor. Se você usar o construtor Object para criar um array associativo. " + monitorInfo["resolution"]). Existem duas maneiras de criar arrays associativos no ActionScript 2. Para criar um array associativo usando um construtor Object: 1. Adicione o seguinte ActionScript ao Frame 1 da Timeline: var monitorInfo:Object = {type:"Flat Panel". “Classes”. Crie um novo documento do Flash e salve-o como assocArray. Na verdade. resolution:"1600 x 1200"}. também chamada de objeto genérico. Cada nome de propriedade do objeto genérico atua como a chave que fornece acesso a um valor armazenado. O painel Output exibirá o seguinte: Flat Panel. 2. Para obter mais informações sobre os literais. NO T A O exemplo anterior utilizou um construtor Object para criar um array associativo. consulte “Sobre literais” na página 138. 1600 x 1200 Sobre arrays 183 .

A segunda maneira de criar um array associativo é usar o construtor Array e o operador de colchetes ([]) ou o operador de ponto (. Depois que você usar um literal de objeto ou o construtor de classe Object para criar o array. Para criar um array associativo usando um construtor Array: 1. junto com seus respectivos valores.7 million Observe que uma chave pode conter um caractere de espaço. " + monitorInfo. monitorInfo. 5. Adicione o seguinte ActionScript ao Frame 1 da Timeline (após o código digitado anteriormente): monitorInfo["aspectRatio"] = "16:10". Panel". Esse código cria um array associativo chamado monitorInfo usando o construtor Array e adiciona uma chave chamada type e outra denominada resolution. Para obter mais informações sobre os operadores de colchetes e operadores de ponto. Se você declarar o array associativo para ser do tipo Array.colors). não é possível usar um literal de objeto para inicializar o array. Adicione o seguinte ActionScript ao Frame 1 da Timeline: var monitorInfo:Array = new monitorInfo["type"] = "Flat monitorInfo["resolution"] = trace(monitorInfo["type"] + Array(). O uso de espaços nos nomes de chave não é recomendado. consulte “Formatando a sintaxe do ActionScript” na página 799.fla. "1600 x 1200". Crie um novo documento do Flash e salve-o como assocArray2.4. Selecione Control > Test Movie. conforme demonstrado nesse código. consulte “Sobre operadores” na página 185. O código que você acabou de digitar adiciona dois novos valores ao array monitorInfo. NO T A Não há nenhuma vantagem em usar o construtor Array para criar um array associativo. mas gerará um erro se você tentar isso com o operador de ponto. Para obter mais informações sobre o código formatado corretamente. será possível adicionar novos valores ao array usando o operador de colchetes ([]) ou o operador de ponto (. " + monitorInfo["resolution"]). O painel Output exibirá o seguinte texto: 16:10. O próximo exemplo demonstra como usar o construtor Array para criar um array associativo.) para adicionar as combinações chave/valor ao array. ". 184 Fundamentos da sintaxe e da linguagem . Isso é possível com o operador de colchetes.colors = "16. 2. 16.7 million". trace(monitorInfo["aspectRatio"] + ". O construtor Array é melhor para criar arrays indexados.).

Por exemplo. Por exemplo. os quais são qualquer combinação legal de símbolos do ActionScript que representam um valor. não haverá tempo de discutir cada um deles. * e =. consulte “Sobre sintaxe. É possível combinar operadores e valores para criar uma expressão e. Um operando é a parte do código na qual o operador executa ações. não poderá usar nenhum método e propriedade da classe Array (como sort() ou length) ao utilizar um array associativo.3. Sobre operadores 185 . Mesmo que você crie um array associativo com o construtor new Array(). use a classe Object em vez de um array associativo. N O TA Esta seção descreve como usar cada tipo de operador. comparar ou alterar valores em uma expressão. chamar uma função. Uma expressão é qualquer instrução que o Flash possa avaliar e que retorne um valor. O construtor Array é melhor para criar arrays indexados. ainda. uma expressão matemática usa operadores numéricos para manipular os valores utilizados. Selecione Control > Test Movie. pode-se citar +. Para usar combinações chave/valor em vez de índice numérico. Sobre operadores Esta seção descreve regras gerais sobre tipos comuns. Como exemplos de caracteres de operador. Para obter informações sobre cada operador. <.0 Language Reference (Referência à linguagem ActionScript 2. Os arrays associativos são basicamente instâncias da classe Object e não existe nenhuma vantagem em criar arrays associativos com o construtor Array. Os operadores são caracteres que especificam como combinar.0). No entanto. As expressões e os operadores são utilizados com freqüência no código. O painel Output exibirá o seguinte texto: Flat Panel. 1600 x 1200 N OT A Não há nenhuma vantagem em usar o construtor Array para criar um array associativo. Uma expressão consiste em operadores e operandos. Para obter mais informações sobre as expressões. x e 2 são operandos e + é um operador. instruções e expressões” na página 120. na expressão x + 2. consulte ActionScript 2. precedência e associatividade de operadores. Você pode criar uma expressão combinando operadores e valores ou chamando uma função. incluindo os operadores especiais que não se enquadram nas categorias a seguir.

Esta seção descreve regras gerais sobre tipos comuns.0).0 Language Reference (Referência à linguagem ActionScript 2. Para obter mais informações sobre como usar vários operadores em um único exemplo de código.As partes do código em que o operador executa ações são chamadas de operandos. você pode usar o operador de adição (+) para somar valores de um literal numérico. consulte “Usando operadores em um documento” na página 210. precedência e associatividade de operadores: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ “Usando operadores para manipular valores” na página 187 “Sobre associatividade e precedência de operadores” na página 188 “Sobre uso de operadores com seqüências de caracteres” na página 192 “Usando operadores de ponto e de acesso de array” na página 194 “Sobre operadores pós-fixados” na página 196 “Sobre operadores unários” na página 197 “Sobre operadores multiplicativos” na página 197 “Sobre operadores aditivos” na página 198 “Usando operadores numéricos” na página 198 “Sobre operadores relacionais” na página 200 “Sobre operadores de igualdade” na página 200 “Usando operadores relacionais e de igualdade” na página 200 “Sobre operadores de atribuição” na página 204 “Usando operadores de atribuição” na página 204 “Sobre operadores lógicos” na página 205 “Usando operadores lógicos” na página 206 “Sobre operadores de deslocamento bit a bit” na página 207 “Sobre operadores lógicos bit a bit” na página 208 “Usando operadores bit a bit” na página 208 “Sobre o operador condicional” na página 210 “Usando operadores em um documento” na página 210 Para obter informações sobre os operadores que não se enquadram nessas categorias. que contém informações sobre todos os operadores que podem ser utilizados. 186 Fundamentos da sintaxe e da linguagem . myNum e 3 são operandos. consulte ActionScript 2. Neste exemplo. As seções a seguir mostram algumas funções comuns dos operadores. Por exemplo. Você pode fazer isso para somar o valor de uma variável chamada myNum. myNum + 3.

você poderia aumentar o valor de uma variável chamada myScore. // 4 3. trace("Example one: " + myScore). // 1 // example two var secondScore:Number = 1. // 2 Sobre operadores 187 . até mesmo. armazena o resultado na variável myScore. trace(myNum). Para manipular valores usando os operadores: 1. Abra o painel Actions (Ações) (Window (Janela) > Actions) e digite o código a seguir no painel Script: // example one var myScore:Number = 0. você poderia criar um jogo no Flash onde o placar mudasse de acordo com a interação do usuário com as instâncias no Stage (Palco). Veja um exemplo do operador de incremento no ActionScript a seguir: var myNum:Number = 0. Selecione Control (Controlar) > Test Movie (Testar filme). Use uma variável para reter o valor e os operadores para manipular o valor da variável. myScore = myScore + 1. O segundo exemplo de código usa o operador de atribuição de adição para somar e atribuir um novo valor em uma única etapa. pois ele manipula um incremento e uma atribuição simultaneamente. myScore += 1. O operador de incremento (++) é um modo simplificado de dizer myScore = myScore + 1.Usando operadores para manipular valores Os operadores são geralmente utilizados para manipular valores no Flash. secondScore += 3. Crie um novo documento do Flash. No primeiro exemplo de código. trace(myNum). // 1 myNum++. É possível reescrever a linha myScore = myScore + 1 (no exercício anterior) como myScore++ ou. myNum++. pois soma dois valores. O painel Output (Saída) exibirá o seguinte texto: Example one: 1 Example two: 4 O operador de adição é fácil de compreender. trace("Example two: " + secondScore). Depois. ele soma o valor atual de myScore com o número 1. Por exemplo. 2. Por exemplo. O exemplo a seguir demonstra como usar os operadores + (adição) e += (atribuição de adição) para somar e incrementar valores no código.

var i:Number. A precedência e associatividade de operador determinam a ordem em que os operadores são processados. Sobre associatividade e precedência de operadores Quando dois ou mais operadores são utilizados em uma instrução. Embora possa parecer natural para os usuários familiarizados com a aritmética ou a programação básica que o compilador processe o operador de multiplicação (*) antes do operador de adição (+). Por exemplo. Essas instruções são conhecidas como precedência de operador. mySum = 2 + 4 * 3. consulte “Sobre instruções” na página 149. o compilador precisa de instruções explícitas sobre quais operadores devem ser processados primeiro. Portanto. ele se baseia no operador de incremento. i++) { trace(i). Em vez disso. É possível manipular o valor de uma variável usando operadores quando uma condição é true. No final desta seção. Você verá um exemplo de precedência de operador quando estiver trabalhando com os operadores de multiplicação e adição: var mySum:Number. há uma tabela que descreve essa hierarquia. você poderá usar o operador de incremento (++) para incrementar a variável i enquanto a condição for true. trace(mySum). Portanto. alguns deles têm precedência sobre outros. } O painel Output exibirá os números de 1 a 9. e parará. i < 10. 4 * 3 e avaliado primeiro e o resultado é somado com o número 2.Observe que o trecho de código anterior não tem operadores de atribuição. O último valor exibido é 9. o valor de i será 1 quando o arquivo SWF começar a ser executado e 9 depois que o rastreamento for concluído. // 14 Observe que a saída dessa instrução é 14. a condição será true enquanto i for menor que 10. O ActionScript tem uma hierarquia que determina quais operadores serão executados primeiro. Enquanto a condição for true. for (i = 1. Para obter mais informações sobre as condições e os loops. que é a incrementação da variável i até chegar à condição de término (i é igual a 10). No código a seguir. 188 Fundamentos da sintaxe e da linguagem . você incrementará i em um número mais alto usando i++. pois a multiplicação tem uma precedência de operador mais alta.

// 24 Dois ou mais operadores de mesma precedência podem aparecer na mesma expressão. trace(mySum). // false Sobre operadores 189 . a associatividade determinará a ordem em que os operadores serão executados. Para obter mais informações sobre o operador condicional (?:). Ele tem uma associatividade da esquerda para a direita. o que significa que os operadores da esquerda são processados antes dos operadores da direita. trace(mySum). Isso significa que as duas instruções a seguir produzem a mesma saída: trace(3 > 2 < 1). portanto.É possível determinar o que acontecerá delimitando as expressões entre parênteses. var myOtherSum:Number. A associatividade pode ser da esquerda para a direita ou da direita para a esquerda. Se esses dois operadores forem utilizados na mesma expressão. Todos os operadores binários. Observe o operador de multiplicação novamente. mySum = 2 * 4 * 3. mySum = (2 + 4) * 3. que possuem a mesma precedência. a saída dessa instrução será 18. // 18 Agora. o que significa que os operadores da direita são processados antes dos operadores da esquerda. // 24 trace(myOtherSum). consulte “Sobre o operador condicional” na página 210. var mySum:Number. O ActionScript define uma precedência de operador padrão que pode ser alterada através dos parênteses (()). o ActionScript executa a adição primeiro: var mySum:Number. Por exemplo. Nesse caso. Quando uma expressão de adição é colocada entre parênteses. considere os operadores de sinal de menor (<) e sinal de maior (>). exceto os de atribuição. as duas instruções a seguir são idênticas. Para obter mais informações sobre os operadores de atribuição. o operador da esquerda será processado primeiro porque ambos possuem a associatividade da esquerda para direita. // false trace((3 > 2) < 1). Nesses casos. o compilador usa as regras de associatividade para determinar qual operador deve ser processado primeiro. consulte “Usando operadores de atribuição” na página 204. Os operadores também podem ter a mesma precedência. possuem a associatividade da esquerda para direita. myOtherSum = (2 * 4) * 3. Os operadores de atribuição e o operador condicional (?:) possuem a associatividade da direita para a esquerda.

será necessário escrever i<50 primeiro. o valor true é passado para o operador menor que (<). consulte Capítulo 19. “Formatando a sintaxe do ActionScript”. Portanto. [ ] ( ) function ( ) ++x --x - ~ 190 Fundamentos da sintaxe e da linguagem . A tabela a seguir lista todos os operadores do ActionScript e sua associatividade. O operador menor que (<) converte o valor true no valor numérico 1 e compara esse valor numérico com o segundo operando 1 para retornar o valor false (o valor 1 não é menor que 1). na página 799.O operador maior que (>) é processado primeiro. isso será verificado primeiro. Para obter mais informações e diretrizes sobre como usar os operadores e os parênteses. se você souber que i será maior que 50 na sua condição. junto com o operando 1. particularmente quando você estiver configurando condições complexas e souber a freqüência em que uma dessas condições se apresenta como true. Operador Descrição Precedência mais alta x++ Associatividade Pós-incremento Pós-decremento Acesso de propriedade de objeto Elemento de array Parênteses Chamada de função Pré-incremento Pré-decremento Negação unária. Em seguida. como x = -1 NOT bit a bit Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Direita para esquerda Direita para esquerda Esquerda para direita Direita para esquerda x-- . Por exemplo. da precedência mais alta para a mais baixa. Considere a ordem dos operandos no ActionScript. para que a segunda condição a ser escrita não precise ser verificada com tanta freqüência. o que resultará em um valor true porque o operando 3 é maior que o operando 2.

Operador ! Descrição NOT lógico Alocar objeto Desalocar objeto Tipo de objeto Retorna um valor indefinido Multiplicar Dividir Módulo Mais unário Menos unário Deslocamento para esquerda bit a bit Deslocamento para direita bit a bit Deslocamento para direita bit a bit (sem sinal) Instância de (localiza a classe da qual o objeto é uma instância) Requer Flash Player 6 ou posterior Menor que Menor ou igual a Maior que Associatividade Direita para esquerda Direita para esquerda Direita para esquerda Direita para esquerda Direita para esquerda Esquerda para direita Esquerda para direita Esquerda para direita Direita para esquerda Direita para esquerda Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita new delete typeof void * / % + - << >> >>> instanceof < <= > Sobre operadores 191 .

<<=. Vírgula Precedência mais baixa Sobre uso de operadores com seqüências de caracteres Os operadores de comparação só compararão seqüências de caracteres se os dois operandos forem seqüências de caracteres. Para obter mais informações sobre os operadores numéricos. &=.Operador >= Descrição Maior ou igual a Igual a Diferente de AND bit a bit XOR bit a bit OR bit a bit AND lógico OR lógico Condicional Atribuição Atribuição composta Associatividade Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Direita para esquerda Direita para esquerda Direita para esquerda Esquerda para direita == != & ^ | && || ?: = *=. >>=. |=. >>>= . consulte “Usando operadores numéricos” na página 198. ^=. %=. o ActionScript converterá ambos os operandos em números e executará uma comparação numérica. Se apenas um operando for uma seqüência de caracteres. Uma exceção a essa regra é o operador de igualdade estrita (===). /=. =. +=. 192 Fundamentos da sintaxe e da linguagem .

// true NO T A Os operadores de comparação comparam apenas duas seqüências de caracteres. trace(c. É possível usar operadores para manipular seqüências de caracteres.Com exceção do operador de igualdade (==). Para obter mais informações sobre os operadores de comparação. é necessário converter as seqüências de caracteres em maiúsculas ou minúsculas antes de compará-las. var e:String = "Egg". Use o operador de adição (+) para concatenar operandos de seqüências de caracteres. as duas seqüências de caracteres são convertidas em minúsculas e comparadas.toLowerCase()). o ActionScript converterá ambos os operandos em números e executará uma comparação numérica. "chicken" virá antes de "egg": var c:String = "chicken". As seqüências de caracteres em maiúsculas têm precedência sobre as seqüências de caracteres em minúsculas.chicken Nesse ActionScript. Se apenas um dos operandos for uma seqüência de caracteres. trace(riddleArr). >=. o método sort() da classe Array reordena o conteúdo do array em ordem alfabética. consulte “Sobre operadores de igualdade” na página 200 e “Usando operadores relacionais e de igualdade” na página 200. Para comparar as seqüências de caracteres independentemente do uso de maiúsculas e minúsculas.sort()). Observe que o valor “Egg” vem antes de “chicken” porque o E maiúsculo vem antes do c minúsculo. Talvez você já tenha usado o operador de adição para concatenar seqüências de caracteres ao escrever instruções trace. var c:String = "chicken". // Egg. É possível usar os métodos toLowerCase() ou toUpperCase() para converter as seqüências de caracteres e deixá-las com o mesmo uso de maiúsculas e minúsculas antes que elas sejam comparadas. Agora. Isso significa que o "Egg" vem antes de "chicken". Os operadores de comparação comparam seqüências de caracteres para determinar qual virá primeiro pela ordem alfabética. trace(c < e). trace("The variable is " + myNum + "."). < e <=) afetam seqüências de caracteres de maneira diferente quando operam em outros valores. você poderia escrever o seguinte: var myNum:Number = 10. Por exemplo. var e:String = "Egg".toLowerCase() < e. Por exemplo. Sobre operadores 193 . // false var riddleArr:Array = new Array(c. os operadores de comparação (>. No exemplo a seguir. os operadores não compararão os valores se um operando for um valor numérico.Egg trace(riddleArr. // chicken. e).

autoSize = "left". 100. o painel Output (Saída) exibirá o seguinte: The variable is 10. Usando operadores de ponto e de acesso de array É possível usar o operador de ponto (. por sua vez.". 0. Use os operadores de ponto para referenciar determinados índices em um objeto. id:2001}. myTxt. o Flash. Portanto. 20). Por exemplo.text = "One carrot. No código ActionScript a seguir. o valor de myNum será convertido em seqüência de caracteres no exemplo anterior. é possível concatenar duas seqüências de caracteres de diferentes variáveis em um único campo de texto. Por exemplo. trace("User's name is: " + someUser["name"]). o Flash converterá o outro operando em seqüência de caracteres. 10 large eggplants. 11. NO T A 194 O ActionScript trata os espaços no começo ou final de uma seqüência de caracteres como uma parte literal dessa seqüência. Esse código retorna o seguinte em um campo de texto com o nome de instância myTxt: One carrot.) e o operador de acesso de array ([]) para acessar propriedades internas ou personalizadas do ActionScript.createTextField("myTxt". Observe como a terceira linha do código usa o operador de adição para concatenar o valor da variável myNum no campo de texto e como a quarta linha do código usa o operador de atribuição de adição para concatenar uma seqüência de caracteres no valor existente do campo de texto. " + myNum + " large eggplants. algumas vezes. conforme demonstrado no ActionScript a seguir: var someUser:Object = {name:"Hal". Quando você está trabalhando com seqüências de caracteres e números. myTxt.text += " Lots of vegetable broth. 0. a instrução trace usa o operador + para concatenar. this. O exemplo anterior mostrou como é possível usar os operadores de adição (+) e atribuição de adição (+=) para concatenar seqüências de caracteres. que. // User's name is: Hal trace("User's id is: " + someUser["id"]). a variável myNum é concatenada com uma seqüência de caracteres. é exibida no campo de texto myTxt do Stage (Palco). No exemplo a seguir. especifique um determinado nome de chave no operador de acesso de array para recuperar o nome de um usuário.Após o teste do código. Lots of vegetable broth. Se apenas um dos operandos de seqüência de texto for uma seqüência de caracteres. e não para somar. myTxt.". var myNum:Number = 10. concatena em vez de somar numericamente. se um objeto contiver alguma informação do usuário. // User's id is: 2001 Fundamentos da sintaxe e da linguagem .

Para usar os operadores de ponto e de acesso de array: 1. nestedClip4. crie um clipe de filme na Timeline (Linha de tempo) principal. ele a avaliará primeiro e usará o resultado como nome da variável. Para definir um valor na instância myClip da linha de tempo atual. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. use os operadores de ponto ou de acesso de array.spam). conforme demonstrado nesse ActionScript. mas o operador de acesso de array retorna o conteúdo como nome e acessa o valor desse nome de propriedade. 6. Selecione o clipe de filme e abra o Property inspector (Inspetor de propriedades). Os operadores de ponto e de acesso de array são muito parecidos. year.border = true. O painel Output exibirá o número 10. Adicione quatro novas instâncias a myClip. Use Sobre operadores 195 . 10. 3. o Property inspector para adicionar os seguintes nomes de instância a cada uma das quatro instâncias: nestedClip1.text = "My text".. myTextField. O operador de ponto utiliza um identificador como propriedade. O operador de acesso de array será útil ser você não souber exatamente quais chaves estão em um objeto. Em um novo documento do Flash. trace(myClip.spam = 5. 4. // 5 2.in para iterar um objeto ou clipe de filme e exibir seu conteúdo. nestedClip2. nestedClip3. Retorne ao ambiente de criação e clique duas vezes na instância myClip. O painel Output (Saída) exibirá o número 5. Quando isso ocorrer. Digite o nome de instância myClip.day = 9. 5.Por exemplo. Se você escrever uma expressão dentro do operador de acesso de array.month. Retorne ao ambiente de criação e substitua a primeira linha do ActionScript pelo seguinte: myClip["spam"] = 10. 7. 9. o ActionScript a seguir usa o operador de ponto para definir determinadas propriedades dentro dos objetos: myTextField. 8. use o loop for. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline: myClip. O operador de acesso de array permite definir e recuperar dinamicamente nomes de instância e variáveis. Selecione Control > Test Movie para testar o documento.

consulte “Criando matrizes” na página 178. Isso economizará tempo porque não é necessário referenciar especificamente cada instância. o que permitirá definir dinamicamente a instância. Sobre operadores pós-fixados Os operadores pós-fixados utilizam um operador e incrementam ou decrementam o valor desse operador. o valor da expressão é retornado antes do processamento do operador pós-fixado. i++) { myClip["nestedClip" + i]. Você está usando o operador de acesso de array para iterar cada clipe de filme aninhado na instância myClip e definir sua propriedade visível dinamicamente. Quando um operador pós-fixado é utilizado como parte de uma expressão maior. Agora as quatro instâncias aninhadas não estão mais visíveis. o texto exibido no painel Output (Saída) é o seguinte: 0 1 196 Fundamentos da sintaxe e da linguagem . Por exemplo. a variável e os nomes de objeto: myNum[i] = 10.11. Selecione Control > Test Movie para testar o ActionScript recém-adicionado. trace(xNum++). o código a seguir mostra como o valor da expressão xNum++ é retornado antes que ele seja incrementado. é possível usar o operador de colchetes para acessar propriedades em um objeto criado dinamicamente. i <= 4. } Esse ActionScript alternará a visibilidade de cada clipe de filme aninhado. Para obter informações sobre os operadores unários. 12. caso a definição de classe desse objeto não receba o atributo dynamic._visible = false. eles não são classificados junto com os demais operadores unários. Para obter mais informações sobre como criar matrizes com operadores de acesso de array. // 0 trace(xNum). Embora esses operadores sejam unários. pois têm uma precedência mais alta e um comportamento especial. consulte “Sobre operadores unários” na página 197. for (i = 1. var xNum:Number = 0.0. Adicione o seguinte código ao Frame 1 da Timeline principal: var i:Number. No ActionScript 2. // 1 Quando esse código é rastreado. Também é possível usar o operador de acesso de array que fica no lado esquerdo de uma atribuição. Também é possível criar matrizes através desse operador.

nesse caso.Os operadores desta tabela possuem a mesma precedência: Operador ++ -- Operação executada Incremento (pós-fixado) Decremento (pós-fixado) Sobre operadores unários Os operadores unários utilizam um operando. Os operadores pré-fixados diferem dos pós-fixados porque o operador de incremento ou decremento é concluído antes que o valor da expressão geral seja retornado.unário (negação) Retorna informações de tipo Retorna um valor indefinido Sobre operadores multiplicativos Os operadores multiplicativos usam dois operandos e executam cálculos de multiplicação. Os operadores de incremento (++) e decremento (--) desse grupo são operadores pré-fixados. Para obter informações sobre os operadores pós-fixados. divisão ou módulo. trace(++xNum). consulte “Sobre operadores pós-fixados” na página 196. o código a seguir mostra como o valor da expressão xNum++ é retornado depois que ele é incrementado. Outros operadores numéricos incluem operadores aditivos. isso significa que eles aparecerão antes do operando em uma expressão. // 1 trace(xNum). // 1 Todos os operadores desta tabela possuem a mesma precedência: Operador ++ -+ ! typeof void Operação executada Incremento (pré-fixado) Decremento (pré-fixado) + unário . consulte “Sobre operadores aditivos” na página 198. Por exemplo. eles serão operadores pós-fixados. var xNum:Number = 0. Para obter informações sobre os operadores aditivos. Sobre operadores 197 . Eles também podem aparecer depois do operando.

consulte “Usando operadores numéricos” na página 198. Sobre operadores aditivos Os operadores aditivos utilizam dois operandos e executam cálculos de adição ou subtração. Esse operador tem outras funções. dividir e multiplicar valores no ActionScript. É possível executar vários tipos de operações aritméticas. Usando operadores numéricos Use operadores numéricos para adicionar. consulte “Usando operadores numéricos” na página 198. Para obter informações sobre os operadores multiplicativos. 198 Fundamentos da sintaxe e da linguagem . É possível adicionar o incremento antes (pré-incremento) ou depois (pós-incremento) de um operando.Todos os operadores desta tabela possuem a mesma precedência: Operador * / % Operação executada Multiplicação Divisão Módulo Para obter informações sobre como usar os operadores multiplicativos. Outros operadores numéricos incluem operadores multiplicativos. geralmente formado como i++. Os operadores desta tabela possuem a mesma precedência: Operador + - Operação executada Adição Subtração Para obter informações sobre como usar operadores aditivos. subtrair. Um dos operadores mais comuns é o operador de incremento. Para obter mais informações sobre o operador de incremento. consulte “Sobre operadores multiplicativos” na página 197. consulte “Usando operadores para manipular valores” na página 187.

} 3. 29 é comparado com 30 e incrementado em 30 após a avaliação. você pode adicionar 3 e 7 para obter o resultado 37. Sobre operadores 199 . Para obter mais informações sobre a precedência de operador. } // example two var secondScore:Number = 29. Example two usa um pós-incremento (secondScore++). serviços da Web etc. O primeiro exemplo usa um pré-incremento (++firstScore) para incrementar e calcular firstScore antes que ele seja testado em relação ao número 30. Portanto. firstScore é incrementado em 30 e. O bloco de códigos “Example one” rastreia. o Flash trata os números como seqüências de caracteres. em seguida. consulte “Sobre associatividade e precedência de operadores” na página 188. pois os dois números são concatenados como seqüências de caracteres. if (secondScore++ >= 30) { // shouldn't trace trace("Success! secondScore++ is >= 30"). Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript.Para compreender os operadores numéricos no ActionScript: 1. Nesse caso. FlashVars. Ao carregar dados de fontes externas (como arquivos XML. em vez de serem somados numericamente. pois o arquivo SWF não conhece o tipo de dados do número. Crie um novo documento do Flash. é preciso ter cuidado ao trabalhar com operadores numéricos. if (++firstScore >= 30) { // should trace trace("Success! ++firstScore is >= 30"). que é avaliado após a execução do teste. testado em relação a esse número. é necessário converter manualmente os dados das seqüências de caracteres em números através da função Number(). Nesse caso. Às vezes.). 2. mas o bloco de códigos “Example two” não. Portanto. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): // example one var firstScore:Number = 29. Entretanto.

consulte “Usando operadores relacionais e de igualdade” na página 200. Usando operadores relacionais e de igualdade Os operadores relacionais e de igualdade. Sobre operadores de igualdade Os operadores de igualdade utilizam dois operandos. os operadores de comparação são utilizados em loops e instruções condicionais para especificar a condição aplicável no momento em que o loop deve parar. Todos os operadores desta tabela possuem a mesma precedência: Operador < > <= >= instanceof in Operação executada Menor que Maior que Menor ou igual a Maior ou igual a Verifica a cadeia de protótipos Procura propriedades de objeto Para obter informações sobre como usar os operadores relacionais. consulte “Usando operadores relacionais e de igualdade” na página 200. comparam seus valores e retornam um valor booleano. comparam os valores das expressões e retornam true ou false (um valor booleano). também chamados de operadores de comparação. comparam seus valores e retornam um valor booleano. Todos os operadores desta tabela possuem a mesma precedência: Operador == != === !== Operação executada Igualdade Diferença Igualdade estrita Diferença estrita Para obter informações sobre como usar operadores de igualdade.Sobre operadores relacionais Os operadores relacionais utilizam dois operandos. Geralmente. 200 Fundamentos da sintaxe e da linguagem .

a seqüência de caracteres the array is empty aparece no painel Output. para: var myNum:Number = 4. mas não para definir valores. var myArr:Array = new Array(). números ou valores booleanos são comparados através de um valor.Use o operador de igualdade (==) para determinar se os valores ou as referências dos dois operandos são iguais e se essa comparação retornará um valor booleano. Os operandos de seqüência de caracteres. Verifique se a variável myNum é igual a 2.length == 0) { trace("the array is empty. } Quando você seleciona Control (Controlar) > Test Movie (Testar filme). Retorne ao ambiente de criação e altere: var myNum:Number = 2. 3. 5. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): var myNum:Number = 2. } Nesse ActionScript. A seqüência de caracteres It equals 2 aparece no painel Output. 2. Neste exemplo. Selecione Control > Test Movie novamente. Tente usar o operador de atribuição (=) para verificar a igualdade. veja como usar o operador de igualdade para testar o tamanho do array e exibir uma mensagem no painel Output (Saída) caso não haja itens no array. Retorne ao ambiente de criação e altere: if (myNum == 2) { 6. É possível usar o operador de igualdade para comparar valores."). if (myNum == 2) { // do something trace("It equals 2"). Crie um novo documento do Flash. A seqüência de caracteres It equals 2 não aparece no painel Output. 4. Para usar os operadores relacionais e de igualdade no código: 1. Os operandos de objeto e array são comparados através de uma referência. Selecione Control > Test Movie. if (myArr. use o operador de igualdade (==) para verificar a igualdade. para if (myNum = 2) { Sobre operadores 201 .

myTxt. 20). myTxt. Se dois operandos forem de tipos diferentes. Nesse caso. // true trace(num1 === num2). selecione Flash Document (Documento do Flash) para criar um arquivo FLA. submit_mc. 20). submit_mc. O ActionScript a seguir demonstra a diferença-chave entre o operador de igualdade (==) e o operador de igualdade estrita (===): var num1:Number = 32. Se você comparar as variáveis usando o operador de igualdade. O operador de igualdade estrita (===) é similar ao operador de igualdade. myTxt. o Flash não tenta realizar nenhuma conversão de tipo de dados antes de comparar os valores. 0. em seguida. 30). o Flash considera as variáveis como dois valores separados. 0). Selecione File (Arquivo) > New (Novo) e. Adicione o seguinte código ao Frame 1 da Timeline principal: this. this. o operador de igualdade retornará false. comparará esses valores para constatar se são iguais. submit_mc. em vez de comparar myNum com 2. Para usar o operador de maior ou igual a no código: 1. A seqüência de caracteres It equals 2 aparece no painel Output novamente. consulte “Usando operadores de atribuição” na página 204.lineTo(100. em seguida. var num2:String = new String("32"). 0). Conseqüentemente.moveTo(0.beginFill(0xFF0000).restrict = "0-9". 20. você usará o operador de maior ou igual a (>=) para comparar valores e executar o código com base no valor digitado por um usuário em um campo de texto.createTextField("myTxt".7. você define as variáveis numéricas: num1 enum2. O operador de diferença estrita (!==) retorna o resultado oposto ao do operador de igualdade estrita.type = "input". você atribui o valor 2 a myNum. 0. 100. o que pode gerar resultados inesperados durante o teste do documento do Flash. Na etapa 6. submit_mc. Para obter mais informações sobre como utilizar corretamente o operador de atribuição. trace(num1 == num2). // false Primeiro.border = true.lineTo(100. Selecione Control > Test Movie novamente. 202 Fundamentos da sintaxe e da linguagem . No exemplo a seguir. a instrução if é executada independente do valor anterior de myNum. 2. a única diferença é que ele não realiza a conversão de tipo.createEmptyMovieClip("submit_mc". Quando o operador de igualdade estrita (===) é utilizado. o Flash tentará converter os valores no mesmo tipo de dados e.

return. Para obter mais informações sobre as seqüências de caracteres e os operadores. if (myNum == 10) { trace("Your number is 10"). 0). } else { trace("Your number is less than 10"). 20).text). Altere a condição no ActionScript da seguinte maneira. } else { trace("Your number is not 10"). submit_mc. os dois operandos serão convertidos em números e executarão uma comparação numérica. } if (myNum >= 10) { trace("Your number is greater than or equal to 10"). Também é possível verificar se determinadas condições são verdadeiras e executar um bloco alternativa se a condição não for verdadeira. } 5._x = 110. if (isNaN(myNum)) { trace("Please enter a number"). consulte “Sobre associatividade e precedência de operadores” na página 188. Com exceção do operador de igualdade estrita (===). 4. submit_mc. 3. os operadores de comparação compararão seqüências de caracteres somente se os operandos forem seqüências de caracteres. } }.submit_mc. submit_mc.lineTo(0. consulte “Sobre uso de operadores com seqüências de caracteres” na página 192. Sobre operadores 203 . Selecione Control > Test Movie para testar o ActionScript.lineTo(0.onRelease = function(evt_obj:Object):Void { var myNum:Number = Number(myTxt. Para obter informações sobre como a ordem e a precedência de operador afetam o ActionScript. Se apenas um dos operandos for uma seqüência de caracteres. Selecione Control > Test Movie para testar o ActionScript novamente.endFill(). submit_mc.

204 Fundamentos da sintaxe e da linguagem . Na instrução a seguir. Para atribuir uma seqüência de caracteres a uma variável. numOne = numTwo = numThree = 10. var numThree:Number. var numOne:Number. numTwo e numThree. var numTwo:Number.Sobre operadores de atribuição Os operadores de atribuição utilizam dois operandos e atribuem um valor a um operando com base no valor do outro operando. o valor 10 é atribuído às variáveis numOne. Usando operadores de atribuição Use o operador de atribuição (=) para atribuir um determinado valor a uma variável. faça o seguinte: var myText:String = "ScratchyCat". Também é possível usar o operador de atribuição para atribuir diversas variáveis na mesma expressão. consulte “Usando operadores de atribuição” na página 204. Todos os operadores desta tabela possuem a mesma precedência: Operador = *= /= %= += -= <<= >>= >>>= &= ^= |= Operação executada Atribuição Atribuição de multiplicação Atribuição de divisão Atribuição de módulo Atribuição de adição Atribuição de subtração Atribuição de deslocamento para esquerda bit a bit Atribuição de deslocamento para direita bit a bit Atribuição de deslocamento para direita bit a bit (sem sinal) Atribuição AND bit a bit Atribuição XOR bit a bit Atribuição OR bit a bit Para obter informações sobre como usar operadores de atribuição.

coloque a expressão 5+2 entre parênteses. retorne um valor booleano com base nessa comparação.Também é possível usar operadores de atribuição composta para combinar operações. Se um ou ambos os operandos forem avaliados como true. Para resolver isso. Estes operadores não têm a mesma precedência e são listados na tabela a seguir por ordem decrescente de precedência: Operador && || Operação executada AND lógico OR lógico Para obter informações sobre como usar os operadores lógicos. essas duas instruções desempenham a mesma função: var myNum:Number = 0. em vez de somá-los. se dois operandos forem avaliados como true. consulte “Usando operadores lógicos” na página 206. conforme mostrado no código a seguir: trace("the sum of 5 + 2 is: " + (5 + 2)). myNum = myNum + 15. Por exemplo. o operador OR lógico (||) retornará true. Sobre operadores 205 . em seguida. // the sum of 5 + 2 is: 7 Sobre operadores lógicos Use operadores lógicos para comparar valores booleanos (true e false) e. Ao trabalhar com o operador de atribuição. Os operadores lógicos utilizam dois operandos e retornam um resultado booleano. // the sum of 5 + 2 is: 52 O Flash concatena os valores 5 e 2. o operador AND lógico (&&) retornará true. atribuem o novo valor ao primeiro operando. Por exemplo. myNum += 15. conforme mostrado no exemplo a seguir: trace("the sum of 5 + 2 is: " + 5 + 2). Esses operadores são executados nos dois operandos e. depois. você poderá ter problemas se tentar somar os valores de uma expressão.

20). submit_mc. submit_mc. 100. Isso é demonstrado pelo exemplo a seguir. myTxt. 30).type = "input".restrict = "0-9".lineTo(0.createEmptyMovieClip("submit_mc". } else { trace("Your number is NOT between 10 and 20"). você cria um campo de texto durante a execução.beginFill(0xFF0000). Nesse ActionScript. } }.endFill(). Abra o painel Actions (Ações) e digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): this.text). 0).border = true.lineTo(0.Usando operadores lógicos Os operadores lógicos são freqüentemente usados com os operadores de comparação para determinar a condição de uma instrução if. submit_mc.lineTo(100. myTxt. this. o Flash usará o operador lógico para exibir uma mensagem no painel Output (Saída). submit_mc. submit_mc. 206 Fundamentos da sintaxe e da linguagem .createTextField("myTxt". submit_mc. 0.moveTo(0. submit_mc. 0). 20. submit_mc.onRelease = function():Void { var myNum:Number = Number(myTxt._x = 110.lineTo(100. 20). } if ((myNum > 10) && (myNum < 20)) { trace("Your number is between 10 and 20"). Para usar operadores lógicos no código: 1. Se você digitar um número no campo de texto e clicar no botão do Stage (Palco). 2. if (isNaN(myNum)) { trace("Please enter a number"). A mensagem dependerá do número digitado no campo de texto. 20). myTxt. submit_mc. 0). 0. return. Selecione File (Arquivo) > New (Novo) e crie um novo documento do Flash.

0).0 Language Reference (Referência à Linguagem ActionScript 2. Se o número for menor que 10 ou maior que 20. Sobre operadores 207 . } if ((myNum > 10) && (myNum < 20)) { trace("Your number is between 10 and 20"). return. Sobre operadores de deslocamento bit a bit Os operadores de deslocamento bit a bit utilizam dois operandos e deslocam os bits do primeiro operando até o ponto especificado pelo segundo operando. Todos os operadores desta tabela possuem a mesma precedência: Operador << >> >>> Operação executada Deslocamento para esquerda bit a bit Deslocamento para direita bit a bit Deslocamento para direita bit a bit (sem sinal) Para obter informações sobre como usar operadores bit a bit. observe como o operador AND lógico é utilizado para verificar se um número está entre 10 e 20. } }. uma mensagem alternativa será exibida no painel Output. if (isNaN(myNum)) { trace("Please enter a number"). De acordo com o resultado.onRelease = function():Void { var myNum:Number = Number(myTxt.Ao usar operandos. No trecho a seguir.text). Para obter informações específicas sobre cada operador bit a bit. consulte “Usando operadores bit a bit” na página 208. submit_mc. consulta a entrada correspondente em ActionScript 2. } else { trace("Your number is NOT between 10 and 20"). principalmente quando você estiver utilizando condições complexas. é necessário ter cuidado com a ordem. uma mensagem apropriada será exibida.

Para usar o operador OR bit a bit: 1. consulte “Sobre operadores de deslocamento bit a bit” na página 207. Selecione File (Arquivo) > New (New) e crie um novo documento do Flash. mas todas as operações bit a bit avaliam cada dígito binário (bit) do número inteiro de 32 bits individualmente para computar um novo valor. Por exemplo.0 Language Reference (Referência à linguagem ActionScript 2. consulte “Sobre operadores lógicos bit a bit” na página 208. você poderia usar operadores bit a bit. O exemplo a seguir mostra como usar o operador OR bit a bit com o método Array. Para obter mais informações sobre cada operador bit a bit. Usar os operadores bit a bit no Flash não é muito comum.sort() para especificar opções de classificação. mas pode ser útil em algumas circunstâncias. consulte “Usando operadores bit a bit” na página 208. 208 Fundamentos da sintaxe e da linguagem . talvez seja necessário criar uma matriz de permissões para um projeto do Flash. Para obter uma lista de operadores lógicos bit a bit. Usando operadores bit a bit Os operadores bit a bit manipulam internamente números de ponto flutuante para transformá-los em números inteiros de 32 bits.Sobre operadores lógicos bit a bit Os operadores lógicos bit a bit utilizam dois operandos e executam operações lógicas em nível de bit.0). Para obter uma lista de operadores de deslocamento bit a bit. Estes operadores não têm a mesma precedência e são listados na tabela a seguir por ordem decrescente de precedência: Operador & ^ | Operação executada AND bit a bit XOR bit a bit OR bit a bit Para obter informações sobre como usar operadores bit a bit. mas sem criar variáveis separadas para cada tipo de permissão. consulte a entrada correspondente em ActionScript 2. Nesse caso. A operação exata realizada depende do operador.

Dan. A pesquisa não faz distinção entre maiúsculas e minúsculas.doug.Hank.doug.DESCENDING). na verdade. Para exibir o número 3 como valor binário. "tom"). onde o Z teria precedência sobre o a.CASEINSENSITIVE equivale ao valor numérico 1.NUMERIC (binary = 10000) Existem três maneiras diferentes de definir as opções de classificação de um array: my_array.doug. // Bob. Sobre operadores 209 .sort() e especifica duas opções de classificação usando os valores constantes Array. // tom.doug.Dan. trace(myArr).RETURNINDEXEDARRAY (binary = 1000) 16 ou Array.CASEINSENSITIVE | Array. O valor de constante Array.bill.CASEINSENSITIVE | Array.bill. O valor de constante Array.CASEINSENSITIVE e Array.tom tom.DECENDING tem um valor numérico 2 ou um valor binário 10. trace(myArr). O número 4 representado em binário é 100. O seguinte texto será exibido no painel Output (Saída): Bob. Digite o seguinte ActionScript no painel Actions (Ações): var myArr:Array = new Array("Bob".DESCENDING).tom myArr. // numbers my_array.CASEINSENSITIVE (binary = 1) 2 ou Array. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ActionScript. diferente da pesquisa que faz distinção entre maiúsculas e minúsculas.DESCENDING. ou seja. Trabalhar com números binários pode ser confuso.Hank. Depois. o número 5 em binário é 101.sort(3).Hank.Dan. // constants my_array. "doug". 3. O valor binário tem apenas dois valores possíveis. a e A são considerados idênticos. dígitos bit a bit (binários ou de base 2). "bill". O resultado do método de classificação faz com que os itens no array sejam classificados na ordem inversa (de 'z' a 'a'). É por isso que o valor 1 é representado como 10. "Hank". "Dan".2.UNIQUESORT (binary = 100) 8 ou Array.DESCENDING (binary = 10) 4 ou Array. e assim sucessivamente. os valores numéricos das opções de classificação são.Dan. // adding the numbers Embora isso provavelmente não seja óbvio.Bob. 1 ou 0.Hank.sort(Array.sort(Array. você chama o método Array. que também é o valor binário 1.sort(1 | 2).Bob. ele seria 11 (1+10).bill Existem cinco opções disponíveis no método de classificação: ■ ■ ■ ■ ■ 1 ou Array.bill A primeira linha define um array de nomes aleatórios e os rastreia no painel Output (Saída).

use o operador de adição para concatenar os pontos do usuário em uma seqüência de caracteres exibida no painel Output (Saída).202. Ele é um método abreviado de aplicação da instrução condicional if.198 trace(scores.DESCENDING e Array. o método Math. // 100.sort()). Usando operadores em um documento No exemplo a seguir.202.1.20.NUMERIC juntas.202.NUMERIC|Array. // 10010 (binary -.O ActionScript a seguir demonstra como classificar um array de valores numéricos em ordem decrescente usando o operador AND bit a bit para adicionar as constantes Array. os operadores de divisão e multiplicação também são utilizados para calcular os pontos de um usuário com base no número de respostas corretas dividido pelo número total de perguntas.DESCENDING.40. Após modificar um pouco o ActionScript.else: Operador ?: Operação executada Condicional Para obter informações sobre como usar o operador condicional e um exemplo.1. No exemplo a seguir..100.base2) trace(scores. Em seguida. 210 Fundamentos da sintaxe e da linguagem .100. var scores:Array = new Array(100.round() é utilizado para arredondar os cálculos para um número arbitrário de casas decimais.20.40. // 18 (base 10) trace(flags. consulte “Sobre o operador condicional e a sintaxe alternativa” na página 160.1 Sobre o operador condicional O operador condicional é ternário. // 1. trace(flags).40 var flags:Number = Array.40.198. // 202.toString(2)). você pode fazer com que o Flash arredonde os números para um determinado número de casas decimais. o que significa que ele utiliza três operandos. Os pontos do usuário podem ser multiplicados por um número e exibidos para que se obtenha pontos entre 0% e 100%.198).sort(flags)).198. trace(scores).20. Esse método arredonda o valor do parâmetro x para cima ou para baixo até chegar ao inteiro mais próximo e retorna esse valor.20.

antes de chamar Math. Esse procedimento retornará uma pontuação mais precisa. for a score of 84.Para usar os operadores no ActionScript: 1. compare as respostas com um gabarito e calcule os pontos dos usuários. Quando você chamar Math. Tente alterar a variável correctAnswers para 3 e selecione Control > Test Movie para testar o arquivo SWF novamente.round(correctAnswers / totalQuestions * 100)."). trace("You got " + correctAnswers + " out of " + totalQuestions + " answers correct. os pontos serão arredondados para o número inteiro mais próximo (85) e exibidos no painel Output. Depois que os usuários terminarem de responder cada pergunta e clicar no botão Submit (Enviar).round() e dividi-lo por 100. Se você multiplicar o número por 100. Caso esteja desenvolvendo um aplicativo de teste. for a score of " + score + "%. talvez seja necessário criar uma série de perguntas verdadeiro/falso ou de múltipla escolha usando os componentes RadioButton e Label. Sobre operadores 211 .62%.round(correctAnswers / totalQuestions * 100 * 100) / 100. Crie um novo documento do Flash. 2. 3. faça com que o Flash arredonde o número para 2 casas decimais.round() nesse exemplo. O painel Output exibirá o seguinte texto: You got 11 out of 13 answers correct. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: var correctAnswers:Number = 11. Selecione Control (Controlar) > Test Movie (Testar filme). var totalQuestions:Number = 13. 4. //round to the nearest integer //var score:Number = Math. //round to two decimal places var score:Number = Math.

212 Fundamentos da sintaxe e da linguagem .

. . . . . . .235 6 Sobre funções e métodos Os métodos e as funções são blocos de código ActionScript que podem ser reutilizados em qualquer lugar de um arquivo SWF. Você pode criar suas funções no arquivo FLA ou em um arquivo externo do ActionScript e chamá-las em qualquer local de seus documentos. . Há diversos tipos de funções com os quais você irá trabalhar. ela poderá ser chamada de qualquer Timeline. . . Você também aprenderá a criar funções em arquivos de classe do ActionScript. . . . . . Você pode usar funções no seu código para adicionar interatividade. . . . . Esse capítulo aborda os tipos de função que você pode criar nos aplicativos Flash. . . . . . . . . . . . assim como exercícios nos quais você poderá criar e usar funções e métodos no Flash. . . 213 . . .CAPÍTULO 6 Funções e métodos Entender funções é importante quando se está escrevendo ActionScript. 213 Noções básicas sobre métodos . . . . No Capítulo 7. Você pode definir funções para executar uma série de instruções sobre valores passados. Nesse capítulo. . . . . . . Depois que uma função for definida. . você aprenderá sobre funções e métodos: como usá-los nos aplicativos quando se usa classes internas e como criá-los. . . . . . . . . . . . incluindo aquela de um arquivo SWF carregado. animações e outros efeitos aos aplicativos. As funções também podem retornar valores. . . . . você criará classes personalizadas para as quais escreverá funções regularmente. . . . . . . . . “Classes. consulte os tópicos a seguir: Sobre funções e métodos . . . Para obter informações sobre quais são essas funções e esses métodos. . . . . . . . .”. . . . criando classes e usando métodos. . . . . . . Métodos são meramente funções que estão localizadas dentro de uma definição de classe do ActionScript. . . .

a definição dessa função deve estar em um quadro que já tenha sido reproduzido. saída e objetivo. Como alternativa. Se algum parâmetro obrigatório não for passado. Para obter mais informações sobre como passar parâmetros. var yourAge:String = "65". I like " + favSoftware + ". A sintaxe básica de uma função com nome simples que é criada no exemplo anterior passando um parâmetro. você poderia usar o seguinte código: var yourName:String = "Ester". } traceMe(favSoftware.yourAge). Cada função tem suas próprias características e algumas delas exigem que você passe determinados tipos ou números de valores. é: function traceMe(yourMessage:String) { trace(yourMessage). Se ela tiver comentários cuidadosamente inseridos a respeito de sua entrada. consulte “Criando funções com nome” na página 219. se você quiser passar diversos parâmetros. Uma função bem escrita pode ser considerada uma “caixa-preta”. Se você passar mais parâmetros do que o necessário para a função. yourMessage. A sintaxe básica para uma função com nome simples é: function traceMe() { trace("sua mensagem"). ela ignorará os valores extras. yourAge:String) { trace("I'm " + yourName + "."). } traceMe(). function traceMe(favSoftware:String. Funções e métodos . N OT A 214 Para chamar uma função. } traceMe("Como vai você?"). yourName:String. consulte “Passando parâmetros para uma função” na página 231. Uma função também pode retornar valores (consulte “Retornando valores de funções” na página 233). var favSoftware:String = "Flash".Se você passar valores como parâmetros para uma função. um usuário da função não precisará compreender exatamente como ela funciona internamente. o que poderá gerar erros durante a execução. a função atribuirá o tipo de dados undefined aos parâmetros vazios.yourName. esta poderá executar cálculos usando os valores fornecidos. and I'm " + yourAge + ". Para obter informações sobre a criação de funções com nome.

anônimas._speed = speed. Para ver um exemplo de comparação entre métodos e funções. tais como o seguinte. métodos de classe. Para obter mais informações sobre funções e métodos.Há diversos tipos de função que você pode criar. // construtor public function Person(speed:Number) { Person. consulte “Noções básicas sobre métodos” na página 235. consulte o Capítulo 7. incluindo funções internas. } Sobre funções e métodos 215 . Há diversos tipos de funções que você pode usar nos aplicativos. N OT A ■ Para obter informações sobre criação de código usando Script Assist. N OT A Para obter informações sobre criação de arquivos de classe. Você também pode criar funções em um arquivo de classe do ActionScript.numPeople. this. class Person { public static var numPeople:Number = 0. Essas funções são usadas como métodos nos scripts. } // métodos estáticos public static function getPeople():Number { return Person. consulte “Sobre tipos de métodos e funções” na página 215. a classe Person exibe um método construtor. com nome e definidas pelo usuário. consulte os tópicos a seguir: “Sobre tipos de métodos e funções” na página 215 Sobre tipos de métodos e funções As funções pertencentes a uma classe são denominadas de métodos dessa classe. assim como links para seções sobre criação de tipos específicos de função. As seções a seguir contêm informações sobre como definir essas funções. construtoras e literais de função. “Classes”. na página 239. // membros de instância private var _speed:Number. “Criando um evento startDrag/stopDrag com o Script Assist” na página 372 e o tutorial ActionScript:Use Script Assist Mode (que começa com “Open the starter document” on page 211). Para obter mais informações sobre criação de funções. consulte “Criando ActionScript com o Script Assist” na página 368. de retorno.numPeople++. métodos de instância e métodos de acesso (getters e setters): Os comentários no código de exemplo mostram em que parte do código esses métodos ocorrem. No exemplo a seguir.

} public function rest():Void { this.myMethod = aFunction. isso significa que eles são funções criadas na classe interna (semelhantes ao código de exemplo anterior). Quando são usados no código métodos dessas classes. 216 Funções e métodos . } } Para obter uma demonstração completa de como criar métodos como os do código de exemplo anterior. Quando o arquivo SWF é testado com essa única linha de código. Para adicionar uma chamada de função de nível superior ao código. Exemplos de funções que são internas ao nível superior da linguagem ActionScript são trace() e setInterval(). } public function run():Void { this. digite o seguinte: trace("minha mensagem"). MovieClip e Math são exemplos de classes de nível superior que podem ser usadas em um aplicativo. na página 239.// métodos de instância public function walk(speed:Number):Void { this._speed = speed. significando que você pode chamá-las sem um construtor. Os métodos usados no código devem pertencer a uma classe que seja interna à linguagem ActionScript. “Classes”. Opcionalmente._speed = 0. a função de nível superior trace() é chamada e o texto é exibido no painel Output (Saída). Quando desejar atribuir um método a uma propriedade. lembre-se de que é necessário omitir os parênteses após o nome do método porque você está passando uma referência à função: my_mc. você poderia usar métodos de uma classe personalizada que tivesse criado. } // getters/setters (métodos de acesso) public function get speed():Number { return this. consulte o Capítulo 7. As funções não pertencentes a uma classe são chamadas de funções de nível superior (às vezes chamadas de pré-definidas ou funções internas). basta adicionar uma única linha de código no painel Script do painel Actions (Ações). Por exemplo._speed *= 2._speed.

consulte “Usando funções no Flash” na página 227. Para obter mais informações sobre cada tipo de função. Sobre funções internas e de nível superior Como já foi discutido em “Sobre funções e métodos” na página 213. consulte as seguintes seções: “Sobre funções internas e de nível superior” na página 217 “Criando funções com nome” na página 219 “Criando funções anônimas e de retorno de chamada” na página 220 “Sobre literais de função” na página 222 “Especificando e chamando funções definidas pelo usuário” na página 225 “Sobre funções construtoras” na página 223 Para obter informações sobre a criação e o uso de funções e métodos. Também há várias outras maneiras de se definir funções. N OT A Para obter informações sobre criação de código usando Script Assist. consulte “Sobre funções internas e de nível superior” na página 217. Elas podem ser funções de nível superior. uma função é um bloco de código ActionScript que pode ser reutilizado em qualquer lugar de um arquivo SWF. Você pode usar funções que são internas à linguagem ActionScript. Para obter informações sobre o uso de métodos. que podem ser usadas como métodos no aplicativo. como Math ou MovieClip. Uma função também pode retornar valores. “Criando um evento startDrag/stopDrag com o Script Assist” na página 372 e o tutorial ActionScript:Use Script Assist Mode (que começa com “Open the starter document” on page 211). NO T A ■ ■ ■ ■ ■ ■ Para obter mais informações sobre funções de nível superior. você precisará incluir os parênteses após o nome do método: my_mc. a função operará com esses valores. ou estar contidas em uma classe interna. Para obter informações sobre o uso de funções.Entretanto. consulte as seguintes seções relacionadas. Se você passar valores como parâmetros para uma função. como descrito em “Sobre tipos de métodos e funções” na página 215. para chamar um método em seu código. consulte “Criando ActionScript com o Script Assist” na página 368. Sobre funções e métodos 217 . consulte “Noções básicas sobre métodos” na página 235.myMethod().

Algumas funções internas exigem que se passe determinados valores. Se algum parâmetro obrigatório não for passado. você pode usar getTimer(). Referência da linguagem ActionScript). Dois outros exemplos de funções de nível superior são setInterval() e getTimer(). Ao testar o arquivo SWF. basta usar o nome da função e passar os parâmetros necessários: (Para obter informações sobre parâmetros necessários. As funções que não pertencem a um objeto são denominadas funções de nível superior e são encontradas em subcategorias da categoria Global Functions (Funções globais) do painel Actions (Ações). Para chamar uma função. As funções de nível superior são fáceis de usar. adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): trace("minha mensagem"). Esse código cria um temporizador simples usando getTimer() e usa as funções de nível superior setInterval() e trace() para exibir o número de milissegundos desde que o arquivo SWF começou a ser reproduzido no Flash Player. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): function myTimer():Void { trace(getTimer()). os valores extras serão ignorados. O próximo exemplo mostra como usar essas duas funções em conjunto. As funções que pertencem a um objeto são denominadas métodos.0 Language Reference (Referência da linguagem ActionScript). para obter o número de milissegundos de reprodução do arquivo SWF. Por exemplo. Funções e métodos . Por exemplo. consulte “Especificando e chamando funções definidas pelo usuário” na página 225. Chamar uma função de nível superior é como chamar uma função definida pelo usuário. Se forem passados mais parâmetros do que o exigido pela função. consulte a entrada correspondente em ActionScript 2. funções internas são utilizadas para realizar determinadas tarefas e acessar informações. consulte a entrada para a função em ActionScript 2. } var intervalID:Number = setInterval(myTimer.0 Language Reference. NO T A 218 Para chamar uma função. 100). Para obter mais informações.No ActionScript. o que poderá gerar erros durante a execução. Para obter informações sobre cada função. o tipo de dados undefined será atribuído aos parâmetros vazios. minha mensagem é exibida no painel Output (Saída). a definição dessa função deve estar em um quadro que já tenha sido reproduzido. Também é possível obter o número da versão do Flash Player que hospeda o arquivo usando getVersion().

} var my_sound:Sound = new Sound(). Os parâmetros são às vezes chamados argumentos. Importe um arquivo de som curto para a biblioteca selecionando File (Arquivo) > Import (Importar) > Import to Library (Importar para a biblioteca) e selecionando um arquivo de som. Para usar uma função com nome: 1. 3.Criando funções com nome Uma função com nome é um tipo de função que você geralmente cria no código ActionScript para executar todos os tipos de ação. Todos os nomes de funções em um documento devem ser exclusivos. O comentário // bloco de função é um espaço reservado onde o código referente ao bloco de função deve ser inserido. Digite mySoundID na caixa de texto Identifier (Identificador).attachSound("mySoundID"). consulte “Passando parâmetros para uma função” na página 231. Selecione o Frame 1 da Timeline e adicione o seguinte código ao painel Actions: function myMessage() { trace("mySoundID completed"). my_sound. 4. Sobre funções e métodos 219 .fla. contanto que a função tenha sido definida no quadro atual ou anterior. Você pode colocar o código que deseja executar aqui. Crie um novo documento chamado namedFunc. Clique com o botão direito do mouse no arquivo de som e selecione Linkage (Vinculação). paramêtros contém um ou mais parâmetros que são passados para a função. my_sound.start(). Para obter mais informações sobre parâmetros. se uma função for definida no Frame 2 de uma timeline. O formato padrão das funções com nome é o seguinte: function functionName(parameters) { // bloco de função } Esse código contém as seguintes partes: ■ nomeFunção é o nome exclusivo da função. 5.onSoundComplete = myMessage. você não poderá acessar essa função no Frame 1 da timeline. o que significa que você pode fazer referência à função em qualquer parte do código. Essa parte contém as instruções que executam várias ações. 2. as funções com nome são compiladas primeiro. Quando você cria um arquivo SWF. // bloco de função ■ ■ contém todo o código ActionScript executado pela função. my_sound. Por exemplo.

Use a instrução function para criar sua própria função no ActionScript. o nome da função corresponde à classe). 3. Ao criar código ActionScript. O próximo exemplo mostra como criar uma função anônima. //posteriormente no código você pode adicionar myWidth(). 220 Funções e métodos . você cria muitas funções anônimas. na página 239 para obter exemplos e informações sobre a criação de funções em classes. ainda será necessário incluir os colchetes. Para obter mais informações sobre funções construtoras. Para criar uma função anônima: 1. As funções anônimas são normalmente usadas quando se trabalha com manipuladores de eventos. A largura do clipe de filme é exibida no painel Output (Saída).Nesse código. entretanto. Lembre-se de que os parâmetros são opcionais. Abra o inspetor Properties e digite my_mc na caixa de texto Instance Name (Nome de instância). você faz referência à função anônima ao criá-la. Selecione Control > Test Movie. 4. que pode ser usada posteriormente no script para chamar uma função trace()._width). Portanto. incluindo arquivos de classes. “Classes”. O conteúdo entre as chaves ({}) é chamado bloco de função. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte código no painel Actions (Ações): var myWidth = function () { trace(my_mc. você pode armazenar um literal de função em uma variável. 2. é possível fazer referência à função posteriormente no código. Também é possível criar funções construtoras em arquivos de classes usando esse formato (entretanto. enquanto que uma função anônima é uma função sem nome que faz referência a si mesma. você cria uma função com nome chamada myMessage. }. Você pode criar funções na timeline principal ou em arquivos externos do ActionScript. Criando funções anônimas e de retorno de chamada Uma função com nome é uma função a que você se refere no script antes ou depois de definila. Para criar uma função anônima. Consulte também o Capítulo 7. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. Crie um clipe de filme no Stage (Palco) e selecione o clipe. 6. consulte “Criando a função construtora” na página 283. se não houver parâmetros.

Você pode usar funções com nome em vez de funções anônimas. isso significa que ela é referenciada antes de existir em uma Timeline. da mesma maneira que pode ser feito com funções com nome.Também é possível criar uma função em um objeto. my_xml. como as seguintes: //com um clipe de filme chamado my_mc que estende uma timeline stop(). Digite o seguinte código no Frame 1 (Quadro 1) da Timeline (Linha de tempo): var my_xml:XML = new XML(). como. Depois que os dados são carregados no arquivo. Também é possível fazer referência antecipada a uma função com nome. consulte o Capítulo 10. As funções de retorno de chamada podem ser usadas para enviar um sinal indicando que os dados foram carregados no documento. Você usa XML. após um carregamento (onLoad()) ou uma animação (onMotionFinished()). Para obter mais informações sobre funções de retorno de chamada. Você pode associar uma função anônima a um determinado evento para criar uma função de retorno de chamada.load() e a função de retorno de chamada. my_xml. que usa setInterval() para chamar a função anônima aproximadamente a cada 1000 milissegundos (1 segundo): setInterval(function() {trace("intervalo"). às vezes é necessário criar um código ActionScript para manipular os dados carregados em um arquivo SWF a partir do servidor.helpexamples. é possível acessá-los nesse local. var myWidth = function () { Sobre funções e métodos 221 . conforme mostrado no código a seguir. como mostra o exemplo a seguir. por exemplo. Uma função chama uma função de retorno de chamada quando ocorre um evento específico. suponha que você tenha funções anônimas no Frame 5 do arquivo FLA.xml"). Por exemplo.onLoad = function(success:Boolean):Void { trace(success). Na função de retorno de chamada a seguir. É importante usar o ActionScript para verificar se os dados foram totalmente carregados. No trecho de código anterior. tais como funções de retorno de chamada). Você também pode usar funções anônimas com a função setInterval(). Por exemplo. 1000). Funções com nome são geralmente mais fáceis de ler e entender (exceto em algumas circunstâncias. }. uma função anônima é associada ao evento onLoad(). Você não pode referenciar uma função anônima em nenhuma parte do código (a menos que atribua a função a uma variável). “Manipulando eventos”.com/crossdomain. na qual você carrega um documento XML remoto. observe que o manipulador de eventos onLoad() usa uma função anônima para manipular o evento onLoad().load("http://www. na página 347.}. como uma instância LoadVars ou XML.

Os literais são úteis quando é necessário usar uma função temporariamente ou usar uma função no código no lugar de uma expressão._width). consulte “Criando ActionScript com o Script Assist” na página 368. Ao definir uma função com nome. consulte “Criando funções com nome” na página 219. }. Se você colocar o código a seguir no Frame 1. “Criando um evento startDrag/stopDrag com o Script Assist” na página 372 e o tutorial ActionScript:Use Script Assist Mode (que começa com “Open the starter document” on page 211). N OT A 222 N OT A Você também pode colocar myWidth() em qualquer quadro após o quadro que contém a função myWidth. var myWidth:Function = function () { trace(my_mc. não funciona: myWidth(). Para obter informações sobre criação de código usando Script Assist. }. este código funciona corretamente: var myWidth:Function = function () { trace(my_mc._width). No entanto. var myWidth:Function = function () { trace("foo"). Sobre literais de função Um literal de função é uma função sem nome declarada em uma expressão em vez de em uma instrução. embora o código equivalente com uma função anônima não funcione: // o código a seguir funciona porque você está chamando uma função com nome: myWidth(). myWidth(). chamá-la em um script de quadro funciona. function myWidth() { trace("foo")._width). ele não referenciará a função: myWidth(). }. o código a seguir. } // o código a seguir não funciona porque você está chamando uma função anônima: myWidth(). colocado em qualquer quadro. Esta é a sintaxe de um literal de função: Funções e métodos . Para obter mais informações. }.trace(my_mc. Da mesma maneira.

funções construtoras sobrecarregadas não são permitidas no ActionScript 2.). você poderia criar uma nova instância usando: var myPerson:Person = new Person(). this._speed = speed. ou seja. A função construtora tem o mesmo nome da classe que a contém. consulte “Criando funções anônimas e de retorno de chamada” na página 220. setInterval(function() {trace(yourName). Sobre funções construtoras Um construtor de classe é uma função especial chamada automaticamente quando você cria uma instância de uma classe usando a palavra-chave new (por exemplo. Você pode armazenar um literal de função em uma variável para acessá-lo posteriormente em seu código.}. Sobre funções e métodos 223 . Uma classe pode conter apenas uma função construtora. uma classe personalizada Person criada conteria a seguinte função construtora: public function Person(speed:Number) { Person. Para fazer isso. use uma função anônima. N OT A NO T A Quando você redefine um literal de função. o compilador automaticamente criará uma função construtora vazia. Para obter mais informações sobre a criação de funções construtoras em arquivos de classe. se você não criar uma função cujo nome corresponda ao da classe. consulte “Criando a função construtora” na página 283. Por exemplo. var my_xml:XML = new XML(). etc) { // instruções }. } Em seguida.function (param1. 200). Para obter mais informações. a definição da nova função substitui a antiga. Além disso. uma função construtora não pode ter um tipo de retorno.numPeople++. param2. o código a seguir usa um literal de função como expressão: var yourName:String = "Ester".0. Se nenhuma função construtora for explicitamente declarada. Por exemplo.

consulte “Sobre variáveis e escopo” na página 101.PI * radius * radius). O exemplo a seguir é uma função denominada areaOfCircle com o parâmetro radius: function areaOfCircle(radius:Number):Number { return (Math. Para definir uma função global. Também há várias outras maneiras de se definir funções. dos parâmetros a serem passados para a função e das instruções do ActionScript que indicam o que ela faz. Para definir uma função de timeline. preceda o nome da função com o identificador _global. consulte as seguintes seções: ■ ■ ■ ■ ■ ■ “Sobre funções internas e de nível superior” na página 217 “Criando funções com nome” na página 219 “Criando funções anônimas e de retorno de chamada” na página 220 “Sobre literais de função” na página 222 “Sobre funções construtoras” na página 223 “Especificando e chamando funções definidas pelo usuário” na página 225 224 Funções e métodos . você pode usar o identificador _global se desejar declarar uma função global disponível para todas as timelines e escopos sem usar um caminho de destino. use a instrução function seguida do nome da função. e você deve usar um caminho de destino para chamá-las. } trace (areaOfCircle(8)). como no seguinte exemplo: _global. você explorou os diversos tipos de funções disponíveis no Flash. Para obter mais informações sobre cada tipo de função. Assim como as variáveis. Como ocorre com as variáveis. }.Definindo funções globais e de timeline Em “Sobre funções e métodos” na página 213.myFunction = function(myNum:Number):Number { return (myNum * 2) + 3. as funções são anexadas à Timeline do clipe de filme que as define. trace(myFunction(5)) // 13 Para obter informações sobre _global e escopo.

functionsClip. inclusive daquela de um arquivo SWF carregado.initialize(). Por exemplo. O exemplo a seguir usa um caminho relativo para chamar a função list() definida no clipe de filme functionsClip: this. Para obter mais informações sobre parâmetros. se for preciso. Para obter informações sobre a criação de funções com nome. Há vários tipos de sintaxe para as funções definidas pelo usuário. a seguinte função com nome helloWorld() é definida pelo usuário: function helloWorld() { trace("Olá mundo!"). Você também pode definir suas próprias funções com nome. consulte “Atribuindo nomes a funções” na página 226 e. Especificando e chamando funções definidas pelo usuário As funções definidas pelo usuário são aquelas criadas para serem usadas em aplicativos. O código a seguir usa um caminho para chamar a função initialize(). “Classes”. na página 239 N OT A Para obter informações sobre criação de código usando Script Assist. Você pode usar um caminho de destino para chamar uma função em qualquer timeline a partir de qualquer outra timeline. para obter informações sobre o uso de funções. que foi definida na timeline atual e não requer parâmetro algum: this. Sobre funções e métodos 225 . As seções anteriores abordam a criação de funções com nome. “Criando um evento startDrag/stopDrag com o Script Assist” na página 372 e o tutorial ActionScript:Use Script Assist Mode (que começa com “Open the starter document” on page 211). e passe os parâmetros necessários entre parênteses. em contraposição às funções de classes internas que executam funções predefinidas.Para obter informações sobre a atribuição de nomes a funções.list(6). consulte “Atribuindo nomes a funções” na página 226. consulte “Passando parâmetros para uma função” na página 231. digite o caminho de destino para o nome da função. Para obter informações sobre a atribuição de nomes a funções. consulte “Usando funções no Flash” na página 227 e o Capítulo 7. consulte “Usando funções no Flash” na página 227. Para obter um exemplo detalhado do uso de funções em um arquivo de classe externo. }._parent. sem nome e de retorno de chamada. Você mesmo atribui um nome às funções e adiciona instruções ao bloco de função. consulte “Criando ActionScript com o Script Assist” na página 368. consulte “Criando funções com nome” na página 219. Para chamar uma função.

Por exemplo. No contexto da programação orientada a objeto. world! O código anterior cria uma função definida pelo usuário chamada traceHello() que utiliza um argumento. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. As classes contêm várias funções definidas pelo usuário. Crie um novo documento do Flash e salve-o como udf. consulte “Criando funções com nome” na página 219. e apresenta uma mensagem de saudação. se a função estiver retornando o nome de uma música. Consulte também as seguintes seções do Capítulo 7. “Classes”: “Usando métodos e propriedades de um arquivo de classe” na página 260. Para obter mais informações. } traceHello("world"). privados e estáticos” na página 262 e “Sobre membros de classe” na página 265. Para chamar uma função definida pelo usuário. " + name + "!"). Para obter mais informações sobre funções com nome. consulte “Atribuindo nomes a métodos” na página 237. 226 Funções e métodos . Atribuindo nomes a funções Os nomes de funções devem iniciar em letra minúscula e descrever o valor retornado por elas. “Sobre propriedades (membros) e métodos públicos. a sobrecarga refere-se à capacidade de fazer com que as funções se comportem de maneira diferente. Para criar e chamar uma função simples definida pelo usuário: 1. Assim como as variáveis. você deverá atribuir à função o nome getCurrentSong(). se for o caso.fla. você não pode usar caracteres especiais e o nome do método não pode começar com número.O exemplo a seguir mostra como usar uma função definida pelo usuário em um arquivo FLA. // hello. 3. 2. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: function traceHello(name:String):Void { trace("hello. consulte “Convenções de atribuição de nome” na página 769. Para obter informações sobre a criação de funções em arquivos de classes. você pode chamar traceHello a partir da mesma timeline que a definição da função e passar um único valor de seqüência de caracteres. Para obter informações sobre a atribuição de nomes a métodos. dependendo dos tipos de dados que são passados para elas. consulte “Usando funções no Flash” na página 227. name. Estabeleça um padrão para agrupar funções semelhantes (funções relacionadas entre si com base na funcionalidade) porque o ActionScript não permite sobrecarga.

é possível usar os mesmos blocos de código para finalidades ligeiramente diferentes em um arquivo SWF. também pode criar o código ActionScript residente em um componente baseado em código. Sobre funções e métodos 227 . helloWorld(). o fluxo de trabalho para componentes baseados em código disponíveis no Flash (Window . 3. é necessário chamar a função helloWorld(). como. distribuir ou reutilizar facilmente blocos de código. por exemplo. consulte “Exemplo: Criando classes personalizadas” na página 278. Crie um novo documento do Flash e salve-o como basicFunction. tente reutilizar os blocos de código sempre que possível. você não verá a instrução trace no painel Output (Saída). Para obter informações e instruções detalhadas sobre como criar funções para um arquivo de classe. na página 239. Uma das maneiras de reutilizar o código é chamando uma função várias vezes. Usuários podem instalar o componente. nada acontecerá.fla. 2. Por exemplo.Usando funções no Flash Essa seção mostra como usar funções em um aplicativo. arrastá-lo para o Stage e usar o código armazenado no arquivo.Janela> Common Libraries Bibliotecas comuns > Classes). Para criar e chamar uma função em um arquivo FLA: 1. “Classes”. reduzindo o tempo de desenvolvimento. enquanto outros colocam funções em um arquivo de classe para comparação. é possível compartilhar. Selecione Window > Actions (Ações) para abrir o painel Library (Biblioteca). As funções podem ser códigos genéricos. Para obter mais informações e exemplos sobre o uso de funções em um arquivo de classe . Você pode criar funções em um arquivo FLA ou em um arquivo de classe. }. Os exemplos a seguir mostram como criar funções na timeline e em um arquivo de classe. Para reduzir o volume de trabalho necessário. A reutilização do código permite criar aplicativos eficientes e minimiza o código ActionScript que precisa ser criado. Esse ActionScript define a função (com nome e definida pelo usuário) chamada Se você testar o arquivo SWF desta vez.consulte o Capítulo 7. Digite o seguinte código ActionScript no painel Script: function helloWorld(){ // as instruções entram aqui trace("Olá mundo!"). bem como o tamanho do arquivo SWF. Alguns dos exemplos de código a seguir usam o ActionScript que reside no arquivo FLA. DICA Empacotando o código em arquivos de classes ou em componentes baseados em código. Para ver essa instrução. O exemplo a seguir mostra como criar e chamar uma função em um arquivo FLA. em vez de criar um código diferente a cada vez.

PI * radius * radius). trace(myCircle(5)). na página 239. você pode usar a seguinte sintaxe ao criar funções: function myCircle(radius:Number):Number { return (Math. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo FLA. }.pow(radius. A principal delas é usar funções com nome e funções anônimas.PI * radius). consulte o Capítulo 7. Compare o código apresentado a seguir com o anterior. var myCircle:Function = function(radius:Number):Number { // insira o bloco de função aqui return (Math. O seguinte texto é exibido no painel Output: Olá mundo! Para obter informações sobre como passar valores (parâmetros) para uma função. como mostra este exemplo: class Circle { public function area(radius:Number):Number { return (Math. } trace(myCircle(5)). Por exemplo.0. 228 Funções e métodos .PI * Math. as funções anônimas são de mais difícil leitura. “Classes”. Digite a seguinte linha de código ActionScript após a função: helloWorld(). Há diversas maneiras de criar funções na Timeline principal.PI * radius * radius). } public function diameter(radius:Number):Number { return (radius * 2). consulte “Passando parâmetros para uma função” na página 231. Também é possível colocar funções em arquivos de classes ao usar o ActionScript 2. } } Para obter mais informações sobre a criação de funções em um arquivo de classe. 2)).4. Esse código chama a função helloWorld(). Em geral. 5. } public function perimeter(radius:Number):Number { return (2 * Math.

5. Também é possível duplicar as funções no novo aplicativo.NaN. 11). 5.pop()).NUMERIC | Array.length == 0) { return Number.random() * (max . 2. 5. 1. var max:Number = Number(num_array. max:Number):Number { if (min > max) { var temp:Number = min. Crie um novo documento do Flash e salve-o como classFunctions. pois ela permite a reutilização do código em diversos aplicativos. -3]).as.sort(Array. 3. Digite o seguinte ActionScript no painel Script: var randomMonth:Number = Utils. Selecione File (Arquivo) > Save (Salvar) para salvar o arquivo do ActionScript. você pode importar a classe existente em vez de reescrever o código desde o início.NUMERIC). 6. 34. Para criar funções em um arquivo de classe: 1. var max:Number = Utils. Selecione Window > Actions (Ações) para abrir o painel Library (Biblioteca).arrayMin([3. } num_array. min = max. } } 3. } public static function arrayMax(num_array:Array):Number { if (num_array. return min. Crie um novo documento do ActionScript e salve-o como Utils.min + 1)) + min).DESCENDING). 2.floor(Math. O exemplo a seguir também coloca funções em um arquivo de classe. você não precisa colocar funções em uma timeline. Para reutilizar as funções em outros aplicativos.fla no mesmo diretório que Utils. Digite o seguinte ActionScript no painel Script: class Utils { public static function randomRange(min:Number. max = temp. } return (Math.Como você pode ver no código de exemplo anterior. return max.pop()). 1. 1.0.as. var min:Number = Utils.arrayMax([3. 2. } num_array. 3. 4. 1.randomRange(0. Essa prática é recomendada quando você cria aplicativos grandes com o ActionScript 2. 34. } public static function arrayMin(num_array:Array):Number { if (num_array. -3]).length == 0) { return undefined.sort(Array. Sobre funções e métodos 229 . var min:Number = Number(num_array.

as variáveis locais são chamadas no escopo do corpo da função e deixam de existir quando a função é encerrada. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. O seguinte texto é exibido no painel Output: month: 7 min -3 max 34 NO TA Para obter informações sobre criação de código usando Script Assist. myName. 2. } traceMe(myFavSoftware. 230 Funções e métodos . // -3 trace("max: " + max). ela pode ocultar suas variáveis de todos os outros scripts no arquivo SWF. é recomendável usar comentários de script para documentar essas modificações. yourAge:String) { trace("I'm " + yourName + ". and I'm " + yourAge + ". // 34 7. Selecione Control (Controlar) > Test Movie (Testar filme) para testar os documentos. Usando variáveis em funções As variáveis locais são ferramentas valiosas para organizar códigos e facilitar sua compreensão. yourName:String. No entanto. function traceMe(yourFavSoftware:String."). trace("min: " + min). O Flash também trata todos os parâmetros passados para uma função como variáveis locais. NO TA Também é possível usar variáveis comuns em uma função. consulte “Criando ActionScript com o Script Assist” na página 368. 3. var myFavSoftware:String = "Flash". “Criando um evento startDrag/stopDrag com o Script Assist” na página 372 e o tutorial ActionScript:Use Script Assist Mode (que começa com “Open the starter document” on page 211). Quando uma função usa variáveis locais.fla. var myAge:String = "65". se essas variáveis forem modificadas. Crie um novo documento do Flash e salve-o como flashvariables. Para usar variáveis em funções: 1.trace("month: " + randomMonth). myAge). Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: var myName:String = "Ester". I like " + yourFavSoftware + ".

left. também chamados argumentos. os termos parâmetro e argumento são equivalentes. consulte “Passando parâmetros para uma função” na página 231. left:Number.Para obter mais informações sobre parâmetros. você deve sempre passar o número especificado de parâmetros. da seguinte maneira: myFunc("Isso é o que é mostrado"). o que poderá ser tão simples como mostrado a seguir: var birthday:Date = new Date(1901. o método startDrag() da classe MovieClip utiliza cinco parâmetros. você poderá passar um valor para a função ao chamá-la. trace(birthday). A função substitui os valores passados para os parâmetros na definição da função. bottom:Number):Void Sobre funções e métodos 231 . right:Number. A função a seguir chamada myFunc() utiliza o parâmetro someText: function myFunc(someText:String):Void { trace(someText). 3). o Flash define o valor como undefined. 2. opcionais. outras. depois. a menos que a sua função verifique se há valores indefinidos e defina valores padrão de acordo. Cada parâmetro é separado por uma vírgula. o Flash define os valores dos parâmetros ausentes como undefined. são os elementos com base nos quais as funções executam seu código. Esse valor é exibido no painel Output (Saída).) Você pode passar parâmetros (valores) para uma função e. se algum parâmetro estiver faltando. Use os valores contidos no bloco da função (instruções da função). na página 75. usar esses parâmetros para processar a função. Para obter mais informações sobre variáveis e dados. “Dados e tipos de dados”. (Neste manual. } Após passar o parâmetro. leia o Capítulo 4. o que pode gerar resultados inesperados no arquivo SWF. right e bottom: startDrag(lockCenter:Boolean. Algumas vezes. os parâmetros são obrigatórios e. lockCenter. Várias funções internas da linguagem ActionScript têm vários parâmetros. Se você não passar parâmetros suficientes para uma função. top:Number. top. Ao chamar a função. Passando parâmetros para uma função Os parâmetros. Por exemplo. Também é possível passar vários parâmetros para uma função. Poderão até mesmo existir alguns parâmetros obrigatórios e alguns opcionais na mesma função. Você passa parâmetros regularmente para funções ao criar o código ActionScript.

Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: function getArea(width:Number. 2.fla.fla. não é número) se você não passar parâmetros suficientes para a função addNumbers(). e o valor de retorno é salvo na instância area. trace(area). Em seguida. Para passar vários parâmetros para uma função: 1. height:Number):Number { return width * height.Para passar um parâmetro para uma função: 1. 3. A última linha de código chama a função traceMe() e passa o valor da seqüência de caracteres “Como vai você?”. No próximo exemplo. Digite o seguinte código após a função: var area:Number = getArea(10. Para passar um número variável de parâmetros para uma função: 1. que utiliza um único parâmetro. } A função getArea() utiliza dois parâmetros. Você verá 120 no painel Output. eles existem enquanto a função é chamada e deixam de existir quando ela é encerrada. Crie um novo documento do Flash e salve-o como functionTest. } traceMe("Como vai você?"). Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. width e height. 12). respectivamente. 4. 232 Funções e métodos .fla. 3. O próximo exemplo demonstra como passar vários parâmetros para uma função. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): function traceMe(yourMessage:String):Void { trace(yourMessage). 2. rastreie os valores salvos na instância area. Crie um novo documento do Flash e salve-o como functionTest2. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Os parâmetros da função getArea() assemelham-se aos valores de uma variável local. Crie um novo documento do Flash e salve-o como parameters. yourMessage. // 120 A chamada da função getArea() atribui os valores 10 e 12 à largura e à altura. o ActionScript retorna o valor NaN (Not a Number. As primeiras linhas de código criam uma função definida pelo usuário chamada traceMe().

2. // 11 Se você não passar parâmetros suficientes para a função addNumbers. // 11 trace(addNumbers(1. As regras a seguir regem o uso da instrução return em funções: ■ Se um tipo de retorno diferente de Void for especificado para uma função. } trace(addNumbers(1. Retornando valores de funções Use a instrução return para retornar valores de funções. será necessário incluir uma instrução return seguida do valor retornado na função.0 Language Reference (Referência da linguagem ActionScript). você poderá usar uma instrução return para sair de uma função antes de ela terminar. 6)). a função a seguir retorna o quadrado do parâmetro myNum e especifica que o valor retornado deve ser um tipo de dados Number: function sqr(myNum:Number):Number { return myNum * myNum. 3. a inclusão de uma instrução return será opcional. 8)). não precisará incluir uma instrução return. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. 4. A instrução return retorna os resultados imediatamente ao código de chamada. ■ ■ ■ Por exemplo. 11. O Flash exibe os seguintes valores: 11. A instrução return especifica o valor retornado por uma função. Independentemente do tipo de retorno. NaN. // NaN (Not a Number). o excesso de parâmetros será ignorado. se fizer isso. Se você passar parâmetros demais. Se você especificar o tipo de retorno Void. Se você não especificar um tipo de retorno. Para obter mais informações. 6. c:Number):Number { return (a + b + c). consulte %{return statement}% em ActionScript 2. b:Number. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: function addNumbers(a:Number. } Sobre funções e métodos 233 . no entanto. não insira nenhum valor após a instrução. 4)). 4. A instrução return retorna o resultado de uma avaliação como o valor da função na qual a expressão é executada. c igual a undefined trace(addNumbers(1. os argumentos ausentes recebem o valor padrão de undefined.

Você capturará o valor em uma variável. 4. Você verá 120 no painel Output. Para retornar um valor e capturá-lo em uma variável: 1. O próximo exemplo retorna o valor processado. height:Number):Number { return width * height. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: function getArea(width:Number. 12). você pode aninhar funções na timeline para executar tarefas específicas em uma seqüência de caracteres.fla. rastreie os valores salvos na instância area. function formatText():Void { changeString("Put chicken in microwave. Sobre funções aninhadas É possível chamar uma função a partir de outra. Isso permite aninhar funções para que executem tarefas específicas no Flash. } A função getArea() utiliza dois parâmetros. } 234 Funções e métodos . Crie um novo documento do Flash e salve-o como return. 2.Algumas funções executam uma série de tarefas sem retornar um valor. trace("Original string: " + myStr). a qual poderá ser usada em seu aplicativo. eles existem enquanto a função é chamada e deixam de existir quando ela é encerrada. Os parâmetros da função getArea() assemelham-se aos valores de uma variável local. Em seguida. trace("Changed string: " + myStr). Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. 3. trace(area). width e height."). } function changeString(newtext:String):Void { myStr = newtext. respectivamente. // 120 A chamada da função getArea() atribui os valores 10 e 12 à largura e à altura. e o valor de retorno é salvo na instância area.". Digite o seguinte código no Frame 1 (Quadro 1) da Timeline (Linha de tempo): var myStr:String = "My marshmallow chicken is yellow. Por exemplo. Digite o seguinte código após a função: var area:Number = getArea(10.

push({firstname:"George". 3. for (i = 0. var userArrayLenth:Number = userArr. userArr.firstname).// Chame a função.length. em seguida. depois. O array é preenchido com três objetos que contêm um nome e uma idade.sortOn("firstname"). ele é classificado com base no valor da propriedade firstname de cada objeto. formatText(). sortOn() é um método interno associado à classe Array (sortOn é uma função da classe Array pré-definida interna no Flash). age:43}). Por exemplo. userArr. var i:Number. i < userArrayLenth. Para obter informações sobre comparação de métodos e funções. Finalmente. classificará os nomes em ordem alfabética pela letra inicial. O código a seguir é exibido no painel Output: Dan George Socks Noções básicas sobre métodos 235 . Selecione Control (Controlar) > Test Movie (Testar filme) para testar a função aninhada. } O método sortOn() da classe Array é usado para criar um novo objeto Array chamado userArr.push({firstname:"Socks". consulte “Sobre funções e métodos” na página 213 e “Sobre tipos de métodos e funções” na página 215. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. Noções básicas sobre métodos Métodos são funções associadas a uma classe.push({firstname:"Dan". userArr. a qual pode ser uma classe personalizada ou classes internas que fazem parte da linguagem ActionScript. As funções formatText() e changeString() são aplicadas à seqüência de caracteres quando a função formatText() é chamada. i++) { trace(userArr[i]. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): var userArr:Array = new Array(). você executará uma repetição em cada item do array e exibirá o nome no painel Output (Saída). Para usar o método sortOn() em um arquivo FLA: 1.fla. userArr. Crie um novo documento do Flash e salve-o como methods. age:39}). age:2}). 2.

quando você cria o código a seguir no Frame 1 (Quadro 1) da Timeline. 3. Ao usar esse ActionScript. adicione o seguinte código: function eatCarrots():Void { trace("tastes good"). Crie um novo arquivo do ActionScript. N O TA Ao usar métodos de uma classe interna (além da classe personalizada criada anteriormente neste procedimento). se você criar a função eatCabbage() dentro de um arquivo de classe e. Para comparar métodos e funções: 1.as. o código ActionScript define uma função chamada eatCabbage(). 7.eatCabbage(). 6. você usará um método da Timeline. Após a linha anterior do ActionScript. então eatCabbage() será considerado um método. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. chamar eatCabbage() no arquivo FLA. Os próximos exemplos mostram como criar métodos dentro de uma classe.as. 5. Digite o seguinte código ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): var myHabits:EatingHabits = new EatingHabits(). function eatCabbage() { trace("tastes bad").as. você irá criar e chamar a função eatCarrots(). Salve as alterações feitas a EatingHabits. } eatCarrots(). você chamará o método eatCabbage() da classe EatingHabits. 4. myHabits. Crie um novo documento Flash.fla e salve o arquivo no mesmo diretório que EatingHabits. atribua o nome methodTest. selecione File (Arquivo) > Save As (Salvar como) e salve-o como EatingHabits. Digite o seguinte código ActionScript na janela Script : class EatingHabits { public function eatCabbage():Void { trace("tastes bad"). selecione File > Save As. } eatCabbage(). No entanto.Conforme demonstrado em “Criando funções com nome” na página 219. por exemplo. Nesse código. 236 Funções e métodos . } } 2.

Utilize verbos para a maioria dos métodos. pois eles executam uma operação em um objeto. Por exemplo. boogie(). você poderia nomear métodos das seguintes maneiras: sing(). sendo que a inicial deve estar em letra minúscula. singLoud(). consulte “Convenções de atribuição de nome” na página 769.Atribuindo nomes a métodos Você deve usar verbos para nomear métodos e palavras com letras maiúsculas e minúsculas para palavras concatenadas. danceFast(). você não pode usar caracteres especiais e o nome do método não pode começar com número. Assim como as variáveis. Noções básicas sobre métodos 237 . Para obter mais informações.

238 Funções e métodos .

7 239 . você aprenderá sobre a importância das classes no Flash. O capítulo inicia com uma explicação da terminologia fundamental e de sua relação com as classes e a OOP (Object-Oriented Programming. Você aprenderá sobre o caminho de classe do Flash e como uma classe deve ser documentada para que outras pessoas possam compreender facilmente o seu código e o objetivo geral da classe ao lerem ou usarem o código. Esta seção contém exemplos de códigos para familiarizá-lo com a criação de classes no ActionScript 2. na página 119 e o Capítulo 19.CAPÍTULO 7 Classes Este capítulo mostra como usar e criar classes com o ActionScript 2. e ler arquivos de classes de outros usuários. consulte o Capítulo 5. Se não estiver familiarizado com os scripts do ActionScript 2. Programação orientada a objeto).0. Neste capítulo. “Melhores práticas e convenções de codificação para ActionScript 2. Em seguida.0. na página 767. compreender e reconhecer as classes do Flash. Ao concluir este capítulo. você deverá ser capaz de criar um arquivo de classe típico.0. As classes são o componente básico do ActionScript 2. você examina um arquivo de classe de exemplo para compreender como cada seção do arquivo funciona e como a classe está organizada.0”. “Fundamentos da sintaxe e da linguagem”. O restante do capítulo mostra como criar suas próprias classes personalizadas e usá-las nos documentos do Flash.0 e desempenham um papel mais importante do que nas versões anteriores do Macromedia Flash.

. . . . . . . . . . . . . . . . em seguida. . . . . . . Uma classe define todas as propriedades que distinguem uma série de objetos. . Você pode criar esse arquivo na ferramenta de criação do Flash selecionando File (Arquivo) > New (Novo) e. . . . . . . . . . . . . . . . . . . . você poderá criar a classe Lettuce. . . . . . . . . . . . . . . . . . . . . . . Em seguida. . . . . . . . . . . . . . . . . 295 Compilando e exportando classes . . . . . que. . . . . . 299 Sobre classes de nível superior e internas . . . . para a classe User. . . . Para definir uma classe. . . . . . . . . . . . . . . . . . . . . O instanciamento produz uma instância da classe User e essa instância possui todas as propriedades da classe User. . . . . 312 Sobre a programação orientada a objeto e o Flash O ActionScript 2. você tem um instanciamento da classe. . . se precisar do tipo de dados Lettuce em seu aplicativo. .252 Exemplo: Criando classes personalizadas . . . . . . . .Para obter mais informações sobre como trabalhar com classes personalizadas e internas. . . . . . . . é um dos usuários individuais. as linguagens OOP baseiam-se no conceito de classes e instâncias. . . . . Isso definirá o objeto Lettuce. . . . . . . . . . . . . . ou seja. . . . . . um de seus membros. . . . . . ao qual você poderá atribuir métodos (wash()) e propriedades (leafy ou bugs). . . . . . . . . . . . 291 Atribuindo uma classe a símbolos no Flash . . . . . . 240 Criando arquivos de classes personalizados . . . . .0 é uma linguagem orientada a objeto. . . . . . . . . . consulte os seguintes tópicos: Sobre a programação orientada a objeto e o Flash . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Sobre como trabalhar com classes internas . . . . . As classes também são consideradas como tipos de dados ou modelos que podem ser criados para definir um novo tipo de objeto. . use a palavra-chave class em um arquivo de script externo. . . . . . . . . . . . . . . .296 Noções básicas sobre classes e escopo. . . 278 Exemplo: Usando arquivos de classes personalizados no Flash. . . . . . 249 Sobre como trabalhar com classes personalizadas em um aplicativo . 240 Classes . . . Por exemplo. . . . a classe User representa um grupo de usuários que utilizam o seu aplicativo. . . . . . . . . . . . . . . . . . selecionando ActionScript File (Arquivo do ActionScript). . Por exemplo. . . . . . . . . . Assim como o ActionScript. . .

como efeitos de filtro. consulte os seguintes tópicos: ■ ■ ■ ■ “As vantagens de usar classes” na página 241 “Sobre pacotes” na página 242 “Sobre valores e tipos de dados” na página 245 “Princípios da programação orientada a objeto” na página 246 As vantagens de usar classes Na OOP. resistentes e fáceis de manter. As classes personalizadas são criadas em um arquivo externo do ActionScript (AS). Você pode usar o ActionScript 2. da mesma maneira que uma planta arquitetônica descreve as características de uma construção. dimensionáveis. disponível no Flash Basic 8 e no Flash Professional 8. Ela também diminui o tempo de desenvolvimento fornecendo aos usuários assistência completa sobre codificação e informações de depuração. que contém propriedades personalizadas relativas ao nome e à idade de uma pessoa. Neste capítulo. Uma classe descreve as propriedades (dados) e o método (comportamentos) de um objeto. Para obter mais informações sobre como trabalhar com programação orientada a objeto. como Java. Date e assim por diante). este capítulo mostra como criar uma classe Person personalizada em “Sobre membros de classe” na página 265. e a API (Application Programming Interface. além de várias maneiras de carregar conteúdo externo (XML. dados binários brutos e muito mais). você aprenderá a criar classes e a usar classes personalizadas. interface e pacote) encontrados em outras linguagens de programação. a erros e eventos personalizados. estender as classes de nível superior e adicionar sua própria funcionalidade ou modificar a funcionalidade existente.O Flash Player 8. Depois. imagens. bem como para criar classes personalizadas e estender as classes de nível superior e internas do Flash. Boolean. ou “primitivos” (Array. Interface de programação de aplicativos) externa. Sobre a programação orientada a objeto e o Flash 241 . adiciona vários novos recursos à linguagem ActionScript. você pode tratar essa classe personalizada como um novo tipo de dados em seus documentos e criar uma nova instância da classe usando o operador new. A linguagem de programação permite criar estruturas de programa reutilizáveis. uma classe define uma categoria de objeto. Você também pode criar suas próprias classes personalizadas e integrá-las aos documentos do Flash ou. o ActionScript 2. Por exemplo.0 fornece várias palavras-chave e conceitos avançados e familiares de OOP (como classe. Como sempre. até mesmo. O Flash Basic 8 e o Flash Professional 8 contêm aproximadamente 65 classes de nível superior e internas que fornecem desde tipos de dados básicos. upload e download de arquivos. e você pode importá-las para o seu aplicativo ao compilar o arquivo FLA.0 para criar objetos e estabelecer herança.

se você criar três classes muito semelhantes. duas outras que estendam essa classe. poderá salvar a classe de barra de progresso em seu caminho de classe e reutilizar o mesmo código em todos os documentos do Flash importando a classe personalizada. como mostra o seguinte exemplo: 242 Classes . Circle e Triangle. cada um com seus próprios arquivos de classes. Os pacotes normalmente são usados para organizar classes relacionadas.as. Existem maneiras mais usadas de atribuir nomes a pacotes. Para obter mais informações sobre como definir o caminho de classe. Um pacote é um diretório que contém um ou mais arquivos de classes e reside em um diretório determinado do caminho de classe (consulte “Sobre a importação de arquivos de classes” na página 254 e “Sobre a definição e a modificação do caminho de classe” na página 255). sublinhado (_) ou cifrão ($) e os caracteres seguintes podem ser uma letra. poderá criar uma classe base e. você não só facilita a reutilização do código. os nomes de pacotes podem ser identificadores. Isso ajuda a impedir que outras pessoas acessem informações confidenciais ou alterem dados que não devem ser alterados. você também pode estender as classes existentes e adicionar nova funcionalidade ou modificar a funcionalidade existente. em seguida. sublinhado ou cifrão. Ao usar uma classe. você pode ter três classes relacionadas. conter outros pacotes. o primeiro caractere pode ser uma letra. organize seus arquivos de classes do ActionScript em pacotes.as. a recomendação de evitar usar caracteres sublinhados ou de cifrão. como também pode “ocultar” alguns dos métodos e das propriedades de outras partes do código ActionScript. Suponha que você tenha salvo os arquivos ActionScript em um diretório especificado do caminho de classe. por exemplo. que são definidas em Square. chamados subpacotes. Circle. consulte “Sobre a importação de arquivos de classes” na página 254 e “Sobre a definição e a modificação do caminho de classe” na página 255. Ao mover grande parte da lógica para uma classe personalizada.as e Triangle. ou seja. Assim como as variáveis. Por exemplo. Por exemplo. Um pacote pode. pois grande parte da complexidade do aplicativo pode ser organizada em arquivos de classes externos. Outra vantagem de usar classes é a capacidade de reutilizar o código. de modo que você não precise criar três arquivos de classe que dupliquem o mesmo código e a mesma lógica. se você criar uma classe personalizada que crie uma barra de progresso personalizada usando a interface de programação de aplicativos (API) Drawing. Square. Por exemplo.As classes podem ser muito úteis quando você cria aplicativos Flash maiores. Essas duas classes podem adicionar outros métodos e propriedades. número. consulte “Atribuindo nomes a pacotes” na página 777. Para obter mais informações sobre atribuição de nome a pacotes. Sobre pacotes Ao criar classes. por sua vez.

Para obter mais informações. Os caminhos de pacotes são denotados com a sintaxe de ponto (. consulte “Sobre os membros de classe (estáticos)” na página 315.Triangle {} Para fazer referência a uma classe que se encontra em um diretório de pacote. na qual cada ponto indica um subdiretório. uma classe define uma categoria de objeto. As propriedades (variáveis definidas em uma classe) e os métodos da classe são designados coletivamente como os membros da classe. As classes são essencialmente tipos de dados que você poderá criar se desejar definir um novo tipo de objeto em seu aplicativo. da mesma maneira que uma planta arquitetônica descreve as características de uma construção. seria necessário alterar o nome de cada arquivo de classe para refletir o novo local.as: class Circle {} // Em Triangle. você poderá especificar seu nome de classe totalmente qualificado ou importar o pacote usando a instrução import. se você tivesse colocado no diretório Shapes cada arquivo ActionScript que define uma forma. o nome de classe totalmente qualificado conterá o caminho do pacote e o nome de classe simples. Para usar as propriedades e os métodos definidos por uma classe.as: class Triangle {} Como esses três arquivos de classes estão relacionados. geralmente você cria primeiro uma instância dessa classe (exceto no caso de classes com membros estáticos. A relação entre uma instância e sua classe é semelhante à existente entre uma casa e sua planta arquitetônica.Circle {} // Em Shapes/Triangle.as: class Shapes. você pode decidir colocá-los em um pacote (diretório) chamado Shapes. Nesse caso. Sobre a programação orientada a objeto e o Flash 243 . Por exemplo.).as: class Square {} // Em Circle. Uma classe descreve as propriedades (dados) e os comportamentos (métodos) de um objeto. Comparação de classes e pacotes Na OOP.Square {} // Em Shapes/Circle.as: class Shapes. da seguinte maneira: // Em Shapes/Square. como a classe Math de nível superior e “Propriedades e métodos estáticos” na página 264). consulte “Trabalhando com pacotes” na página 244.as: class Shapes.// Em Square.

3). Por exemplo. Trabalhando com pacotes Pacotes são diretórios que contêm um ou mais arquivos de classes e residem em um diretório específico do caminho da classe. var myBlur:BlurFilter = new BlurFilter(10. BlurFilter. Essas classes seriam organizadas no pacote Widget. PlasticWidget e WoodWidget que são definidas em SteelWidget. É possível colocar arquivos de classes personalizados relacionados em um mesmo diretório.BlurFilter) ou importá-la.0 e Flash Player 6 ou uma versão posterior na guia Flash da caixa de diálogo Publish Settings (Configurações de publicação) do arquivo FLA. Se você estiver importando diversas classes em um pacote (tais como BlurFilter.as. você deve referir-se a ela pelo nome totalmente qualificado (flash. os pacotes são diretórios que contêm um ou mais arquivos de classes e residem em um caminho de arquivo designado. Por exemplo. Isso pode representar menos tempo de digitação e reduzir a possibilidade de erros: // com importação import flash. 10. 3). escrito com uma instrução import.BlurFilter.filters é um diretório no disco rígido que contém diversos arquivos de classe para cada tipo de filtro (tais como BevelFilter. Se você não importar a classe BlurFilter. o seu código precisa usar o nome de classe totalmente qualificado (nome do pacote seguido do nome da classe) a fim de usar o filtro: // sem importação var myBlur:flash. N OT A 244 Para usar a instrução import.as.BlurFilter(10. poderá então fazer referência a ela pelo nome da classe (BlurFilter). PlasticWidget.No Flash. o pacote flash.filters. se você quiser usar a classe BlurFilter em um script. você pode ter três classes relacionadas chamadas SteelWidget. é necessário especificar ActionScript 2. O mesmo código. conforme observado no trecho a seguir: Classes . A instrução import permite acessar classes sem especificar os nomes totalmente qualificados.filters.as e WoodWidget. DropShadowFilter e GlowFilter) você pode usar um dos métodos de importar cada classe.BlurFilter = new flash. permite acessar o BlurFilter usando somente o nome da classe em vez de sempre ter que usar o nome totalmente qualificado.filters. O primeiro método de importação de diversas classes é importar cada classe usando uma instrução import separada. consulte “Trabalhando com pacotes” na página 244 e “Criando e empacotando arquivos de classes” na página 281. Para obter mais informações sobre pacotes. DropShadowFilter e assim por diante) no Flash 8. O código ActionScript a seguir demonstra as diferenças entre usar a instrução import e usar nomes de classe totalmente qualificados. se você a importar. 10.filters. Por exemplo.

se você importou todas as classes no pacote mx. lembre-se de que os tipos de dados descrevem o tipo de informação que uma variável ou um elemento do ActionScript pode conter. O segundo método de importação de classes em um pacote é usar um caractere curinga que importa todas as classes dentro de um determinado nível de um pacote. você deveria referenciar classes naquele pacote pelos nomes totalmente qualificados ou adicionar uma instrução import ao outro quadro que importa as classes naquele pacote. // importa cada classe dentro de um pacote flash. consulte . Sobre a programação orientada a objeto e o Flash 245 . Ao usar instruções import.filters. suponha que você importe todas as classes do pacote macr. somente as classes no diretório /transitions/ serão importadas. “Dados e tipos de dados”. enquanto os valores e as propriedades têm tipos. O bytecode associado a uma classe será incluído em um arquivo SWF somente se a classe for realmente usada. bem como fornecidos e obtidos de uma propriedade de uma classe.BlurFilter. Sobre valores e tipos de dados Dados.transitions. mas não a usar no script. como no seguinte exemplo: var myNum:Number = 10. DICA Se você importar uma classe. a classe não será exportada como parte do arquivo SWF. As expressões têm valores. Você aprendeu sobre dados e tipos em Capítulo 4.DropShadowFilter. Se você quisesse usar o nome de classe em outro script de quadro. no entanto.easing). A compatibilidade indica que o tipo de um valor é compatível com o tipo em uso.filters. na página 75. Isso significa que você pode importar pacotes grandes sem se preocupar com o tamanho do arquivo SWF.filters A instrução import aplica-se apenas ao script atual (quadro ou objeto) no qual ela é chamada.filters. Nesse quadro.util no Frame 1 (Quadro 1) de um documento do Flash.*. valores e tipos são conceitos importantes quando você começa a criar classes e a usálas. e não todas as classes dentro dos subdiretórios (tais como as classes no pacote mx. você pode fazer referência às classes desse pacote por seus nomes de classe em vez de usar os nomes totalmente qualificados.filters. O ActionScript a seguir mostra um exemplo de importação com caractere curinga: import flash. Por exemplo. Number e String. “Sobre tipos de dados” na página 76Para obter mais informações. Usando instruções import individuais para cada classe em um pacote pode tornar-se muito desgastante e pode levar a erros de digitação. devem ser compatíveis com essa propriedade. Os valores que podem ser definidos. import flash. Por exemplo. como Boolean.GlowFilter.import flash. Ao trabalhar com classes. import flash.transitions. também é importante observar que classes são importadas somente para o nível especificado.

como membros dessa classe. Esses princípios são descritos mais profundamente no restante deste capítulo. As características e os comportamentos pertencentes a uma classe são tratadas. consulte “Tipo de dados Object” na página 83. um gato. comer e ronronar. da mesma classe: a classe de gatos. Para obter mais informações sobre objetos. considere que há gatos de cores. na OOP. junto com os detalhes sobre como eles são implementados no Flash 8. N OT A 246 A palavra comportamentos é usada genericamente aqui e não se refere ao painel Behaviors (Comportamentos) do ambiente de criação do Flash. Pode-se dizer que os gatos têm propriedades (ou estados) como nome. As características (nome. cada gato é considerado como uma instância da classe Cat. dormir) são chamados métodos da classe e são representados como funções. Instâncias e membros de classe Continuando com a analogia do mundo real. Com as técnicas orientadas a objeto. Na terminologia da OOP. ou em termos da OOP. idade e cor.Para obter mais informações sobre como atribuir tipos de dados estritos. idade e cor. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85. As seções a seguir usam a analogia de um gato para demonstrar a semelhança entre gatos e os conceitos de programação orientada a objeto (OOP). Porém. Princípios da programação orientada a objeto Nas seções a seguir. uma classe define a estrutura de um tipo de objeto. com maneiras diferentes de comer e ronronar. apesar de suas diferenças individuais. Da mesma maneira. os comportamentos (brincar. você examinará a terminologia usada neste capítulo antes de começar a criar o código ActionScript. por exemplo. idades e nomes diferentes. Objetos Considere um objeto do mundo real. Na OOP. todos os gatos são membros da mesma categoria. Classes . é possível modelar um objeto do mundo real (como um gato) ou um objeto mais abstrato (como um processo químico). os objetos também têm propriedades e comportamentos. como. no exemplo do gato) são chamadas propriedades da classe e são representadas como variáveis. eles também têm comportamentos. em conjunto. Esta breve introdução aos princípios envolvidos no desenvolvimento de programas orientados a objeto o ajudará a acompanhar as seções e os exemplos apresentados neste capítulo e no restante deste manual. como dormir.

que contém as características e os comportamentos comuns de todos os animais. em seguida. Certifique-se de determinar essa hierarquia antes iniciar a programação. criar uma classe Cat que estenda essa classe. as interfaces podem ser descritas como modelos de definições de classes. “Herança”. que define certas propriedades e comportamentos comuns a todos os mamíferos. e as classes que implementam interfaces precisam implementar esse modelo de métodos. consulte o Capítulo 8. ou como as partes funcionam. você pode simplesmente estender uma classe existente. Em vez de recriar todos os códigos comuns às duas classes. uma interface é semelhante à planta arquitetônica de um gato: a planta informa de que partes você precisa. DICA Em um aplicativo complexo. você poderia criar várias subclasses que herdam as características da superclasse Animal e adicionar características específicas a esse tipo de animal. Você poderia criar uma classe Cat que herda características de outra classe. Interfaces Na OOP. Usando a analogia do gato. Criar subclasses permite reutilizar o código. Outra subclasse. determinar como estruturar a hierarquia das classes é uma parte importante do projeto. Herança Uma das principais vantagens da OOP é a capacidade de criar subclasses de (ou estender) uma classe. Uma das principais vantagens de usar uma estrutura de superclasse/subclasse é que é mais fácil reutilizar código semelhante entre diversas classes. você poderia criar uma superclasse chamada Animal. na página 319. mas não necessariamente como essas partes são montadas. como a classe Siamese. A subclasse normalmente define métodos e propriedades adicionais ou sobrescreve métodos ou propriedades definidas na superclasse.Para obter mais informações sobre instâncias e membros de classe. Sobre a programação orientada a objeto e o Flash 247 . consulte “Sobre membros de classe” na página 265 e “Usando membros de classe” na página 269. você pode criar uma classe Mamifero. As subclasses também substituem (fornecem suas próprias definições para) os métodos definidos em uma superclasse. Em seguida. Por exemplo. Por exemplo. poderia estender a classe Cat (ou criar uma subclasse dela) e assim por diante. Para obter mais informações sobre herança e subclasses. a subclasse herda todas as propriedades e métodos da classe.

Uma interface também pode ser considerada como um “contrato de programação” que pode ser usado para impor os relacionamentos entre classes não relacionadas de outra maneira. seus parâmetros e tipos de retorno. consulte “Sobre o uso de encapsulamento” na página 276. ela permite que o criador do objeto altere a sua implementação sem a necessidade de alterar o código externo ao objeto. cada um responsável por uma parte diferente (classe) do mesmo aplicativo. consulte Capítulo 8.Você pode usar interfaces para adicionar estrutura e facilitar a manutenção dos aplicativos. desde que a interface de programação não seja alterada. as interfaces podem ser usadas como uma forma de herança múltipla limitada. caso contrário. “Herança”. você cria uma interface que declara esses métodos. 248 Classes . por exemplo. permitindo que os detalhes da implementação permaneçam privados e invisíveis para o código externo aos objetos. controle de acesso a membros. Como o ActionScript 2. por exemplo. os objetos são considerados como “caixaspretas” que contêm ou encapsulam funcionalidade. Essa abordagem permite que os programadores utilizem níveis mais elevados de abstração e fornece uma estrutura de organização para a criação de sistemas complexos. na página 319. Portanto.0 inclui. ou seja. você estabelece um conjunto de métodos que as diferentes classes usam para se comunicarem. Qualquer classe que implemente essa interface deve fornecer definições para esses métodos. Ao projetar o aplicativo. métodos e eventos (sua interface de programação). sem conhecer os detalhes de sua implementação. consulte o Capítulo 9. na página 331. O encapsulamento é o motivo pelo qual o ActionScript 2. Por exemplo. O programador deve ser capaz de interagir com um objeto conhecendo somente suas propriedades. Para obter mais informações sobre herança. Essa abordagem oferece algumas vantagens importantes. Para obter mais informações sobre interfaces. Encapsulamento Em um projeto orientado a objeto bem elaborado. “Interfaces”. suponha que você esteja trabalhando com uma equipe de programadores.0 oferece suporte somente à extensão de uma única superclasse. ocorrerá um erro do compilador. Para obter mais informações sobre encapsulamento. O código externo ao objeto é forçado a interagir com a interface de programação do objeto em vez de com os detalhes da implementação (o que pode ser oculto em métodos e propriedades privados.

Cat implementa o método play() para avançar em um novelo de lã. Criando arquivos de classes personalizados O exemplo a seguir examina as partes de um arquivo de classe.. as subclasses podem definir implementações especializadas de métodos herdados da superclasse. na página 319 e “Usando o polimorfismo em um aplicativo” na página 327.. Para obter mais informações sobre polimorfismo. Como a funcionalidade sleep() é semelhante entre os animais. Dog implementa o método play() para apanhar uma bola. Você também aprenderá sobre as partes de uma classe. depois da ilustração. Para definir uma classe. Você aprenderá a criar uma classe e a modificá-la para que possa usá-la de várias maneiras com o Flash. mas não podem acessar a implementação da superclasse como em outras linguagens de programação. você examinará uma classe muito simples. e não em um script criado no painel Actions (Ações). em seguida.Polimorfismo A OOP permite expressar as diferenças entre classes individuais usando uma técnica chamada polimorfismo. bem como informações sobre autor e versão. você criará uma classe. No Flash. ■ O arquivo de classe inicia com comentários de documentação que incluem uma descrição geral do código.} ■ ■ Criando arquivos de classes personalizados 249 . criar as subclasses Cat. você usaria a implementação de superclasse. da seguinte maneira: class UserClass {. pela qual as classes podem substituir os métodos de suas superclasses e definir implementações especializadas desses métodos. Adicione suas instruções import (se aplicável). como importá-las e como trabalhar com arquivos de classes personalizados no Flash. consulte o Capítulo 8. O exemplo a seguir mostra a organização de uma classe simples chamada UserClass. Monkey e Dog para estender essa classe. Essa estrutura é ilustrada a seguir e. Monkey implementa o método play() para pendurar-se nos galhos de árvores. “Herança”. você pode criar inicialmente uma classe chamada Mammal com os métodos play() e sleep() e. Por exemplo. A estrutura de classes também é relevante para os arquivos de interface. As subclasses substituem o método play() da classe Mammal para refletir os hábitos desses tipos específicos de animais. Em primeiro lugar. Crie uma instrução de pacote. use a palavra-chave class em um arquivo de script externo. uma declaração de classe ou uma declaração de interface.

Inc. ■ O exemplo a seguir examina uma classe simples do ActionScript chamada User. } 2. Digite o seguinte código ActionScript na janela Script: /** Classe de usuário author: John Doe version: 0. Escreva as variáveis de classe pública primeiro.as ao novo arquivo. p_password:String) { this.. seguidas das variáveis membro privadas.8 modified: 08/21/2005 copyright: Macromedia. Selecione File (Arquivo) > New (Novo). Adicione todas as variáveis estáticas. */ class User { // variáveis de instância privadas private var __username:String. Esse código define uma classe User personalizada que permite criar novos usuários e especificar as informações de login dos usuários. 3. password:String) {. A organização dos métodos dessa maneira aumenta a legibilidade e a clareza do código. seguidas de variáveis de classe privada. Para criar arquivos de classes: 1. } public function get username():String { return this. adicione informações pertinentes à toda classe ou interface. Agrupe-os por funcionalidade. em seguida. clique em OK. selecione ActionScript File (Arquivo ActionScript) e. e não por acessibilidade ou escopo.. 250 Classes .} ■ ■ ■ ■ Escreva os métodos. private var __password:String. Selecione File > Save As (Salvar como) e atribua o nome User. como a do exemplo abaixo: public function UserClass(username:String. // instrução construtora public function User(p_username:String. Nesses comentários.__password = p_password.__username = p_username. Escreva primeiro as variáveis membro públicas.__username. Adicione a instrução construtora. Adicione variáveis de instância. this.■ Inclua os comentários necessários sobre a implementação de classe ou interface. Escreva os métodos getter/setter no arquivo de classe.

password). Para criar uma propriedade somente leitura. mas não uma função setter. O trecho de código anterior inicia com um comentário de documentação padronizado. var user1:User = new User("un1". "pw1"). que especifica o nome da classe. Por exemplo. que são copiados para as variáveis de instância privadas __username e __password da classe. trace("\t username = " + user1. informações de copyright e uma breve descrição do que a classe faz. user1. 6. trace("\t password = " + user1.fla ao arquivo. A importação dessa classe permite usá-la como um tipo de dados personalizado. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): import User. } public function set password(value:String):Void { this. para garantir que um nome de usuário não seja alterado após ser definido. } } 4. A instrução construtora da classe User utiliza dois parâmetros: p_username e p_password. trace("\t password = " + user1. Selecione File > New e. 5. a data da última modificação. Criando arquivos de classes personalizados 251 .as. selecione Flash Document (Documento Flash).__username = value.username = "1nu".password). 7.username). user1.password = "1wp".__password = value. } public function get password():String { return this. você definiria uma função getter. O restante do código da classe define as propriedades getter e setter das variáveis de instância privadas.__password. Salve o arquivo no mesmo diretório que User. a versão. A primeira linha do código importa a classe User personalizada para o documento do Flash. // un1 // pw1 // 1nu // 1wp Como a classe User criada anteriormente é muito básica. Selecione File > Save As e atribua o nome user_test. o ActionScript contido no documento do Flash também é muito simples. trace("Before:").public function set username(value:String):Void { this. trace("\t username = " + user1. Salve as alterações no arquivo de classe.username). o autor. trace("After:"). você excluiria a função setter username do arquivo de classe User. em seguida.

8.password utilizando as funções getter da classe User. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu. A duas próximas linhas usam as funções setter da classe User a fim de definir novos valores para as variáveis username e password. Definir uma classe em um arquivo de classe externo do ActionScript. Você atribui um valor ao objeto User user1 e define username como un1 e password como pw1. consulte “Criando arquivos de classes personalizados” na página 249. No Macintosh. O exemplo chama o construtor XmlMenu() do ActionScript e passa dois parâmetros: o caminho para o arquivo de menu XML e uma referência à timeline atual. você exibe os valores de username e password no painel Output (Saída). Nas seções a seguir. As duas instruções trace apresentadas a seguir exibem o valor atual de user1. no mínimo.Uma única instância da classe User é definida e atribuída a uma variável chamada user1. XmlMenu. Salve o arquivo FLA e selecione Control (Controlar) > Test Movie (Testar filme) para testar os arquivos. Para obter informações sobre como definir e criar um arquivo de classe. navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/XML_Menu. você usará esse arquivo em um aplicativo. as seguintes etapas: 1. você usará esses arquivos em um aplicativo. As instruções trace exibem os valores modificados definidos com as funções setter. Um arquivo de exemplo no disco rígido demonstra como criar um menu dinâmico com dados XML e um arquivo de classe personalizado. na pasta Samples (Exemplos) no disco rígido. 252 Classes . Você verá os resultados das instruções trace no painel Output.username e user1. O fluxo de trabalho para a criação de classes envolve. que retornam seqüências de caracteres.as.fla. O resto da funcionalidade reside em um arquivo de classe personalizado. xmlmenu. ■ Sobre como trabalhar com classes personalizadas em um aplicativo Em “Criando arquivos de classes personalizados” na página 249. Finalmente. Você pode encontrar o arquivo de origem de exemplo. Nos próximos exemplos. você criou um arquivo de classe personalizado. ■ No Windows.

leia o Capítulo 4. Para obter mais informações sobre a criação de instâncias de uma classe.fla. Para ver uma comparação e obter mais informações sobre a importação de arquivos de classes.2. 3.0. navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/XML_Menu. ■ No Windows. consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ ■ ■ ■ “Sobre a importação de arquivos de classes” na página 254 “Usando um arquivo de classe no Flash” na página 259 “Usando métodos e propriedades de um arquivo de classe” na página 260 “Sobre membros de classe” na página 265 “Sobre os métodos getter e setter” na página 270 “Como o compilador resolve as referências de classes” na página 258 “Sobre classes dinâmicas” na página 273 “Sobre o uso de encapsulamento” na página 276 “Sobre o uso da palavra-chave this em classes” na página 277 Um arquivo de exemplo no disco rígido demonstra como criar um menu dinâmico com dados XML e um arquivo de classe personalizado. O resto da funcionalidade reside em um arquivo de classe personalizado. Se não estiver familiarizado com o ActionScript 2. ■ Sobre como trabalhar com classes personalizadas em um aplicativo 253 . consulte “Sobre a importação de arquivos de classes” na página 254.0. na página 119 Para obter mais informações sobre como trabalhar com classes personalizadas. consulte “Sobre a definição e a modificação do caminho de classe” na página 255. ou criando uma subclasse com base na classe original. xmlmenu. em um documento FLA ou em um arquivo de script externo. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu. Salvar o arquivo de classe no diretório de caminho de classe designado (o local em que o Flash procura as classes) ou no mesmo diretório que o arquivo FLA do aplicativo. Para obter mais informações sobre como definir o caminho de classe. consulte “Criando instâncias de classes em um exemplo” na página 294. Você pode encontrar o arquivo de origem de exemplo.as. Criar uma instância da classe em outro script. na pasta Samples (Exemplos) no disco rígido. na página 75 e o Capítulo 5. O exemplo chama o construtor XmlMenu() do ActionScript e passa dois parâmetros: o caminho para o arquivo de menu XML e uma referência à timeline atual. XmlMenu. “Dados e tipos de dados”. As seções subseqüentes deste capítulo contêm exemplos de código que você poderá usar para se familiarizar com a criação de classes no ActionScript 2. No Macintosh. “Fundamentos da sintaxe e da linguagem”.

Sobre a importação de arquivos de classes Para usar uma classe ou uma interface definida.*. em seguida. um caminho de classe global e um em nível de documento: ■ Caminho de classe global é um caminho de classe compartilhado por todos os documentos do Flash e Você deve configurá-lo na caixa de diálogo Preferences (Preferências) (Edit (Editar) > Preferences (Windows) ou Flash > Preferences (Macintosh). em seguida. clique em ActionScript 2. funções e variáveis é denominada caminho de classe. Ele é configurado na caixa de diálogo Publish Settings (Configurações de publicação) (File > Publish Settings.display. Configurações). selecione a guia Flash e. as instruções include copiam e colam o conteúdo no arquivo incluído do ActionScript.0 Settings (Configurações do ActionScript 2.0)). interfaces.BitmapData. ■ 254 Classes . ■ Caminho de classe em nível de documento é um caminho de classe definido especificamente para um único documento do Flash. use esta sintaxe: import flash. clique no botão Settings. ■ Para importar definições empacotadas individuais. A lista de diretórios na qual o Flash procura as definições de classes. As seguintes regras se aplicam à importação de arquivos de classes: ■ As instruções import podem existir nos seguintes locais: ■ ■ ■ Qualquer local antes da definição de classe nos arquivos de classe Qualquer local nos scripts de quadro ou de objetos Qualquer local nos arquivos ActionScript que você incluir em um aplicativo (usando a instrução #include). As seguintes regras se aplicam à instrução include: ■ Essencialmente. Você também pode incluir código ActionScript em um arquivo de documento do Flash (FLA) usando uma instrução include. O Flash possui duas configurações de caminho de classe. o Flash deve localizar os arquivos externos do ActionScript que contêm a definição da classe ou da interface de modo que possa importar o arquivo. ■ Você pode importar pacotes inteiros com a sintaxe de caracteres curingas: import flash. clique em ActionScript na lista Category (Categoria) e.display. As instruções include dentro dos arquivos de classe do ActionScript são relativas ao subdiretório que contém o arquivo.

function fooMethod() {} trace("Foo"). ou seja. consulte “Criando e empacotando arquivos de classes” na página 281. O caminho de classe global é compartilhado por todos os documentos do Flash.as class Foo { #include "FooDef. somente definições de propriedades e de métodos poderão existir no arquivo incluído do ActionScript: // Foo. as instruções include só podem inserir código válido em arquivos FLA. Depois de criar um arquivo de classe do ActionScript.as" } // FooDef. Sobre como trabalhar com classes personalizadas em um aplicativo 255 . // Essa instrução não é permitida na definição de classe. localizar a classe ou a interface especificada no script. Para obter mais informações sobre caminhos de classes. Caso contrário. e a mesma regra se aplica aos outros locais em que as instruções include podem residir.) O Flash tem duas configurações de caminho de classe: um caminho de classe global e um caminho de classe em nível de documento. Sobre a definição e a modificação do caminho de classe Para usar uma classe ou uma interface definida.■ Em um arquivo do Flash (FLA). se uma definição de classe contiver uma instrução include.as: var fooProp. consulte %{#include directive}% em ActionScript 2. o Flash não poderá resolver. A lista de diretórios na qual o Flash procura as definições de classes e interfaces é denominada caminho de classe. consulte “Sobre a definição e a modificação do caminho de classe” na página 255. Para obter mais informações sobre a instrução include. Por exemplo. o Flash deve localizar os arquivos ActionScript externos que contêm a definição da classe ou da interface. você precisa salvar o arquivo em um dos diretórios especificados no caminho de classe ou em um subdiretório desse caminho.0 Language Reference (Referência da linguagem ActionScript). (Você pode modificar o caminho de classe para incluir o caminho de diretório desejado). Os subdiretórios criados em um diretório do caminho de classe chamam-se pacotes e permitem a você organizar as suas classes. (Para obter mais informações sobre pacotes. O caminho de classe em nível de documento é definido especificamente para um único documento do Flash.

/my_classes ou “. NO T A 256 Não exclua o caminho de classe global absoluto. Saiba que os caminhos de classe relativos podem apontar para diretórios diferentes. Você pode definir o caminho de classe em nível de documento na caixa de diálogo Publish Settings (Configurações de publicação) do documento do Flash (File (Arquivo) > Publish Settings.”). dependendo do local do documento que está sendo compilado ou publicado. O local do caminho absoluto é mostrado aqui: Windows: Hard Disk\Documents and Settings\user\Local Settings\Application Data\Macromedia\Flash 8\idioma\Configuration\Classes.0 Settings (Configurações do ActionScript)). Nos dois casos. Classes . Para adicionar um caminho de classe global ou editar um caminho de classe existente. clique no botão Settings (Configurações). Se você acidentalmente excluir esse caminho de classe.) e aponta para o diretório de documentos atual. Por padrão. e é definido na caixa de diálogo Preferences (Preferências) (Windows: Edit (Editar) > Preferences (Windows) ou Flash > Preferences (Macintosh). o compilador examina somente o caminho de classe global. selecione ActionScript da lista Category (Categoria) e. restabeleça-o adicionando $(LocalData)/Classes como um novo caminho de classe. . C:/my_classes) e caminhos de diretório relativos (por exemplo. O caminho absoluto é denotado por $(LocalData)/Classes na caixa de diálogo Preferences.O caminho de classe global aplica-se aos arquivos ActionScript e FLA externos. Usando um caminho de classe global O caminho de classe global é compartilhado por todos os documentos do Flash.. em seguida. clique em ActionScript 2. selecione a guia Flash e. Macintosh: Hard Disk/Users/usuário/Library/Application Support/Macromedia/Flash 8/ idioma/Configuration/Classes. use a caixa de diálogo Publish Settings para o arquivo FLA. A ordem dos diretórios na caixa de diálogo reflete a ordem em que eles são pesquisados. você pode adicionar caminhos de diretório absolutos (por exemplo. Você pode modificar o caminho de classe global usando a caixa de diálogo Preferences. o caminho de classe global contém um caminho absoluto e outro relativo. siga estas etapas. A parte do caminho de classe global referente ao caminho relativo é denotada por um ponto (. Os arquivos do ActionScript não são associados a arquivos FLA no modo de edição e não possuem o seu próprio caminho de classe. N OT A ■ ■ Quando você clica no botão Check Syntax (Verificar sintaxe) acima do painel Script ao editar um arquivo do ActionScript. Para modificar a configuração do caminho de classe em nível de documento. em seguida. O Flash utiliza esse caminho de classe para acessar as classes internas.

porque todas as classes armazenadas nesse diretório seriam perdidas. clique na guia Flash e. 2. Para defini-lo. Para obter informações sobre a importação de pacotes. consulte “Trabalhando com pacotes” na página 244. algumas vezes. esse diretório torna-se um diretório de caminho de classe designado. NO T A Não exclua o caminho de classe global absoluto. Clique no botão Remove from Path (Remover do caminho).0 Settings (Configurações do ActionScript 2.0). O padrão é que o caminho de classe em nível de documento fique vazio. Se você acidentalmente excluir esse caminho de classe. Clique no botão Browse to Path (Navegar até caminho) para navegar até o diretório que deseja adicionar. Para excluir um diretório do caminho de classe: 1. Selecione Edit (Editar) > Preferences (Preferências) (Windows) ou Flash > Preferences (Macintosh) para abrir a caixa de diálogo Preferences. é possível que. 2. em seguida. Clique no ActionScript na coluna esquerda e. 4. restabeleça-o adicionando $(LocalData)/Classes como um novo caminho de classe. Sobre como trabalhar com classes personalizadas em um aplicativo 257 . Navegue até o caminho desejado e clique em OK. use a caixa de diálogo Publish Settings (Configurações de publicação) referente a um arquivo FLA. Selecione o caminho na lista Classpath (Caminho de classe). você deseje armazená-las em um diretório que será adicionado posteriormente à lista de diretórios de caminho de classe global nas seguintes situações: ■ ■ Se você tiver um conjunto de classes utilitárias que sejam usadas em todos os seus projetos Se você desejar verificar a sintaxe do seu código (clique no botão Check Syntax (Verificar sintaxe)) dentro do arquivo ActionScript externo A criação de um diretório evita a perda de classes personalizadas se você desinstalar e reinstalar o Flash. especialmente se o diretório de caminho de classe global padrão for excluído e substituído.0 Settings (Configurações do ActionScript 2.0). Usando um caminho de classe em nível de documento O caminho de classe em nível de documento se aplica somente a arquivos FLA. Ao criar classes. em File (Arquivo) > Publish Settings. Quando você cria e salva um arquivo FLA em um diretório. clique no botão ActionScript 2. em seguida. O Flash utiliza esse caminho de classe para acessar as classes internas. 3. clique em ActionScript 2.Para modificar o caminho de classe global: 1.

2. Clique na guia Flash. Para obter mais informações sobre pacotes. Você pode digitar manualmente um caminho de arquivo ou clicar no botão Browse to Path (Navegar até caminho) para navegar até o diretório que deseja adicionar ao caminho de classe. 258 Classes . Quando o Flash tenta resolver as referências de classes em um script FLA. 3. você pode criar para suas classes personalizadas um diretório como o apresentado a seguir: ■ ■ Windows: Hard Disk\Documents and Settings\usuário\custom classes. ocorrerá um erro do compilador. navegue até o diretório que deseja adicionar e clique em OK. Para excluir um diretório do caminho de classe.Por exemplo. clique no botão Browse to Path. Clique no botão Settings perto do menu pop-up ActionScript Version (Versão do ActionScript). selecione o caminho na lista Classpath e clique no botão Remove Selected Path (-) (Remover o caminho selecionado). o Flash pesquisará o caminho de classe global. Selecione File > Publish Settings para abrir a caixa de diálogo Publish Settings. ele pesquisa primeiro o caminho de classe em nível de documento especificado para esse arquivo FLA. consulte “Sobre pacotes” na página 242. Se a classe não for encontrada nesse caminho ou se o caminho estiver vazio. Se ele não encontrar a classe nesse caminho ou se o caminho estiver vazio. ele pesquisa primeiro o caminho de classe em nível de documento especificado para esse arquivo FLA. Macintosh: Hard Disk/Users/usuário/custom classes. Se a classe não for encontrada nesse caminho. Em seguida. Como o compilador resolve as referências de classes Quando o Flash tenta resolver as referências de classes em um script FLA. ele pesquisará o caminho de classe global. selecione o caminho na lista Classpath (Caminho de classe). Para modificar o caminho de classe no nível do documento: 1. ocorrerá um erro do compilador. Para editar um diretório de caminho de classe existente. Se ele não encontrar a classe nesse caminho. você adicionaria esse caminho à lista de caminhos de classe global (consulte “Usando um caminho de classe global” na página 256). NO T A N OT A 4.

Use o operador ponto (. Por exemplo. Usando um arquivo de classe no Flash Para criar uma instância de uma classe do ActionScript.No Flash Professional.username Você também pode usar em um documento do Flash as classes de nível superior ou internas da linguagem ActionScript. Por exemplo. // 3 Para obter mais informações sobre o uso de classes personalizadas no Flash. mostra sua propriedade length: var myArray:Array = new Array("apples". consulte “Criando a função construtora” na página 283. N OT A Em alguns casos. consulte “Sobre os membros de classe (estáticos)” na página 315 e “Propriedades e métodos estáticos” na página 264.length). não é necessário criar uma instância de uma classe para usar suas propriedades e métodos. se estivesse usando a classe User criada em “Criando arquivos de classes personalizados” na página 249. trace(myArray. consulte o “Exemplo: Usando arquivos de classes personalizados no Flash” na página 291.) para acessar o valor de uma propriedade em uma instância. "oranges". Para obter informações sobre a função construtora. firstUser é a instância e username é a propriedade: firstUser. A função construtora sempre tem o mesmo nome da classe e retorna uma instância da classe. o compilador examina somente o caminho de classe global. você escreveria o seguinte código para criar um objeto User: var firstUser:User = new User(). que você normalmente atribui a uma variável. quando você clica no botão Check Syntax (Verificar sintaxe) ao editar um arquivo ActionScript. Para obter mais informações sobre membros (estáticos) de classes. os arquivos ActionScript não são associados a arquivos FLA no modo de edição nem possuem o seu próprio caminho de classe. "bananas"). Por exemplo. depois. Digite o nome da instância à esquerda do ponto e o nome da propriedade à direita. Sobre como trabalhar com classes personalizadas em um aplicativo 259 . use o operador new para chamar a função construtora da classe. o código a seguir cria um novo objeto Array e. na instrução a seguir.

Salve o documento como Picture. chama o método showInfo(): var img1:Picture = new Picture("http://www. em seguida. você faz referência a uma instância da classe. Métodos são funções associadas a uma classe.showInfo(). em seguida. length é uma propriedade de todos os arrays que especifica o número de elementos do array. 260 Classes .53 modified: 6/24/2005 copyright: Macromedia. clique em OK. O exemplo a seguir mostra como criar um método em um arquivo de classe: class Sample { public function myMethod():Void { trace("myMethod"). são criados uma vez por classe.) Propriedades são atributos que definem um objeto. img1. uma instância da classe personalizada Picture (disponível no exercício a seguir). Para chamar um método de instância ou acessar uma propriedade de instância. Crie sua classe Picture personalizada nesse documento. selecione ActionScript File (Arquivo ActionScript).com/flash/images/ image1. 2. na página 213.helpexamples. Os membros de instância são criados para cada instância da classe. Digite o seguinte código ActionScript na janela Script: /** Picture class author: John Doe version: 0. você poderia chamar esse método em seu documento. O próximo exemplo demonstra como criar uma classe personalizada Picture para armazenar várias informações sobre uma foto. Para usar as classes Picture e PictureClass em um arquivo FLA: 1. consulte o Capítulo 6. Para obter mais informações sobre funções e métodos. Inc. Por exemplo. por outro lado. eles são definidos para o protótipo da classe quando são inicializados na definição de classe.jpg").as e.Usando métodos e propriedades de um arquivo de classe Na OOP. picture01. } } Depois. “Funções e métodos”. No exemplo a seguir. // Chame o método showInfo(). (Os membros da classe também são conhecidos como membros estáticos. os membros (propriedades ou métodos) de uma classe podem ser membros de instância ou membros de classe. Selecione File (Arquivo) > New (Novo) e. Os membros de classe.

7.src.__infoObj. Selecione File > New Flash Document (Documento do Flash) para criar um arquivo FLA.helpexamples.jpg] Sobre como trabalhar com classes personalizadas em um aplicativo 261 .toString()).helpexamples. } private function toString():String { return "[Picture src=" + this. public function Picture(src:String) { this.__infoObj.A classe Picture é usada como um recipiente para uma imagem e seu URL. img_mc.__infoObj = new Object(). Salve-o como picture_test. */ class Picture { private var __infoObj:Object. } public function set src(value:String):Void { this.com/flash/ images/image1. 5.jpg"). 6.__infoObj.loadMovie(picture1. } public function get src():String { return this.src + "]". } } 3.showInfo(). 4. O seguinte texto é exibido no painel Output: [Picture src=http://www. Salve o documento do Flash.createEmptyMovieClip("img_mc". this.src = value.__infoObj.fla no mesmo diretório em que salvou o arquivo de classe Picture.src = src. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. Digite o seguinte código ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): var picture1:Picture = new Picture("http://www. 9). } public function showInfo():Void { trace(this. Salve o arquivo do ActionScript. this.src).com/flash/images/image1. picture1.

xmlmenu. você pode usá-la para manter a consistência em um bloco de código que também contém variáveis privadas ou estáticas. métodos estáticos públicos e propriedades e métodos estáticos privados e propriedades. Ela pode ser usada como palavrachave pública ou privada. Por exemplo. Propriedades e métodos públicos A palavra-chave public especifica que uma variável ou função está disponível para qualquer chamador. XmlMenu. Por exemplo. Definindo a propriedade da classe (às vezes chamada membro de instância) como privada. indicando que a variável existe no escopo atual. se você criar uma classe User. Ao criar aplicativos pequenos ou grandes baseados em classes. ■ No Windows.as. talvez não deseje que os usuários dessa classe sejam capazes de alterar a ID de outros usuários. Esses métodos e propriedades definem como o Flash pode acessar variáveis e permitem especificar quais partes do código podem acessar determinados métodos ou propriedades. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu. a palavra-chave this é usada principalmente por razões estilísticas e de legibilidade. é importante considerar se um método ou propriedade deve ser privado ou público. O exemplo chama o construtor XmlMenu() do ActionScript e passa dois parâmetros: o caminho para o arquivo de menu XML e uma referência à timeline atual. O resto da funcionalidade reside em um arquivo de classe personalizado. 262 Classes . na pasta Samples (Exemplos) no disco rígido.Um arquivo de exemplo no disco rígido demonstra como criar um menu dinâmico com dados XML e um arquivo de classe personalizado. você poderá criar quatro tipos de métodos e propriedades: métodos públicos e propriedades. o que significa que nenhum usuário poderá alterar essa propriedade diretamente. você poderá limitar ao código da classe ou das subclasses dessa classe o acesso à propriedade.fla. Como as variáveis e as funções são públicas por padrão. Isso garantirá a segurança máxima do código. ■ Sobre propriedades (membros) e métodos públicos. navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/XML_Menu. métodos privados e propriedades. Você pode encontrar o arquivo de origem de exemplo. privados e estáticos Ao criar arquivos de classes do ActionScript em um arquivo de script externo. No Macintosh.

como mostra o seguinte código de exemplo: class Sample { private var ID:Number. Por padrão. uma variável ou função é pública e está disponível para qualquer chamador. } } Para adicionar uma propriedade privada à classe anterior. Use a palavra-chave this se desejar restringir o acesso a uma variável ou função. Se você tentar acessar a propriedade ID privada fora da classe Sample. você pode alterá-la na classe Sample ou diretamente em um FLA. public function myMethod():Void { this.ID = 15.ID). public function myMethod():Void { trace("myMethod"). public function myMethod():Void { this. A mensagem indica que o membro é privado e não pode ser acessado. // 15 trace("myMethod"). use a palavra “public” em vez de “private”.ID). Propriedades e métodos privados A palavra-chave private determina que uma variável ou função está disponível apenas para a classe que a declara ou a define ou para subclasses dessa classe. você deve usar simplesmente a palavra-chave private antes da palavra-chave var. } } Se desejar adicionar uma propriedade pública. trace(this.A classe Sample a seguir já contém um método público chamado myMethod(): class Sample { private var ID:Number. trace(this.ID = 15. você receberá um erro de compilador e uma mensagem no painel Output (Saída). } } Como a propriedade email é pública. Sobre como trabalhar com classes personalizadas em um aplicativo 263 . // 15 trace("myMethod"). como mostra o seguinte exemplo: class Sample { private var ID:Number. public var email:String.

você poderia criar uma variável estática para controlar quantas instâncias da classe foram criadas. As propriedades e os métodos estáticos podem ser definidos no escopo público ou privado.PI. será exibido um resultado no painel Output (Saída). e não a uma instância da classe. também chamados membros de classe.count). trace("count updated: " + Sample. como demonstrado no seguinte código: class Sample { public static var count:Number = 0. você não cria uma instância dessa classe. como mostra o seguinte código: trace(Math. Para chamar um método ou acessar uma propriedade da classe. em vez de a uma instância específica dela. Por exemplo. public var email:String. Para chamar qualquer um dos seus métodos. public function Sample() { Sample. a classe Math de nível superior consiste apenas em métodos e propriedades estáticos. Você pode acessar um membro de classe estático sem criar uma instância da classe.count++. você faz referência ao nome da classe. } } Toda vez que uma nova instância da classe Sample é criada. basta chamar os métodos na própria classe Math. O código a seguir chama o método sqrt() da classe Math: 264 Classes .392699081698724 Se você digitar essa linha de código no painel de script do painel Actions (Ações). em vez de em todos os objetos baseados nessa classe. como você viu anteriormente nesta seção ao chamar a propriedade Math. você não cria uma instância da classe para usar essas propriedades e métodos. Algumas das classes de nível superior do ActionScript têm membros de classe (ou membros estáticos).Propriedades e métodos estáticos A palavra-chave static determina que uma variável ou função seja criada somente uma vez por classe. e não em uma instância dela.PI / 8). no exemplo da classe Sample anterior. } public function myMethod():Void { trace("myMethod"). private var ID:Number. Portanto. o método construtor apresenta o número total de instâncias de classe Sample definidas até o momento. // 0. são atribuídos à classe. Por exemplo. Em vez disso. Os membros estáticos. Os membros de classe (propriedades e métodos) são acessados ou chamados no nome da classe.

de tipo Number e String. ■ No Windows. você pode criar um método chamado getInfo().var squareRoot:Number = Math.max(10. ■ Sobre membros de classe A maioria dos membros (métodos e propriedades) abordados até agora neste capítulo são de um tipo denominado membros de instância. Para cada membro de instância. na pasta Samples (Exemplos) no disco rígido. // 20 Para obter mais informações sobre a criação de membros de classe. Você pode encontrar o arquivo de origem de exemplo. // 2 O código a seguir chama o método max() da classe Math. qualquer função declarada em uma classe é considerada um método da classe. consulte “Sobre membros de classe” na página 265 e “Usando membros de classe” na página 269. pois cada pessoa tem um endereço eletrônico diferente. que determina o maior de dois números: var largerNumber:Number = Math. O exemplo chama o construtor XmlMenu() do ActionScript e passa dois parâmetros: o caminho para o arquivo de menu XML e uma referência à timeline atual. Por exemplo. a variável de membro email da classe Sample tem um membro de instância. O resto da funcionalidade reside em um arquivo de classe personalizado. Outro tipo de membro é o membro de classe. public var username:String. No Macintosh. Qualquer variável declarada em uma classe. navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/XML_Menu. é uma propriedade da classe. Sobre como trabalhar com classes personalizadas em um aplicativo 265 . No exemplo da classe Person. xmlmenu. class Person { public var age:Number. respectivamente.sqrt(4). } Igualmente.fla. Há somente uma cópia de um membro de classe. mas fora de uma função. a classe Person tem duas propriedades. e ela é usada para a classe inteira. Um arquivo de exemplo no disco rígido demonstra como criar um menu dinâmico com dados XML e um arquivo de classe personalizado. trace(largerNumber). No exemplo a seguir. age e name. trace(squareRoot). navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu. XmlMenu. há uma cópia exclusiva desse membro em cada instância da classe.as. 20).

Por exemplo. public static function getAge():Number { return age. o método getInfo() da classe Person. Como não valeria a pena armazenar uma cópia exclusiva da seqüência de caracteres "Homo sapiens" para cada instância da classe. Somente as propriedades e os métodos compartilhados por todos os indivíduos da classe devem ser membros de classe. Para cada objeto Person. } Você também pode declarar os métodos de uma classe como estáticos. esse membro deve ser um membro de classe. /* **Error**: Não é possível acessar variáveis de instância em funções estáticas. */ } } Para resolver esse problema. Os membros de classe são declarados com a palavra-chave static. a espécie é Homo sapiens. // . Por exemplo. pois cada pessoa tem uma idade diferente. class Person { public var age:Number = 15. você poderia declarar o membro de classe species com o seguinte código: class Person { public static var species:String = "Homo sapiens".. como no seguinte código: public static function getSpecies():String { return Person. e não propriedades de instância.. porque o método getAge() da classe faz referência à variável de instância age. public var username:String. bem como as propriedades age e username. // . Suponha que toda classe deva ter uma variável species que indique o nome em latim da espécie que a classe representa. você pode transformar o método em um método de instância ou transformar a variável em uma variável de classe. são membros de instância públicos. 266 Classes . } Os métodos estáticos podem acessar somente propriedades estáticas.. public function getInfo():String { // definição do método getInfo() } } No trecho de código anterior. A propriedade age não poderia ser considerada com um membro de classe.class Person { public var age:Number. o código a seguir resultará em um erro do compilador..species.

como o Singleton. selecione ActionScript File (Arquivo ActionScript). talvez você precise gerenciar e acessar a instância única desse objeto. Para usar o padrão de design Singleton: 1. há situações em que é necessário ter exatamente um objeto de determinado tipo em um sistema. contudo. ■ No Windows. ■ Usando o padrão de design Singleton Uma forma comum de usar membros de classe é com o padrão de design Singleton. na pasta Samples (Exemplos) no disco rígido. consulte “Propriedades e métodos estáticos” na página 264.as. No Macintosh. Freqüentemente.macromedia. você estrutura um padrão de design como uma solução para um problema comum de programação. em cada país. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu. há somente um tabuleiro.html. Um arquivo de exemplo no disco rígido demonstra como criar um menu dinâmico com dados XML e um arquivo de classe personalizado. Por exemplo. Você pode encontrar o arquivo de origem de exemplo. Selecione File (Arquivo) > New (Novo) e. xmlmenu. Para obter informações detalhadas sobre o padrão de design Singleton. você deve encapsular a funcionalidade desse objeto em uma classe. as variáveis globais não são desejáveis para a maioria dos objetos. Embora exista apenas um objeto. em que a instância Singleton é criada apenas uma vez. em um jogo de xadrez. em seguida.fla. Uma abordagem melhor é fazer com que a classe gerencie a instância única do objeto usando membros de classe. Há vários padrões de design estabelecidos. há somente uma capital.Para obter mais informações sobre membros de classe (também chamados propriedades estáticas). Sobre como trabalhar com classes personalizadas em um aplicativo 267 . Entretanto. Esse padrão garante que uma classe tenha apenas uma instância e permite acessar globalmente a instância.com/devnet/mx/coldfusion/articles/design_patterns.as. XmlMenu. O resto da funcionalidade reside em um arquivo de classe personalizado. navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/XML_Menu. Geralmente. Um padrão de design define uma abordagem formal para estruturar o código. Salve o documento como Singleton. O exemplo chama o construtor XmlMenu() do ActionScript e passa dois parâmetros: o caminho para o arquivo de menu XML e uma referência à timeline atual. Uma das maneiras de fazer isso é usar uma variável global. da mesma maneira. O exemplo a seguir mostra um uso padrão típico do design Singleton. consulte www.

Salve o documento Singleton.fla no mesmo diretório em que foi salvo o arquivo de classe Singleton.instance. 4.instance = new Singleton(). 268 Classes .53 modified: 6/24/2008 copyright: Macromedia. Esse procedimento é geralmente chamado criação lenta e pode ajudar a tornar o seu código mais eficiente em várias circunstâncias. ou seja. // controlando alterações. O objeto Singleton só será criado quando for necessário. */ class Singleton { private static var instance:Singleton = null. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento.instance == null) { trace("creating new Singleton.").getInstance(). selecione Flash Document (Documento do Flash) para criar um arquivo FLA. em seguida. var s:Singleton = Singleton. // controlando alterações. Salve o documento do Flash. Inc. quando outro código solicitá-lo chamando o método getInstance(). public function trackChanges():Void { trace("tracking changes. e salve-o como singleton_test. Digite o seguinte código ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): Singleton. 6.getInstance().trackChanges(). s. } return Singleton. } public static function getInstance():Singleton { if (Singleton.").as.trackChanges().2. 5. Singleton. Selecione File > New e. 7. } } 3. Digite o seguinte código ActionScript na janela Script: /** Singleton class author: John Doe version: 0.

widgetCount). digite o seguinte código no Frame 1 (Quadro 1) da Timeline (Linha de tempo): // Antes que você crie qualquer instância da classe. o que pode prejudicar o desempenho do aplicativo ou do seu fluxo de trabalho. em seguida.widgetCount é igual a zero (0). evite criar muitas classes que tenham uma pequena quantidade de funcionalidade ou algumas classes que realizem muitas funcionalidades. Selecione File > New Flash document (Documento do Flash) para criar um arquivo FLA e salve-o como widget_test. selecione ActionScript File (Arquivo ActionScript) e. public function Widget() { Widget. Uma maneira fácil de fazer isso é usar uma propriedade da classe que é incrementada sempre que uma nova instância é criada. Sempre que a instrução construtora da classe Widget é chamada. No exemplo a seguir. Em widget_test. no entanto. e o valor atual de widgetCount é exibido no painel Output (Saída). clique em OK.fla. Selecione File (Arquivo) > New (Novo). 5. 3.Lembre-se de não usar nem classes de menos nem demais para o aplicativo. portanto. timelines). 4. ela adiciona 1 a widgetCount e exibe o número da instância atual que está sendo criada. porque isso pode levar a arquivos de classe malfeitos.as. Essas duas situações podem indicar design inadequado. } } 2. Para criar um contador de instância usando uma variável de classe: 1. você criará uma classe Widget que define um contador de instância simples e estático chamado widgetCount. Você deve sempre tentar usar arquivos de classe em vez de colocar código em outros lugares (por exemplo. A variável widgetCount é declarada como estática.widgetCount++.as. Digite o seguinte código na janela Script: class Widget { //Inicialize a variável de classe public static var widgetCount:Number = 0.fla no mesmo diretório que Widget. // Widget. Usando membros de classe É possível usar os membros de classe para manter as informações de estado de uma classe e suas instâncias. trace("Creating widget #" + Widget. Por exemplo. Salve o arquivo como Widget. Sempre que uma nova instância da classe é criada. o valor de widgetCount é incrementado em 1. Sobre como trabalhar com classes personalizadas em um aplicativo 269 . é inicializada como 0 somente uma vez. para acompanhar o número de instâncias que foram criadas de uma determinada classe.

7. Você acessa esses métodos como propriedades fora da classe. Ao criar classes. se tiver um método estático privado que controle o número de instâncias criadas para uma classe específica. evite uso excessivo porque.widgetCount). ou seja. eles permitem o acesso à sua implementação de classes. os usuários só poderão recuperar o valor atual usando o método getter e não poderão definir novos valores com o método setter. você pode criar uma variável de instância privada e permitir um método getter somente para a variável de contador. O Flash exibe as seguintes informações no painel Output (Saída): Widget count at Creating widget Creating widget Creating widget Widget count at start: 0 # 1 # 2 # 3 end: 3 Sobre os métodos getter e setter Getter e setter são métodos de acesso.widgetCount). como a capacidade de criar. // 3 trace("Widget count at end: " + Widget. // 1 var widget2:Widget = new Widget(). Esses métodos são usados para definir uma propriedade. As propriedades externas à classe podem ter um nome diferente do nome da propriedade na classe. O uso dos métodos getter e setter oferece algumas vantagens. dessa maneira. 270 Classes . membros que podem ser acessados como propriedades. Selecione Control > Test Movie para testar o arquivo. você não desejará permitir que os usuários alterem determinadas variáveis de suas classes. Além disso.trace("Widget count at start: " + Widget. como membros públicos. Embora os métodos getter e setter sejam úteis. entre outros problemas. A prática de OOP não recomenda o acesso direto às propriedades em uma classe. eles podem dificultar a manutenção do código em determinadas situações. Somente a instrução construtora deverá incrementar essa variável quando for chamada. Nesse caso. Por exemplo. Salve as alterações em widget_test. você não desejará que os usuários modifiquem esse contador usando o código. muitas vezes. embora defina-os na classe como métodos. // 2 var widget3:Widget = new Widget(). A criação de um método getter sem um setter é uma forma simples de tornar somente leitura determinadas variáveis de sua classe. // 0 var widget1:Widget = new Widget(). // 3 6. eles são geralmente uma interface pública para alterar os membros privados de uma classe. Isso é recomendável porque. Eles também permitem criar propriedades somente leitura e somente gravação.fla. com uma funcionalidade sofisticada. procure sempre tornar o maior número possível de suas variáveis de instância privadas e adicionar métodos getter e setter conforme adequado.

clique em OK. getUserName() e setUserName().__username = value. imagine uma classe que contenha uma propriedade userName: private var userName:String. Salve o documento do ActionScript como Login. Por exemplo.__username. } } 2. Como você pode observar.__username = username. Selecione File > New Flash document (Documento do Flash) para criar um arquivo FLA e salve-o como login_test. em seguida. // chamando o método getUserName() 5. 4.Usando métodos getter e setter A sintaxe dos métodos getter e setter é a seguinte: ■ ■ O método getter não usa parâmetros e sempre retorna um valor. selecione ActionScript File (Arquivo ActionScript) e. que serão implementados como mostra o seguinte exemplo: Para usar métodos getter e setter: 1.fla no mesmo diretório que Login.as. O método setter sempre usa um parâmetro e nunca retorna um valor. public function Login(username:String) { this. } public function getUserName():String { return this. Sobre como trabalhar com classes personalizadas em um aplicativo 271 . As classes normalmente definem métodos getter que fornecem acesso de leitura e métodos setter que fornecem acesso de gravação a uma propriedade específica. Selecione File (Arquivo) > New (Novo). Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: var user:Login = new Login("RickyM"). Digite o seguinte código na janela Script: class Login { private var __username:String. por exemplo). a classe pode ter dois métodos. } public function setUserName(value:String):Void { this. Em vez de permitir que instâncias da classe acessem diretamente essa propriedade (user. getUserName retorna o valor atual de userName.as. e setUserName() define o valor de userName como o parâmetro de seqüência de caracteres passado para o método. 3.userName = "Buster".

em seguida. 272 Classes . Selecione Control > Test Movie para testar o arquivo.addProperty() encontrado no ActionScript 1. selecione ActionScript File (Arquivo ActionScript) e. trace(userName). Salve o documento do ActionScript como Login2. } public function set userName(value:String):Void { this. Selecione File (Arquivo) > New (Novo). } } 2. public function Login2(username:String) { this. seguir as práticas recomendadas de OOP. O Flash exibe as seguintes informações no painel Output (Saída): RickyM EnriqueI Entretanto.getUserName().__username = value. Crie métodos que obtenham ou definam o valor de uma propriedade e adicione a palavra-chave get ou set antes do nome do método. se desejar uma sintaxe mais concisa. como mostra o próximo exemplo: N OT A Os métodos getter/setter implícitos são abreviações sintáticas do método Object. } public function get userName():String { return this. Para usar métodos getter e setter implícitos: 1. Digite o seguinte código na janela Script: class Login2 { private var __username:String.0.var userName:String = user. use os atributos de método get e set. Esses métodos permitem acessar as propriedades da classe de maneira direta e. trace(user. ao mesmo tempo.as. use os métodos getter e setter implícitos.setUserName("EnriqueI"). // EnriqueI 6. 3. Para definir esses métodos. clique em OK. // RickyM // chamando o método setUserName() user.getUserName()).__username = username.__username.

// chamando o método "get" var userNameStr:String = user. Os métodos getter e setter são chamados da mesma maneira que uma propriedade de mesmo nome.as. 6. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo. 4. Selecione File > New Flash document (Documento do Flash) para criar um arquivo FLA e salve-o como login2_test. Os métodos setter devem ter exatamente um parâmetro obrigatório. Por exemplo. Um método setter pode ter o mesmo nome de um método getter no mesmo escopo. ainda é possível realizar a verificação de tipo das funções de membros de classes para detectar tipos de retorno e tipos de parâmetro. A verificação de tipo em classes dinâmicas é menos estrita que em classes não-dinâmicas. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: var user:Login2 = new Login2("RickyM"). trace(user. trace(userNameStr). // EnriqueI 5. O Flash exibe as seguintes informações no painel Output (Saída): RickyM EnriqueI N OT A Não é possível usar atributos de métodos getter e setter em declarações de método de interface. Os métodos getter e setter não podem ter o mesmo nome de outras propriedades. não poderia existir também uma propriedade chamada userName na mesma classe. Diferentemente dos métodos comuns. no código anterior em que você definiu métodos getter e setter chamados userName. os métodos getter e setter são chamados sem parênteses ou argumentos. você especifica que os objetos com base nessa classe podem adicionar e acessar propriedades dinâmicas durante a execução. // RickyM // chamando o método "set" user. Você deve criar classes dinâmicas somente se precisar especificamente dessa funcionalidade. No entanto.userName).fla no mesmo diretório que Login2.Lembre-se de que os métodos getter não utilizam parâmetros. Sobre classes dinâmicas Ao adicionar a palavra-chave dynamic a uma definição de classe.userName. Sobre como trabalhar com classes personalizadas em um aplicativo 273 . pois os membros acessados na definição de classe e em instâncias da classe não são comparados com aqueles definidos no escopo da classe.userName = "EnriqueI".

consulte “Criando classes dinâmicas” na página 274. é exatamente isso que você deseja que aconteça. o compilador gerará um erro. atribua um nome ao arquivo person_test. Digite o seguinte ActionScript na janela Script: class Person { public var userName:String. Por exemplo. public var age:Number. Esse código gera um erro do compilador porque a classe Person não declara uma propriedade chamada hairColor. Salve o arquivo no disco rígido como Person.hairColor = "blue". Selecione File (Arquivo) > New (Novo). Selecione File > Save As (Salvar como). 7.fla e salve o arquivo no mesmo diretório que a classe Person criada anteriormente.Para obter informações sobre a criação de classes dinâmicas. 3. firstPerson. você criar uma instância da classe Person e tentar acessar uma propriedade da classe que não existe.as. Salve o documento do Flash. Na maioria dos casos. Para criar uma classe que não seja dinâmica: 1. Se. 6. Adicione o código a seguir para criar uma nova instância da classe Person (firstPerson) e tente atribuir um valor a uma propriedade chamada hairColor (que não existe na classe Person): var firstPerson:Person = new Person(). em seguida. 274 Classes . considere uma classe Person que define duas propriedades. // Erro. selecione ActionScript File (Arquivo ActionScript) e. Não existe uma propriedade com o nome 'hairColor'. Ou seja. userName e age. em outro script. 5. Selecione File > New Flash Document (Documento do Flash) para criar um arquivo FLA e clique em OK. } 2. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código. Criando classes dinâmicas O padrão é que as propriedades e os métodos de uma classe sejam fixos. eles são muito úteis para os programadores: mensagens de erro adequadas o ajudam a criar o código correto apontando os erros no início do processo de codificação. uma instância de uma classe não pode criar ou acessar as propriedades ou os métodos que não foram originalmente declarados ou definidos pela classe. 4. 8. Embora os erros do compilador não sejam desejáveis. clique em OK.

em alguns casos. 3.Entretanto. 8. em seguida. public var age:Number.hairColor = "blue". 9. é possível adicionar métodos e propriedades a ela durante a execução (quando o arquivo SWF é reproduzido).hairColor). Salve-o no mesmo diretório que Person2.as ao arquivo. Salve as alterações no arquivo person2_test. propriedades ou métodos de uma classe que não foram definidos na classe original. trace(firstPerson.as. o texto azul deverá ser exibido no painel Output (Saída). Esse ActionScript adiciona a palavra-chave dynamic à classe Person no exemplo anterior. Sobre como trabalhar com classes personalizadas em um aplicativo 275 . var firstPerson:Person2 = new Person2(). selecione ActionScript File (Arquivo ActionScript) e. Quando você testar o código. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o código. // azul 6.fla ao novo arquivo. Digite o seguinte código na janela Script: dynamic class Person2 { public var userName:String. 5. Selecione File > New Flash Document (Documento do Flash) para criar um arquivo FLA e clique em OK. Como a classe personalizada do Flash é dinâmica. Para criar uma classe dinâmica: 1. 7.fla. O modificador de classe dynamic permite que você faça exatamente isso. Selecione File > Save As (Salvar como) e atribua o nome person2_test. } 2. 4. você poderá adicionar e acessar. Selecione File (Arquivo) > New (Novo). durante a execução. Selecione File > Save As (Salvar como) e atribua o nome Person2. Salve as alterações no arquivo do ActionScript. clique em OK. As instâncias da classe Person2 podem adicionar e acessar as propriedades e os métodos não definidos nessa classe. Digite o código a seguir para criar uma nova instância da classe Person2 (firstPerson) e atribua um valor a uma propriedade chamada hairColor (que não existe na classe Person2). firstPerson. Salve o arquivo no disco rígido.

por exemplo. métodos e eventos (sua interface de programação). Um exemplo de encapsulamento no Flash seria definir todas as variáveis de membro e de classe como privadas e forçar as pessoas que implementam suas classes a acessar essas variáveis com os métodos getter e setter. As subclasses de classes dinâmicas também são dinâmicas. “Herança”. em vez de forçar todos os desenvolvedores a alterarem o modo como acessam as variáveis da classe. se houver necessidade de alterar a estrutura das variáveis no futuro. desde que a interface de programação não seja alterada. os objetos são considerados como “caixaspretas” que contêm ou encapsulam funcionalidade. na página 319. pois você tem a opção de torná-las dinâmicas ou não: class A dynamic class C class D dynamic extends class B extends extends class E MovieClip {} extends A {} B {} A {} extends MovieClip{} // // // // // A B C D E não é dinâmico é dinâmico é dinâmico não é dinâmico é dinâmico Para obter informações sobre subclasses. não convém tornar as classes dinâmicas. As subclasses da classe MovieClip não são dinâmicas por padrão. você precisará alterar somente o comportamento das funções getter e setter. Essa abordagem oferece algumas vantagens importantes. Sobre o uso de encapsulamento Em um projeto orientado a objeto bem elaborado. a menos que isso seja necessário. com uma exceção.Ao desenvolver aplicativos. ela permite que o criador do objeto altere a sua implementação sem a necessidade de alterar o código externo ao objeto. controle de acesso a membros.0 inclui. por exemplo. Essa abordagem permite que os programadores utilizem níveis mais elevados de abstração e fornece uma estrutura de organização para a criação de sistemas complexos. consulte Capítulo 8. Um dos motivos disso é que a verificação de tipo em classes dinâmicas é menos estrita do que em classes não-dinâmicas. sem conhecer os detalhes de sua implementação. O código externo ao objeto é forçado a interagir com a interface de programação do objeto em vez de com os detalhes da implementação. Essa forma de encapsulamento garante que. No entanto. 276 Classes . de modo que os detalhes da implementação possam permanecer privados e invisíveis para o código externo aos objetos. embora a classe MovieClip seja dinâmica. pois os membros acessados na definição e nas instâncias da classe não são comparados com os definidos no escopo da classe. ainda é possível realizar a verificação de tipo das funções de membros de classes para detectar tipos de retorno e tipos de parâmetro. O programador deve ser capaz de interagir com um objeto conhecendo somente suas propriedades. Essa implementação permite maior controle sobre as subclasses da classe MovieClip. O encapsulamento é o motivo pelo qual o ActionScript 2.

Dependendo do ambiente de codificação usado. N OT A Não é necessário adicionar esses prefixos. } public function set userName(value:String):Void { this. } } Sobre o uso da palavra-chave this em classes Use a palavra-chave this como prefixo nas suas classes para métodos e variáveis membro.__userName.__age = value. e alguns desenvolvedores consideram isso desnecessário.__age. a palavra-chave this permite identificar facilmente se uma propriedade ou um método pertence a uma classe quando tem um prefixo. mesmo dentro de uma classe. a adição de prefixos também poderá ativar referências de código. definir seus membros de instância como privados e definir métodos getter e setter para esses membros: class Person { private var __userName:String. tornando o código legível. } public function set age(value:Number):Void { this.__userName = value. } public function get age():Number { return this. private var __age:Number. Isso ajuda a qualificar as referências que você faz. pois ela pode melhorar a legibilidade e o ajuda a criar um código claro fornecendo contexto para seus métodos e variáveis. public function get userName():String { return this. Sobre como trabalhar com classes personalizadas em um aplicativo 277 . não é possível saber se a propriedade ou o método pertence à superclasse. sem a palavrachave. Você também pode usar um prefixo de nome de classe para variáveis e métodos. Embora não seja necessária. A Macromedia recomenda a adição da palavra-chave this como um prefixo.O código a seguir mostra como você poderia modificar a classe Person dos exemplos anteriores.

testa ou depura um arquivo FLA. seguida do identificador do nome da classe e de chaves ({}). consulte o Capítulo 8. uma classe consiste em duas partes principais: a declaração e o corpo. “Herança”. é hora de aprender algumas diretrizes gerais para a criação desses arquivos. Tudo entre as chaves chama-se corpo da classe e é onde as propriedades e os métodos da classe são definidos. Por exemplo. Tudo o que estiver dentro das chaves é o corpo da classe. A T E NÇ ÃO ■ ■ ■ ■ ■ ■ ■ ■ O código do ActionScript em arquivos externos é compilado em um arquivo SWF quando você publica.Exemplo: Criando classes personalizadas Depois de explorar os conceitos básicos de arquivos de classes e os tipos de elementos que eles contêm. seguida pelo nome da classe (Person. Este exemplo contém os seguintes tópicos: “Sobre as diretrizes gerais para criação de classes” na página 279 “Criando e empacotando arquivos de classes” na página 281 “Criando a função construtora” na página 283 “Adicionando métodos e propriedades” na página 285 278 Classes . neste caso) e chaves ({}). No final deste exemplo. como mostra o seguinte exemplo: class className { // corpo da classe } Quando desejar. Portanto. exporta. será preciso salvá-lo e recompilar os arquivos FLA que o utilizam. Portanto. Na sua forma mais básica. Para obter mais informações sobre herança e subclasses. O segundo exemplo mostra como usar os arquivos de classes com um arquivo FLA. você pode definir classes somente em arquivos ActionScript externos. O primeiro exemplo deste capítulo mostra como criar classes e empacotá-las. uma classe declaration consiste na palavra-chave class. a organização básica de seus arquivos de classes será a seguinte: Comentários de documentação Declaração da classe Função construtora Corpo da classe Você não cria subclasses neste capítulo. não é possível definir uma classe em um script de quadro no arquivo FLA. você criará um novo arquivo para este exemplo. Como vimos em “Criando arquivos de classes personalizados” na página 249. A declaração da classe consiste pelo menos na instrução class. se você fizer qualquer alteração em um arquivo externo. na página 319.

length. Você pode encontrar o arquivo de origem de exemplo. na pasta Samples (Exemplos) no disco rígido. for (i = 0 . No Macintosh.■ ■ “Controlando o acesso de membros em classes” na página 288 “Documentando as classes” na página 290 Um arquivo de exemplo no disco rígido demonstra como criar um menu dinâmico com dados XML e um arquivo de classe personalizado. O exemplo chama o construtor XmlMenu() do ActionScript e passa dois parâmetros: o caminho para o arquivo de menu XML e uma referência à timeline atual. XmlMenu. O resto da funcionalidade reside em um arquivo de classe personalizado. i++) { trace(i + " = " + my_array[i]). // quantidade do produto ■ Inicialize as variáveis locais ao declará-las. ■ No Windows. var i:Number. consulte “Adicionando métodos e propriedades” na página 285. } ■ ■ Evite usar declarações locais que ocultem declarações de nível superior.fla.as. coloque apenas uma declaração por linha e não coloque o mesmo tipo ou tipos diferentes de declarações na mesma linha. ■ Em geral. "two". Por exemplo. navegue até Macintosh HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/XML_Menu. Formate as declarações como no seguinte exemplo: private var SKU:Number. Declare as variáveis antes de usá-las (incluindo repetições). como mostra o seguinte exemplo: Exemplo: Criando classes personalizadas 279 . Você praticará essas diretrizes nos próximos exemplos. Por exemplo. i < my_array. ■ Sobre as diretrizes gerais para criação de classes Você deve usar as diretrizes a seguir ao criar arquivos de classes personalizados. xmlmenu. a menos que o valor inicial seja determinado por um cálculo. // número SKU do produto (identificação) private var quantity:Number. Elas o ajudarão a criar classes corretas e bem estruturadas. o código a seguir predeclara a variável de iterador de repetição (i) antes de usá-la para a repetição for: var my_array:Array = new Array("one". Para obter informações sobre a inicialização de variáveis. não declare uma variável duas vezes. "three"). navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\XML_Menu.

sublinhado (_) ou cifrão ($). o primeiro caractere deve ser uma letra.// código incorreto var counter:Number = 0. ■ Não atribua diversas variáveis a um único valor em uma instrução. ou seja. número. ■ Sobre a atribuição de nomes a arquivos de classes Os nomes de classes devem ser identificadores. é preferível tornar as variáveis de membro privadas e permitir o acesso a essas variáveis somente por meio de um pequeno grupo de funções getter e setter. for (counter = 0. incluindo o uso de maiúsculas e minúsculas. Verifique se essas variáveis são explicitamente públicas antes de criá-las dessa maneira. Defina a maioria das variáveis de membro como privadas a menos que haja um bom motivo para torná-las públicas. tente usar somente letras em nomes de classes. counter++) { // instruções. pois isso dificulta a leitura. counter <= 4. ou // formulário incorreto class User { private var m_username:String.as class Rock { // Corpo da classe Rock } 280 Classes . o arquivo ActionScript que contém a definição da classe deverá se chamar Rock. como você pode observar nos seguintes exemplos de código ActionScript: // formulário incorreto xPos = yPos = 15. Do ponto de vista do design. sublinhado ou cifrão. se você criar uma classe chamada Rock. } } Esse código declara a mesma variável dentro de um bloco interno. function myMethod() { var counter:Number.as: // No arquivo Rock. O nome da classe deve corresponder exatamente ao do arquivo ActionScript que o contém. e os caracteres subseqüentes devem ser uma letra. Como prática recomendada. } ■ Só crie variáveis de instância públicas ou variáveis de membro ou de classe estáticas públicas se houver um bom motivo para isso. No exemplo a seguir. m_password:String.

Selecione File > Save As e crie um novo subdiretório chamado com e. Para criar um arquivo de classe e uma declaração de classe: 1. Isso é muito importante. consulte “Nomeando classes e objetos” na página 776. decida onde deseja armazená-lo. Vários editores externos. você irá criar. a classe não será compilada. incluindo o uso de maiúsculas e minúsculas. você adiciona ao caminho de classe do Flash o diretório onde deseja armazenar o aplicativo e os arquivos de classes. Para obter mais informações sobre nomeação de arquivos de classe. podem criar esses arquivos. salve o documento do Flash no diretório atual.Você irá nomear e criar uma definição de classe na seção a seguir. nomear e empacotar os arquivos de classe usados neste exemplo (“Exemplo: Criando classes personalizadas” na página 278). Selecione File (Arquivo) > New (Novo).as). em seguida. em seguida. Selecione File (Arquivo) > New (Novo) Flash Document (Documento do Flash) para criar um documento FLA e clique em OK. Os arquivos AS são criados com a ferramenta de criação do Flash ou com um editor externo. nomear e empacotar os arquivos de classes. 4. Nas etapas a seguir. se esses dois nomes forem diferentes. faça o seguinte: 2. selecione ActionScript File (Arquivo ActionScript) e. Os arquivos de classes também são denominados arquivos do ActionScript (AS). As seções subseqüentes mostram como criar arquivos de classes completos (embora simples). Criando e empacotando arquivos de classes Nesta seção.fla ao novo arquivo. Para obter informações sobre caminhos de classe. você salvará o arquivo de classe e o arquivo FLA de aplicativo que usa esse arquivo no mesmo diretório para fins de simplicidade. Ao criar um arquivo de classe. clique em OK. Você adicionará conteúdo a esse documento do Flash em uma etapa posterior. Para obter informações detalhadas sobre pacotes. ao criar um aplicativo. 3. consulte “Sobre a definição e a modificação do caminho de classe” na página 255. Consulte a seção “Criando e empacotando arquivos de classes” na página 281 para criar. “Comparação de classes e pacotes” na página 243 e “Trabalhando com pacotes” na página 244. também será necessário informar ao Flash como ele poderá encontrar o arquivo. como o Macromedia Dreamweaver e o Macromedia Flex Builder. se desejar verificar a sintaxe. em seguida. Selecione File > Save as (Salvar como) e atribua o nome package_test. Entretanto. Normalmente. Exemplo: Criando classes personalizadas 281 . N OT A O nome da classe (Person) deve corresponder exatamente ao nome do arquivo AS que a contém (ClassA. consulte “Sobre pacotes” na página 242.

Salve as alterações nos arquivos de classes ClassA. use pacotes para organizar seus arquivos de classes. Por exemplo. Digite o seguinte código na janela Script: class com.YourClass é armazenada no diretório com/macromedia/docs.as ao novo arquivo e salve-o no mesmo diretório que o arquivo ClassA. 9. Digite o seguinte código na janela Script: class com.docs. Salve o documento do ActionScript ClassA.as deve ser semelhante à seguinte: class com. b.macromedia. selecione ActionScript File (Arquivo ActionScript) e.utils.macromedia.macromedia.utils. consulte “Sobre a definição e a modificação do caminho de classe” na página 255. Classes .macromedia. Salve o documento atual do ActionScript no diretório utils e atribua o nome ClassA.as ao arquivo. Se estiver criando várias classes personalizadas. Selecione File > Save As.macromedia. as quais são abordadas nas seções subseqüentes. uma classe chamada com. c.docs. ou seja. Os nomes das classes devem ser totalmente qualificados no arquivo em que forem declarados.utils.macromedia.ClassA { } O código anterior cria uma nova classe chamada ClassA no pacote com. No subdiretório com. eles devem refletir o diretório (pacote) em que estão armazenados. Os arquivos de classes usados em um arquivo FLA são importados para um arquivo SWF quando compilados. 5.a. 7. 6.as. Selecione File (Arquivo) > New (Novo). O código criado em um arquivo de classe deve ter determinada metodologia e organização. A declaração da classe no arquivo YourClass. No subdiretório macromedia.as.ClassB { } 8. Um pacote é um diretório que contém um ou mais arquivos de classes e reside em um diretório de caminho de classe designado. em seguida. atribua o nome ClassB.as criado em uma etapa anterior.YourClass { // sua classe } N O TA 282 Você criará a declaração de classe que reflete o diretório de pacotes na seção a seguir. O código anterior cria uma nova classe chamada ClassB no pacote com.as e ClassB. 10. “Exemplo: Criando classes personalizadas” na página 278. clique em OK.utils. crie um novo subdiretório chamado macromedia. Para obter mais informações sobre caminhos de classes. crie um novo subdiretório chamado utils.

Nesta parte do capítulo. você criará o que chamamos de função construtora do arquivo de classe. o nome completo da classe precisará ser com. Lembre-se de que o nome do pacote também corresponde à estrutura de diretório determinada.Por essa razão. Os nomes de pacotes devem ser intuitivos e facilmente identificáveis pelos desenvolvedores. será necessário modificar as instruções de declaração dessas classes para refletir sua nova localização. Se a estrutura do pacote for alterada no futuro. consulte “Criando a função construtora” na página 283. Escolha o nome de pacote que deseja usar. instruções e declarações em seções posteriores. Crie a estrutura de diretório necessária após escolher o nome do pacote. 2. Para continuar a criar os arquivos de classes.ClassA no arquivo de classe com/macromedia/utils/ ClassA.macromedia. se você decidir mover os arquivos das classes depois de criá-los. 3.utils precisarão ser colocadas na pasta com/macromedia/utils de seu disco rígido.utils. Exemplo: Criando classes personalizadas 283 . você precisará criar a estrutura de diretório com/macromedia/utils e colocar suas classes na pasta utils. Por exemplo.macromedia. todas as classes do pacote com. Por exemplo. 4.utils ao pacote.utils para todas as classes criadas nesse pacote. se o nome da classe for ClassA. se tiver atribuído o nome com. além disso. é recomendável planejar a sua estrutura de pacotes antes de começar a criar as classes. N O TA Você aprenderá a criar comentários. De outra forma. Por exemplo. Criando a função construtora Você já aprendeu a criar a declaração da classe em “Criando e empacotando arquivos de classes” na página 281.macromedia.as.macromedia. todas as instruções de importação ou referências a uma classe desse pacote precisarão ser modificadas. Para empacotar os arquivos de classes: 1. Use o prefixo com. lembre-se de modificar não só a estrutura de diretório como também o nome do pacote em cada arquivo de classe.

__name = uname. Uma função construtora de classe é uma função especial chamada automaticamente quando você cria uma instância de uma classe usando o operador new.__age = age. Por exemplo. a classe Person criada anteriormente continha a seguinte função construtora: // Função construtora da classe Person public function Person (uname:String. funções construtoras sobrecarregadas não são permitidas no ActionScript 2. } Considere os seguintes pontos ao criar funções construtoras: ■ Se nenhuma função construtora for explicitamente declarada. As instruções a seguir são chamadas das funções construtoras relativas à classe Array de nível superior e à classe Person personalizada: var day_array:Array = new Array("Sun". faça o download dos arquivos de classe em www. o compilador automaticamente criará uma função construtora vazia. você adicionará uma função especial denominada função construtora. "Thu". 2. "Wed".Construtores são funções usadas para inicializar (definir) as propriedades e os métodos de uma classe. this. Na OOP. 30). ■ ■ O termo construtor também é normalmente usado quando você cria (instancia) um objeto com base em uma classe específica. "Tue". Para adicionar funções construtoras aos arquivos de classes: 1. construtores são funções em uma definição de classe que têm o mesmo nome da classe.com/flash/learnas/classes/.helpexamples. Por definição. Se você não desejar avançar no exemplo.as na ferramenta de criação do Flash. o código a seguir define uma classe Person e implementa uma função construtora. A função construtora tem o mesmo nome da classe que a contém. a função construtora inicializa cada nova instância de uma classe. ou seja. NO T A Este exercício faz parte do “Exemplo: Criando classes personalizadas” na página 278. "Mon". se você não criar uma função cujo nome corresponda ao da classe. Por exemplo. Modifique o arquivo de classe existente de acordo com o seguinte código (as alterações a serem feitas estão em negrito): 284 Classes .0. Uma classe pode conter apenas uma função construtora. "Sat"). Em seguida. var somePerson:Person = new Person("Tom". Abra o arquivo de classe ClassA. Uma função construtora não deve ter nenhum tipo de retorno. age:Number) { this. "Fri".

as e ClassB. N OT A Os três exercícios a seguir fazem parte do “Exemplo: Criando classes personalizadas” na página 278. Modifique o arquivo ActionScript ClassA.utils. faça o download dos arquivos de classe em www. _className. Adicionando métodos e propriedades Para criar as propriedades das classes ClassA e ClassB. que contém o nome da classe atual.as na ferramenta de criação do Flash. } } O código anterior define um método construtor para a classe ClassA.com/flash/learnas/classes/. Abra ClassA. Modifique o arquivo de classe de acordo com o seguinte código (as alterações a serem feitas estão em negrito): class com.utils.macromedia.macromedia. 2. Exemplo: Criando classes personalizadas 285 .macromedia. consulte “Adicionando métodos e propriedades” na página 285.as de acordo com o seguinte código (as alterações a serem feitas estão em negrito): class com. Para continuar a criar o arquivo de classe. Esse construtor envia uma seqüência de caracteres simples para o painel Output (Saída) que informa quando uma nova instância da classe foi criada.ClassA { static var _className:String. 3.ClassA { function ClassA() { trace("ClassA constructor"). 4.utils.class com.ClassB { function ClassB() { trace("ClassB constructor").as na ferramenta de criação do Flash. function ClassA() { trace("ClassA constructor"). } } O bloco de código anterior adiciona uma nova variável estática. use a palavra-chave var para definir variáveis. Para adicionar propriedades às classes ClassA e ClassB: 1. Salve os dois arquivos do ActionScript antes de continuar. } } 5. Se você não desejar avançar no exemplo.helpexamples. Abra o arquivo de classe ClassB.

consulte “Sobre propriedades (membros) e métodos públicos. mas não é obrigatória. Os membros de uma classe consistem em propriedades (declarações de variáveis) e métodos (definições de funções).as na ferramenta de criação do Flash. 286 Classes . A sintaxe pós-dois-pontos (por exemplo.macromedia. consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85.as e ClassB. Modifique o arquivo de classe ClassA de acordo com o seguinte código (as alterações a serem feitas estão em negrito): class com. Se o tipo de dados correto não for usado no arquivo FLA que importa essa classe.utils. Por convenção. Para obter informações sobre membros. D IC A 4. Esse é um exemplo de atribuição estrita de tipos de dados. Quando você atribui um tipo a uma variável usando o formato var variableName:variableType. Modifique a classe ClassB e adicione a variável estática para tornar essa classe semelhante ao código anterior. Para obter mais informações sobre como atribuir tipos de dados estritos. Salve os dois arquivos do ActionScript antes de continuar. ocorrerá um erro durante a compilação. var username:String e var age:Number) é usada nas declarações de variáveis. } function doSomething():Void { trace("ClassA . caso contrário. Abra ClassA.ClassA { static var _className:String. } } O bloco de código em negrito cria um novo método na classe que envia uma seqüência de caracteres para o painel Output (Saída). Você deve declarar e definir todas as propriedades e métodos no corpo da classe (entre as chaves [{}]). privados e estáticos” na página 262. 2. as propriedades da classe são definidas na parte superior do corpo da classe. function ClassA() { trace("ClassA constructor"). o compilador ActionScript verifica se os valores atribuídos a essa variável correspondem ao tipo especificado.doSomething()"). o compilador gerará um erro. Para adicionar métodos às classes ClassA e ClassB: 1.3. A sua definição nesse local facilita a compreensão do código.

} Quando você inicializa as propriedades inline. com os valores padrão. } } 5. selecione Tools (Ferramentas) > Check Syntax (Verificar sintaxe) para verificar a sintaxe do arquivo do ActionScript. } function doSomething():Void { trace("ClassB . quando as declara. copie e cole o código completo na janela Script antes de continuar. Para inicializar propriedades inline: 1. Ou seja. valores booleanos. var username:String = "John Doe".3. Boolean. como mostra o seguinte exemplo: class Person { var age:Number = 50.utils.utils. null e undefined. Em ClassA. copie e cole o código completo na janela Script antes de continuar: class com.as e ClassB. Number.macromedia. Modifique o arquivo de classe ClassA de acordo com o seguinte ActionScript (as alterações a serem feitas estão em negrito): class com.ClassB { static var _className:String. 4.as da mesma maneira que foi feito para ClassA. a expressão à direita de uma atribuição deve ser uma constante de tempo de compilação. compare o ActionScript do script com o código completo criado na etapa anterior. Verifique a sintaxe de ClassB.ClassA { static var _className:String = "ClassA". function ClassB() { trace("ClassB constructor").as. Se houver algum erro no painel Output.as na ferramenta de criação do Flash. a expressão não pode se referir a algo definido durante a execução. Você pode inicializar as propriedades inline. function ClassA() { trace("ClassA constructor"). Se não for possível corrigir os erros do código.macromedia. Se algum erro for informado no painel Output. números.as.doSomething()"). Salve os dois arquivos do ActionScript antes de continuar. Exemplo: Criando classes personalizadas 287 . As constantes de tempo de compilação incluem literais de seqüência de caracteres. bem como funções construtoras para as seguintes classes de nível superior: Array. ou seja. Object e String. Abra ClassA. 2.

apenas um array é criado para todas as instâncias da classe. Modifique o arquivo de classe ClassB e adicione a propriedade inline. Para continuar a criar o arquivo de classe. Por exemplo. } } A única diferença entre o arquivo de classe existente e o bloco de código anterior é que agora há um valor definido para a variável estática _className.userName. “ClassA”. private function getUserName():String { return this. } } Classes . Entretanto. alterando o valor para “ClassB”. } // Construtor: public function LoginClass(user:String) { this. consulte “Controlando o acesso de membros em classes” na página 288. 3. o código a seguir declara uma variável privada (uma propriedade) e um método privado (uma função). em alguns casos. Controlando o acesso de membros em classes O padrão é que qualquer propriedade ou método de uma classe possa ser acessado por qualquer outra classe: todos os membros de uma classe são públicos por padrão. e não a variáveis de classe (variáveis que pertencem à classe).doSomething()"). Essa regra aplica-se apenas a variáveis de instância (variáveis que são copiadas em cada instância de uma classe). 4. Você precisará tornar esses membros privados (disponíveis apenas para a classe que os declara ou os define). class LoginClass { private var userName:String. Especifique membros públicos ou privados usando o atributo de membro public ou private.userName = user.} function doSomething():Void { trace("ClassA . A classe a seguir (LoginClass) define uma propriedade privada chamada userName e um método privado chamado getUserName(). N OT A 288 Quando você inicializa arrays inline. talvez você queira proteger os dados ou os métodos de uma classe do acesso de outras classes. Salve os dois arquivos do ActionScript antes de continuar.

doSomething()").as do ActionScript e adicione o acesso aos mesmos métodos e propriedades que os da classe ClassA. isso significa que eles podem ser acessados por scripts externos.as na ferramenta de criação do Flash. 3. resultará em um erro do compilador indicando que o método é privado e não pode ser acessado: import com.utils. var a:ClassA = new ClassA(). 4. ou seja. Abra ClassA.macromedia. e não por scripts externos. o código a seguir. não podem acessar as propriedades e os métodos declarados de forma privada. No exemplo a seguir. portanto. doSomething():Void { . A variável estática _className é definida como privada e. Se você não desejar avançar no exemplo. trace(a. faça o download dos arquivos de classe em www. e não no nível da instância. adicionado ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) em um arquivo FLA._className). Modifique o arquivo ClassB.macromedia. Para controlar o acesso a membros: 1.com/flash/learnas/classes/. Por exemplo. Salve os dois arquivos do ActionScript antes de continuar. As instâncias da classe original.ClassA. ou as instâncias das subclasses dessa classe.as e ClassB.as para que o conteúdo esteja de acordo com o seguinte ActionScript (as alterações a serem feitas estão em negrito): class com. você alterará o acesso a membros em seus arquivos de classes. // Erro. 2.utils. public function trace("ClassA } public function trace("ClassA } } ClassA() { constructor"). só pode ser acessada a partir da classe.ClassA { private static var _className:String = "ClassA".Os membros privados (propriedades e métodos) são acessíveis apenas para a classe que define esses membros e para as subclasses dessa classe original. O membro é privado e não pode ser acessado. os membros privados só podem ser acessados nas definições da classe. Exemplo: Criando classes personalizadas 289 . Modifique o arquivo ActionScript ClassA. Uma instância de classe ClassA ou ClassB não pode acessar membros privados.helpexamples. NO TA Este exercício faz parte do “Exemplo: Criando classes personalizadas” na página 278. O código anterior define os dois métodos (o construtor de ClassA e o método doSomething()) como públicos.

290 N O TA Abra ClassA. interface ou membro e coloque-o diretamente antes da declaração.as e ClassB. Este exercício faz parte do “Exemplo: Criando classes personalizadas” na página 278. Use comentários de documentação para descrever as especificações do código. durante a execução. Para continuar a criar o arquivo de classe. o Flash Player não distingue entre membros privados e públicos. Documentando as classes O uso de comentários em suas classes e interfaces é importante ao documentá-las para outros usuários. classes. Se precisar documentar mais informações que não caibam nos comentários de documentação. use comentários de implementação (no formato de bloco ou de uma única linha. Use comentários de implementação para fazer comentários sobre o código ou sobre a implementação de seções específicas do código. Classes . eles são uma maneira comum de estruturar comentários em um arquivo de classe que você pode usar nos arquivos AS. Por exemplo. talvez você deseje distribuir seus arquivos de classes na comunidade Flash ou esteja trabalhando com uma equipe de designers ou desenvolvedores que usarão esses arquivos em seu trabalho ou como parte de um projeto do qual você participe. Por exemplo. N OT A Não inclua comentários que não estejam diretamente relacionados à classe que está sendo lida. os comentários de implementação devem vir logo após a declaração. Inclua um comentário de documentação para cada classe.com/flash/learnas/classes/. Os comentários de documentação são delimitados por /** e */. métodos e constuções. Os dois tipos de comentários usam delimitadores ligeiramente diferentes. N OT A Os comentários da documentação não são uma construção de linguagem no ActionScript 2.as na ferramenta de criação do Flash. conforme descrito em “Sobre comentários” na página 139). Se você não desejar avançar no exemplo.helpexamples. Quando adicionados. No entanto. mas não a implementação.O controle de acesso a membros é um recurso somente de tempo de compilação. Há dois tipos de comentários em uma classe ou arquivo de interface típico: comentários de documentação e comentários de implementação. faça o download dos arquivos de classe em www. consulte “Documentando as classes” na página 290. não inclua comentários que descrevam o pacote correspondente. Para documentar os arquivos de classes: 1. e os de implementação são delimitados por /* e */. Use os comentários de documentação para descrever interfaces. A documentação ajuda outros usuários a compreender a finalidade e as origens da classe.0.

Exemplo: Usando arquivos de classes personalizados no Flash 291 .utils. Para obter informações gerais sobre comentários. consulte “Criando comentários adequados” na página 780.as e ClassB. Você também pode adicionar comentários em bloco.doSomething()"). data da última modificação.helpexamples.ClassA { private static var _className:String = "ClassA".com/flash/learnas/classes/. “Comentários de várias linhas” na página 140 e “Comentários finais” na página 142.as no disco rígido.2. informações de copyright ou possíveis problemas/erros existentes no arquivo. Para aprender a usar esses arquivos de classes personalizados em um arquivo SWF. consulte “Comentários de linha única” na página 140. Para obter informações sobre a criação de comentários úteis no código. alterando o nome da classe e outras informações aplicáveis. ou você pode fazer download deles em www. como autor da classe. de uma linha ou finais ao código da classe. Se você concluiu “Exemplo: Criando classes personalizadas” na página 278. 3. Salve os dois arquivos do ActionScript antes de continuar.as do ActionScript.1 6/21/2005 copyright Macromedia. localize os arquivos ClassA. O código acima adicionou um comentário ao início do arquivo de classe. Adicione um comentário semelhante ao início do arquivo ClassB. 4.macromedia. Inc. Exemplo: Usando arquivos de classes personalizados no Flash Esse exemplo usa arquivos de classe criados no exemplo chamado “Exemplo: Criando classes personalizadas” na página 278. É sempre recomendável adicionar comentários aos arquivos do ActionScript e do Flash para que você possa incluir informações úteis. public function trace("ClassA } public function trace("ClassA } } ClassA() { constructor"). doSomething():Void { . consulte “Exemplo: Usando arquivos de classes personalizados no Flash” na página 291. Modifique o arquivo de classe ClassA e adicione o novo código ao início do arquivo (as alterações a serem feitas estão em negrito): /** ClassA class version 1. */ class com.

Se uma classe estiver em um diretório do caminho de classe de nível superior. ou seja. depois. A combinação do nome da classe e do caminho do pacote correspondente é o nome da classe totalmente qualificado. tudo funcionará de forma integrada. Por exemplo. o que permite usar o nome abreviado de uma classe em vez de seu nome de classe totalmente qualificado.docs.macromedia. você aprenderá o funcionamento dos caminhos de classe. Nos exercícios a seguir.ClassName(). aprenderá a usar os arquivos de classe no aplicativo. Também é possível usar o nome totalmente qualificado da classe para atribuir um tipo às variáveis. Agora você está pronto para continuar com o exemplo. Você poderá usar as classes personalizadas criadas no “Exemplo: Criando classes personalizadas” na página 278 com um arquivo FLA. cada ponto representa um diretório aninhado. seu nome de classe totalmente qualificado será o nome da classe.utils. Importando classes e pacotes Para fazer referência a uma classe em outro script. você deve incluir o nome do pacote da classe antes do nome da classe.as na pasta utils. Os caminhos de pacote são hierárquicos.) para separar os nomes de diretórios de pacote. Salve os arquivos de classes ClassA.learnAs2. Para especificar caminhos de pacote. Suas classes serão compiladas no arquivo SWF quando você publicar o documento e. Neste exemplo. 292 Classes .macromedia. adicione uma nova pasta chamada macromedia. Na pasta com. Nessa pasta. Crie uma subpasta chamada com no diretório atual.as e ClassB. você não precisará usar o nome totalmente qualificado da classe toda vez que usar a classe. vá para “Importando classes e pacotes” na página 292.Como o nome do pacote do arquivo de classe ClassA é com. como mostra o seguinte exemplo: var myInstance:com. você pode especificar o seu nome totalmente qualificado. Também pode usar o caractere curinga (*) para importar todas as classes de um pacote.docs. Para criar uma instância dessa classe. Para continuar esse exemplo. você usará as classes personalizadas para criar um pequeno aplicativo no Flash. use a notação de ponto (.ClassName = new com.learnAs2. você precisará salvar os arquivos de classes na estrutura de diretório adequada.ClassA. e não em um subdiretório do diretório do caminho de classe.macromedia. adicione um terceiro e último subdiretório chamado utils. suponha que você tenha criado uma classe chamada ClassName que resida no pacote com/macromedia/docs/learnAs2 no caminho de classe. Se usar o caractere curinga. Você pode usar a instrução import para importar pacotes para um script. e a importar classes e pacotes.

Posteriormente. como neste exemplo: var myUser:UserClass = new UserClass(). como no seguinte código: import com. você cria uma nova instância da classe ClassA.Por exemplo.as. Em outro script.docs. // Construtor ClassA var b = new ClassB(). Se você precisar das classes ClassA e ClassB. 3. var myB:ClassB = new ClassB().util. suponha que você tenha importado a classe acima para um script usando a instrução import. faça o download dos arquivos de classe em www. Você pode usar o caractere curinga (*) para importar todas as classes de determinado pacote.macromedia. no mesmo script.learnAs2. que faz com que o método construtor envie uma mensagem para o painel Output (Saída).as e ClassB. você poderia importar as duas classes desse pacote usando o caractere curinga.helpexamples. Abra o arquivo chamado package_test.macromedia.com/flash/learnas/classes/. A instrução import aplica-se apenas ao script atual (quadro ou objeto) no qual ela é chamada. Uma instância da classe ClassB também é criada e envia mensagens de depuração para o painel Output.*. Para importar uma classe ou um pacote: 1. ClassA. // Construtor ClassB O bloco de código anterior importa primeiro cada uma das classes do pacote com. 2. Salve as alterações no documento do Flash antes de continuar.fla. Em seguida.utils com dois arquivos de classes do ActionScript.macromedia.UserClass.utils. Digite o seguinte código na janela Script: import com.utils. ela não será incluída no bytecode do arquivo SWF resultante e não estará disponível para os arquivos SWF que poderão ser carregados pelo arquivo FLA que contém a instrução import. como mostra o seguinte exemplo: import com.macromedia. NO T A O exercício a seguir faz parte do “Exemplo: Usando arquivos de classes personalizados no Flash” na página 291 que continua os exemplos de “Exemplo: Criando classes personalizadas”.*. Se uma classe importada não for utilizada em um script. Exemplo: Usando arquivos de classes personalizados no Flash 293 . var a = new ClassA(). Suponha que você tenha um pacote chamado com.utils usando o caractere curinga (*).macromedia. O exemplo a seguir mostra que é possível fazer referência às duas classes diretamente no mesmo script: var myA:ClassA = new ClassA(). você poderia fazer referência a essa classe por seu nome abreviado.

macromedia. Por exemplo. Consulte “Criando classes dinâmicas” na página 274. Para obter mais informações sobre como atribuir tipos de dados estritos. // Construtor ClassA a. var a:ClassA = new ClassA().*. depois. A exceção é se você declarar a classe como dinâmica usando a palavra-chave dynamic. criar uma instância dessa classe.doSomething(). No exemplo iniciado em “Exemplo: Usando arquivos de classes personalizados no Flash” na página 291. Você também poderia criar sua própria classe. como faria ao criar uma instância de uma classe de nível superior do ActionScript (como a classe Date ou Array). você modificou um arquivo FLA para importar as classes de modo que não precisasse fazer sempre referência a elas por seus nomes totalmente qualificados. Abra o arquivo chamado package_test.doSomething(). e. como um script de quadro no documento do Flash package_test. 294 Classes . consulte “Sobre a atribuição de tipos de dados e a atribuição estrita de tipos de dados” na página 85. 2. Para criar uma instância de uma classe personalizada. Criando instâncias de classes em um exemplo As instâncias são objetos que contêm todas as propriedades e métodos de determinada classe. portanto. // chama o método doSomething() do ClassA var b:ClassB = new ClassB(). // chama o método doSomething() do ClassB A atribuição de um tipo de dados aos objetos nesse exemplo de código permite ao compilador garantir que você não tentará acessar as propriedades ou os métodos que não estão definidos em sua classe personalizada.) NO TA O exercício a seguir faz parte do “Exemplo: Usando arquivos de classes personalizados no Flash” na página 291 que continua os exemplos de “Exemplo: Criando classes personalizadas”. use o operador new.fla. arrays são instâncias da classe Array. // Construtor ClassB b. Para criar uma nova instância das classes ClassA e ClassB: 1.Para continuar usando esses arquivos de classes em um arquivo do Flash.fla. Digite o seguinte código em negrito na janela Script: import com. Faça referência à classe usando o seu nome totalmente qualificado ou importe-a (como demonstrado em “Importando classes e pacotes” na página 292.utils. você pode usar quaisquer métodos ou propriedades dessa classe com qualquer instância de um array. consulte “Criando instâncias de classes em um exemplo” na página 294. e atribuir uma variável a ela. A próxima etapa deste exemplo (“Exemplo: Usando arquivos de classes personalizados no Flash” na página 291) será criar uma instância das classes ClassA e ClassB em um script. como UserSettings.

Esse ActionScript cria uma nova classe chamada Animal que possui um método construtor que envia uma seqüência de caracteres para o painel Output (Saída). 6.3. Selecione File > Save As. Insira o nome do símbolo de animal e selecione a opção Movie Clip (Clipe de filme). em seguida. } } 2.fla ao arquivo e salve o arquivo na mesma pasta que o arquivo Animal. Digite o seguinte código na janela Script: class Animal { public function Animal() { trace("Animal::constructor"). Atribuindo uma classe a símbolos no Flash Você também pode atribuir uma classe aos símbolos usados em um arquivo do Flash. Salve as alterações no arquivo do ActionScript. 4. como um objeto de clipe de filme no Stage (Palco). Selecione File (Arquivo) > New (Novo).). atribua o nome Animal. clique em OK. Lembre-se de que também é possível criar instâncias de classes internas ou de nível superior do ActionScript (consulte “Sobre como trabalhar com classes internas” na página 312. Selecione File > New Flash Document (Documento do Flash) para criar um arquivo FLA e clique em OK. 8.as e salve o arquivo no disco rígido. Selecione File > Save As (Salvar como). Para continuar usando esses arquivos de classes em um arquivo do Flash.as criado na etapa 2. 3. Agora você já deve saber como criar e usar classes em documentos do Flash. selecione ActionScript File (Arquivo ActionScript) e. consulte “Atribuindo uma classe a símbolos no Flash” na página 295. atribua o nome animal_test. 5. Selecione Insert (Inserir) > New Symbol (Novo símbolo) para iniciar a caixa de diálogo Create New Symbol (Criar novo símbolo). Salve as alterações no arquivo FLA antes de continuar. Clique no botão Advanced (Avançado) no canto inferior direito da caixa de diálogo Create New Symbol (Criar novo símbolo) para ativar mais opções. Atribuindo uma classe a símbolos no Flash 295 . 9. Para atribuir uma classe a um símbolo de clipe de filme: 1. 7.

clique com o botão direito do mouse no símbolo na biblioteca do documento e selecione Properties (Propriedades) ou Linkage no menu de contexto.fla. o usuário deverá aguardar o download de todo o código das classes até o quadro aparecer.0 como Animal (para que corresponda ao nome de classe especificado na etapa 3). arraste um componente ProgressBar do painel Components (Components) até o Stage e atribua o nome de instância my_pb. em seguida. você pode exibir uma curta animação do carregamento nos primeiros quadros da Timeline durante o download do código das classes do quadro posterior. Compilando e exportando classes Por padrão. arraste-a por cima da camada de conteúdo e renomeia-a como actions. NO TA 12. Se precisar modificar as propriedades de vinculação de Movie Clip. 296 Classes . Se as classes forem exportadas no primeiro quadro. selecione Flash Document (Documento Flash). O painel Output exibe o texto da função construtora da classe Animal.O botão Advanced está disponível quando se está no modo básico da caixa de diálogo Create New Symbol. Especificando um quadro posterior na Timeline. Esse recurso é útil. Para especificar o quadro de exportação das classes de um documento Flash: 1. Selecione 13. quando um arquivo SWF usa muitas classes que exigem um longo tempo de download (como componentes). Crie uma nova camada. 11. as classes usadas por um arquivo SWF são empacotadas e exportadas no primeiro quadro desse arquivo. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme). Insira o valor de identificador animal_id e defina a classe ActionScript 2. Selecione File > New e. 10. Salve o novo documento como exportClasses. Renomeie a camada padrão como content. a caixa de seleção Export in First Frame (Exportar no primeiro quadro) e clique em OK para aplicar as alterações e fechar a caixa de diálogo. Clique na caixa de seleção Export for ActionScript (Exportar para ActionScript) na seção Linkage (Vinculação). 3. A ativação dessa opção permite anexar instâncias desse símbolo dinamicamente aos documentos do Flash durante a execução. 2. Também é possível especificar um quadro diferente onde as classes serão empacotadas e exportadas. por exemplo.

10. desmarque a seleção da caixa Export in First Frame (Exportar no primeiro quadro) e clique em OK. digite o número do quadro para o qual deseja exportar o código das classes (Frame 10). Compilando e exportando classes 297 . Clique com o botão direito do mouse em cada componente (exceto ProgressBar) no painel Library (Biblioteca) e selecione Linkage (Vinculação) em um menu de contexto para iniciar a caixa de diálogo Linkage Properties (Propriedades de vinculação). Crie um novo quadro-chave no Frame 10 da camada actions e adicione o seguinte ActionScript: stop(). Clique em OK para fechar a caixa de diálogo ActionScript Settings e. você receberá uma mensagem de erro ao publicar o arquivo SWF. Clique 13. File > Publish Settings (Configurações de publicação). Na caixa de diálogo Publish Settings. Selecione 11. if (_framesloaded < classesFrame) { trace(this. 7. Se o quadro especificado não existir na Timeline. 5. 12. 9.getBytesTotal() + " bytes loaded"). gotoAndPlay(1). } 6. 8. 14. } else { gotoAndStop(classesFrame). Crie um novo quadro-chave no Frame 10 da camada de conteúdo e arraste diversos componentes para o Stage. em seguida. Adicione o seguinte código ActionScript ao Frame 1 (Quadro 1) da camada actions na Timeline principal: my_pb.getBytesLoaded() + " of " + this. verifique se Export for ActionScript (Exportar para ActionScript) está selecionada. Na caixa de diálogo Linkage Properties. no botão Settings perto do menu pop-up da versão do ActionScript para abrir a caixa de diálogo ActionScript Settings (Configurações do ActionScript).4. selecione a guia Flash.indeterminate = true. clique em OK para fechar a caixa de diálogo Publish Settings. Na caixa de texto Export Frame for Classes (Exportar quadro para classes). Crie um novo quadro-chave no Frame 2 (Quadro 2) da camada actions e adicione o seguinte código ActionScript: var classesFrame:Number = 10.

0 importado implícita ou explicitamente e compilado com êxito. o compilador lê o bytecode já compilado diretamente do arquivo ASO. Observe que a sua primeira compilação é mais lenta do que as compilações subseqüentes. Para cada arquivo do ActionScript 2. A extensão . O Flash simula o download do documento Flash em uma velocidade menor. selecione View (Exibir) > Simulate Download (Simular download) no arquivo SWF. o que permite que você veja a animação do componente de barra de progresso enquanto ocorre o download dos arquivos de classe. Isso ocorre porque somente os arquivos AS que foram alterados são compilados em arquivos ASO. 298 Classes . exclua os arquivos ASO e recompile-os. objeto do ActionScript). ■ O compilador cria arquivos ASO para fins de armazenamento em cache. arquivos com extensões .aso no subdiretório /aso do diretório de caminho de classe global padrão (consulte “Sobre a definição e a modificação do caminho de classe” na página 255). No caso dos arquivos AS não alterados. em vez de recompilar o arquivo AS. esses arquivos contêm a forma compilada (o bytecode) de um arquivo de classe. Os arquivos do ActionScript que contêm as definições importadas ou usadas pelo arquivo correspondente do ActionScript tiverem sido modificados. Se perceber que o Flash está compilando versões mais antigas de um arquivo que você editou.aso significa ActionScript object(ASO. consulte “Usando arquivos ASO” na página 298. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Se o painel Components for carregado rápido demais. o Flash gera um arquivo ASO. Ele não é um formato documentado e não deve ser redistribuído. O formato de arquivo ASO é um formato intermediário desenvolvido apenas para uso interno. exclua-os quando o Flash não estiver executando outras operações. o Flash cria. como verificação de sintaxe ou exportação de SWFs. Os arquivos do ActionScript incluídos pelo arquivo correspondente do ActionScript tiverem sido modificados.15. às vezes. O Flash só precisará gerar novamente um arquivo ASO quando ocorrerem os seguintes cenários: ■ ■ O arquivo AS correspondente tiver sido modificado. Se planejar excluir os arquivos ASO. Portanto. Para obter mais informações sobre arquivos ASO. O arquivo contém o bytecode produzido a partir do arquivo ActionScript (AS) associado. Usando arquivos ASO Durante a compilação.

selecione uma das opções a seguir no ambiente de criação: ■ Selecione Control (Controle) > Delete ASO Files (Excluir arquivos ASO) para excluir os arquivos ASO e continue editando.Para excluir arquivos ASO: Se você estiver editando um arquivo FLA e desejar excluir um arquivo ASO.500 linhas geralmente não ultrapassam o limite. selecione ActionScript File (Arquivo ActionScript) e. mova parte do código para outra classe. // construtor 2. clique em OK. talvez você precise alterar o modo como a palavra-chave this é usada. se um método de determinada classe usar uma função de retorno de chamada (como o método onLoad() da classe LoadVars). como mostra o exemplo a seguir. poderá ser difícil saber se a palavra-chave this se refere à classe ou ao objeto LoadVars.767 bytes. Se o bytecode exceder esse limite. ■ Se você estiver editando um documento ActionScript na janela Script: ■ ■ Há um limite para a quantidade de código que pode ser colocada em uma única classe: o bytecode de uma definição de classe em um arquivo SWF exportado não poderá ser superior a 32. Em geral. Para compreender o escopo e os arquivos de classes externos: 1. Selecione Control > Delete ASO Files e Test Movie (Testar filme) para excluir os arquivos ASO e testar o aplicativo. Selecione File (Arquivo) > New (Novo).as */ class Product { private var productsXml:XML. Não é possível prever o tamanho da representação de bytecode de determinada classe. uma prática recomendada de OOP é manter as classes relativamente curtas. Por exemplo. Nessa situação. Selecione Control > Delete ASO Files e Test Project (Testar projeto) para excluir os arquivos ASO e testar o aplicativo. Caso a classe ultrapasse o limite. talvez seja necessário criar um ponteiro para a classe atual. Noções básicas sobre classes e escopo Ao mover o código ActionScript para classes. será exibida uma mensagem de aviso. mas classes com até 1. em seguida. Digite ou cole o seguinte código na janela Script: /** Classe do produto Product. Noções básicas sobre classes e escopo 299 . Selecione Control > Delete ASO Files para excluir os arquivos ASO e continue editando.

4. } }. thisObj. como era de se esperar. Agora você poderá usar essa classe com um documento do Flash. a palavra-chave this se refere à instância prodXml.ignoreWhite = true. var prodXml:XML = new XML().// targetXmlStr . 6. */ thisObj.productsXml = this. contém o caminho para um arquivo XML function Product(targetXmlStr:String) { /* Cria uma referência local à classe atual.helpexamples. // Cria uma variável local. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal. prodXml. prodXml. trace(this. } public function init():Void { // Exiba o pacote XML. defina a variável productsXml da classe para o documento XML analisado e chame a função init. } } Como você está tentando fazer referência à variável de membro privada em um manipulador onLoad.onLoad = function(success:Boolean) { if (sucesso) { /* Se o XML for carregado e analisado com sucesso.xml"). em vez de somente ao pacote XML. e não à classe Product. Por isso. você deve criar um ponteiro para o arquivo de classes local para que possa fazer referência direta à classe do manipulador onLoad. } else { /* Houve erro ao carregar o arquivo XML. */ trace("error loading XML").com/ crossdomain.init().as.fla no mesmo diretório. */ var thisObj:Product = this. 3. prodXml. 5. Digite o seguinte ActionScript no painel Actions (Ações): var myProduct:Product = new Product("http://www. Crie um novo documento do Flash chamado testProduct. Mesmo que esteja dentro do manipulador de eventos onLoad do XML.load(targetXmlStr). 300 Classes .productsXml).seqüência de caracteres. Salve o código anterior do ActionScript como Product. // Comece a carregar o documento XML. usada para carregar o arquivo XML. você pode fazer referência à classe atual.

ela é criada apenas uma vez para a classe inteira. Você pode acessar um membro estático da classe sem criar uma instância da classe usando a sintaxe someClassName.as. public function User() { User. // 0 var user1:User = new User().7. selecione ActionScript File e. Outra vantagem das variáveis estáticas é que elas não perdem seus valores quando o seu escopo é encerrado. em seguida. } } O código anterior define uma classe User que controla o número de vezes que o construtor foi chamado. Selecione File > New. Salve o documento como User. O exemplo a seguir demonstra como usar a palavra-chave static para criar um contador que controla quantas instâncias da classe o Flash criou.username.numInstances) é incrementada no método construtor. Como a variável numInstances é estática. e não para cada instância. clique em OK. Para usar a palavra-chave static: 1.instances). O conteúdo do documento XML especificado é exibido no painel Output (Saída).numInstances++. Selecione Control (Controlar) > Test Movie (Testar filme) para testar esse código no ambiente de teste. selecione Flash Document (Documento do Flash) para criar um novo arquivo FLA e salve-o no mesmo diretório que o arquivo User. Noções básicas sobre classes e escopo 301 . Uma variável estática privada (User. Selecione File > New. Outro tipo de escopo que você encontrará ao trabalhar com essas classes são as variáveis e as funções estáticas. Digite o seguinte código ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): trace(User. privados e estáticos” na página 262 e “Usando membros de classe” na página 269. // 1 5. Para obter mais informações sobre variáveis e funções estáticas. 2. trace(User. em vez de ser criada em todas as instâncias dessa classe.numInstances. A palavra-chave static determina que uma variável ou função seja criada somente uma vez por classe. 3.instances). Digite o seguinte código na janela Script: class User { private static var numInstances:Number = 0.as. } public static function get instances():Number { return User. consulte “Sobre propriedades (membros) e métodos públicos. 4.

Selecione Control (Controlar) > Test Movie (Testar filme) para testar os documentos. seqüências de carateres e booleanos) descritos anteriormente nesse manual (consulte o Capítulo 4. 6. Você pode encontrar as pastas de classes aqui: ■ Windows: Hard Disk\Documents and Settings\user\Local Settings\Application Data\Macromedia\Flash 8\idioma\Configuration\Classes. Na caixa de ferramentas Actions (Ações). Por exemplo. // 2 A primeira linha de código chama o método getter instances() estático. 302 Classes . consulte “Sobre o uso da palavra-chave this em classes” na página 277. Sobre classes de nível superior e internas Além das construções e dos elementos de linguagem básicos do ActionScript (as repetições for e while loops. consulte “Trabalhando com pacotes” na página 244. Para obter mais informações sobre pacotes. por exemplo) e dos tipos de dados primitivos (números.var user2:User = new User(). ■ Leia o documento Read Me localizado nesse diretório para obter mais informações sobre a estrutura. Algumas dessas classes se baseiam na especificação de linguagem ECMAScript (ECMA-262) edição 3 e são chamadas classes básicas do ActionScript. são criadas no Flash Player. na página 119). você pode usar a classe Math para executar equações em seus aplicativos ou a classe BitmapData para criar pixels e animações com script. O restante do código cria novas instâncias da classe User e exibe o valor atual retornado pelo método getter instances(). Para obter informações sobre o uso da palavra-chave this em classes. As classes de nível superior. Várias classes fornecidas com o Flash são usadas para criar interatividade e funcionalidade nos arquivos SWF e também podem ser usadas para criar aplicativos complexos. listadas em “Classes de nível superior” na página 304. Você pode encontrar as classes ActionScript instaladas no disco rígido. o ActionScript também fornece várias classes internas (tipos de dados complexos). Macintosh: Hard Disk/Users/usuário/Library/Application Support/Macromedia/Flash 8/ idioma/Configuration/Classes.instances). que retorna o valor da variável numInstances estática privada. Array. Boolean.0. na página 75 e o Capítulo 5. você usou classes de nível superior e outras classes internas que fazem parte da linguagem ActionScript e continuará a usá-las nos capítulos restantes. trace(User. Nos capítulos anteriores. Essas classes oferecem vários recursos e funcionalidades de script. “Fundamentos da sintaxe e da linguagem”. “Dados e tipos de dados”. Date e Math são exemplos de classes básicas. essas classes estão localizadas no diretório Classes do ActionScript 2.

Camera. As seções a seguir apresentam classes internas do ActionScript e descrevem as tarefas básicas que podem ser realizadas com essas classes.0 in Flash. Para obter uma visão geral sobre o trabalho com classes e objetos na programação orientada a objeto. a aparência e o comportamento de um aplicativo Flash. consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ ■ ■ ■ “Classes de nível superior” na página 304 “Pacote flash.filters” na página 309 “Pacote flash. As demais classes internas do ActionScript são específicas do modelo de objeto do Macromedia Flash e do Flash Player.external” na página 309 “Pacote flash. operadores e diretivas). consulte “Sobre como trabalhar com classes internas” na página 312. considere a distinção entre JavaScript básico e cliente. As classes JavaScript do cliente permitem controlar o ambiente do cliente (o conteúdo do navegador e da página da Web). como flash. na página 119.lang” na página 311 “Pacotes System e TextField” na página 312 Sobre classes de nível superior e internas 303 .net” na página 311 “Pacote flash. Para obter mais informações sobre classes internas e de nível superior. consulte o Capítulo 5.Para entender a diferença entre as classes básicas do ActionScript e as classes específicas do Flash.display.geom” na página 310 “Pacote flash. Para obter informações sobre elementos de linguagem (como constantes. durante a execução. MovieClip e LoadVars são exemplos dessas classes. Todas essas classes são às vezes chamadas classes internas (classes predefinidas que podem ser usadas para adicionar funcionalidade aos aplicativos).text” na página 311 “Pacote mx. “Fundamentos da sintaxe e da linguagem”.display” na página 308 “Pacote flash. e as classes específicas do Flash permitem controlar. Outras classes são organizadas em pacotes. Exemplos de código usando essas classes estão incluídos em todo o manual Learning ActionScript 2.

fora das classes. funções globais. consulte a seguinte tabela. Para obter informações sobre como usar cada um desses elementos de linguagem. Consulte %{Array}%. N OT A 304 As classes CustomActions e XMLUI estão disponíveis somente no ambiente de criação do Flash. muitas das quais fornecem funcionalidade básica a seus aplicativos. e todos os objetos de array são instâncias dessa classe. Classe Acessibilidade Description (Descrição) A classe Accessibility gerencia a comunicação entre os arquivos SWF e os aplicativos de leitura de tela. Array Classes . Para descobrir mais informações sobre cada classe.Outros elementos de linguagem Há outros elementos de linguagem que compõem o ActionScript. incluem Array.0 Language Reference (Referência da linguagem ActionScript): ■ ■ ■ ■ ■ ■ %{Compiler Directives}% %{Constants}% %{Global Functions}% %{Global Properties}% %{Operators}% %{Statements}% Classes de nível superior O nível superior contém as classes e as funções globais do ActionScript. consulte os seguintes tópicos: ■ ■ Capítulo 5. Date. operadores e instruções. emprestadas diretamente do ECMAScript. constantes. “Funções e métodos” Você pode encontrar uma lista desses elementos de linguagem nas seguintes seções do ActionScript 2. A classe Array representa os arrays no ActionScript. Use os métodos dessa classe junto com a propriedade _accProps global para controlar as propriedades acessíveis de clipes de filme. “Fundamentos da sintaxe e da linguagem” Capítulo 6. propriedades globais. Object. As classes básicas. Function. São eles: diretivas. Boolean. Consulte %{Accessibility}%. A classe Array contém métodos e propriedades para o trabalho com os objetos de array. Math. Error. String e System. Number. botões e campos de texto durante a execução.

consulte %{ColorTransform (flash. Também é possível adicionar itens de menu personalizados a um objeto ContextMenu usando a classe ContextMenuItem. Para obter mais informações sobre transformações de cores. Essa classe também permite obter a data e a hora atuais a partir do sistema operacional.geom. Quando ela é usada com o Flash Communication Server. A classe ContextMenu permite controlar o conteúdo do menu de contexto do Flash Player durante a execução. Consulte %{Date}%. Consulte %{ContextMenu}%. Consulte %{Button}%.>. A classe Color tornou-se obsoleta no Flash Player 8 tendo sido substituída pela classe ColorTransform. Consulte %{Boolean}%. propriedades e manipuladores de eventos para trabalhar com botões. A classe ContextMenuItem permite que você crie novos itens de menu que aparecem no menu de contexto do Flash Player. Para adicionar ao menu de contexto do Flash Player novos itens de menu criados com essa classe. Observe que a classe interna Button é diferente da classe de componente Button. Button ou TextField usando a propriedade menu disponível para essas classes. Consulte %{Camera}%. verde e azul) e a transformação de cor de instâncias de clipes de filme. A classe CustomActions permite que você gerencie qualquer ação do cliente registrada com a ferramenta de criação. Você pode associar objetos ContextMenu separados a objetos MovieClip. A classe Camera fornece acesso à câmera do usuário. se houver uma instalada.ColorTransform)}%. Consulte %{CustomActions}%. A classe Date mostra como as datas e as horas são representadas no ActionScript e oferece suporte às operações de manipulação de datas e horas. bem como recuperar esses valores após eles serem definidos. Boolean Button Camera (Câmera) Color ContextMenu ContextMenuItem CustomActions Date Sobre classes de nível superior e internas 305 . A classe Color permite definir o valor de cor RGB (vermelho. Consulte %{AsBroadcaster}%. Consulte %{ContextMenuItem}%. associada ao componente Button de versão 2. transmitir e gravar imagens e vídeo da câmera do usuário. o arquivo SWF pode capturar.Classe AsBroadcaster Description (Descrição) Fornece recursos de notificação de eventos e gerenciamento de ouvinte que podem ser adicionados a outros objetos. use a classe ContextMenu. A classe Boolean é um envoltório para valores booleanos (true ou false). A classe Button fornece métodos.

Consulte %{MovieClip}%. Em geral. o arquivo SWF pode transmitir e gravar áudio a partir do microfone do usuário.constante. Esta classe permite implementar retornos de chamada de ouvinte que fornecem informações de status enquanto os arquivos SWF. use a instrução throw para gerar uma condição de erro. se houver um instalado. incluindo aquelas que são nativas do ActionScript e as que você define. A classe Function é a representação de classe de todas as funções do ActionScript. Consulte %{LoadVars}%.Classe Error Description (Descrição) A classe Error contém informações sobre os erros que ocorrem nos scripts durante a execução.. Use os métodos e propriedades dessa classe para controlar objetos de clipe de filme. Cada clipe de filme em um arquivo SWF é uma instância da classe MovieClip. que você pode manipular com uma instrução try. GIF e PNG estão sendo carregados em instâncias de clipes de filme. A classe Math permite o acesso conveniente a constantes matemáticas comuns. bem como fornece várias funções matemáticas comuns. Todas as propriedades e métodos da classe Math são estáticos e devem ser chamados com a sintaxe Math. Consulte %{Key}%. Consulte %{Mouse}%. JPEG. por exemplo.catch. Protocolo de Transferência de Hipertexto) ou do sistema de arquivos local.método(parâmetro) ou Math. A classe NetConnection estabelece uma conexão de fluxo local para reproduzir um arquivo FLV (Flash Video) de um endereço HTTP (Hypertext Transfer Protocol. A classe Mouse fornece controle sobre o mouse em um arquivo SWF. Consulte %{MovieClipLoader}%. A classe Microphone fornece acesso ao microfone do usuário. A classe LocalConnection permite desenvolver arquivos SWF que enviam instruções uns para os outros sem usar o método fscommand() ou o JavaScript. Consulte %{Function}%. Consulte %{Error}%. A classe LoadVars permite transferir variáveis entre um arquivo SWF e um servidor em pares nome/valor. Consulte %{LocalConnection}%.finally. Function Key LoadVars LocalConnection Math Microphone (Microfone) Mouse MovieClip MovieClipLoader NetConnection 306 Classes . Consulte %{NetConnection}%. A classe Key fornece métodos e propriedades para obter informações sobre o teclado e os pressionamentos de teclas. Quando ela é usada com o Flash Communication Server. Consulte %{Microphone}%.. essa classe permite que você oculte ou mostre o ponteiro do mouse. Consulte %{Math}%.

A classe Selection permite definir e controlar o campo de texto no qual está localizado o ponto de inserção (o campo de texto que possui o foco). de maneira semelhante aos cookies. Ela também permite que você mostre ou oculte o painel Settings (Configurações) do Flash Player e modifique as configurações de segurança do arquivo SWF. A classe System fornece informações sobre o Flash Player e o sistema em que o Flash Player está em execução (por exemplo. Consulte %{System}%. Consulte %{Selection}%. A classe PrintJob permite imprimir o conteúdo de um arquivo SWF. incluindo o conteúdo renderizado dinamicamente. Consulte %{SharedObject}%. o alinhamento e o modo de escala de um arquivo SWF. todas as outras classes herdam seus métodos e propriedades. Consulte %{Sound}%. Consulte %{Stage}%. como a recuperação de informações de formatação. A classe SharedObject oferece o armazenamento de dados local persistente no computador cliente. Consulte %{NetStream}%. Consulte %{TextField}%.Classe NetStream Description (Descrição) A classe NetStream controla a reprodução de arquivos FLV de um sistema de arquivos local ou de um endereço HTTP. A classe Number é um envoltório para o tipo de dados de número primitivo. a chamada de manipuladores de eventos e a alteração de propriedades como alfa ou cor de fundo. Number Object PrintJob Selection SharedObject Sound Stage String System TextField Sobre classes de nível superior e internas 307 . Ela também informa eventos de redimensionamento do Stage (Palco). Consulte %{Object}%. A classe Stage fornece informações sobre as dimensões. e documentos de várias páginas. Consulte %{String}%. Essa classe permite o compartilhamento de dados em tempo real entre objetos no computador do cliente. A classe Sound fornece controle sobre os sons em um arquivo SWF. resolução da tela e linguagem do sistema atual). A classe Object encontra-se na raiz da hierarquia de classes do ActionScript. A classe TextField fornece controle sobre campos de texto dinâmicos e de entrada. que permite o uso dos métodos e das propriedades do objeto String para manipular tipos de valores String primitivos. Consulte %{PrintJob}%. A classe String é um envoltório para o tipo de dados String primitivo. Consulte %{Number}%.

Consulte %{XMLNode}%.display. Consulte %{BitmapData (flash. em um clipe de filme. A classe XMLNode representa um único nó em uma árvore de documentos XML. Consulte %{XMLSocket}%. Classe BitmapData Description (Descrição) A classe BitmapData permite criar imagens bitmaps opacas ou transparentes. Consulte %{TextFormat}%. Effects e Tools). Trata-se da superclasse da classe XML. Consulte %{Video}%. Consulte %{TextSnapshot}%. Você pode usá-la com o Flash Communication Server para exibir fluxos de vídeo ao vivo em um arquivo SWF file ou no Flash para exibir um arquivo FLV (Flash Video). XML XMLNode XMLSocket XMLUI Pacote flash.BitmapData)}%. Commands. A classe XMLSocket permite criar uma conexão de soquete persistente entre um computador servidor e um cliente que executa o Flash Player. 308 Classes . como a necessária para aplicativos de batepapo em tempo real. A classe Video permite exibir objetos de vídeo em um arquivo SWF. no documento e manipulá-las de várias maneiras durante a execução. O objeto XMLUI permite a comunicação com arquivos SWF que são usados como uma interface do usuário personalizada para os recursos de extensibilidade da ferramenta de criação do Flash (como Behaviors. Consulte %{XML}%.display contém a classe BitmapData que pode ser usada para criar exibições visuais. Consulte %{XMLUI}%. bem como criar o seu layout. Esta classe contém métodos e propriedades usados com objetos XML. dimensionadas de forma arbitrária. Os soquetes do cliente permitem a transferência de dados de baixa latência.Classe TextFormat TextSnapshot Video Description (Descrição) A classe TextFormat permite aplicar estilos de formatação a caracteres e parágrafos em um objeto TextField. O objeto TextSnapshot permite acessar texto estático.display O pacote flash.

Você poderia se comunicar com a página HTML usando a classe ExternalInterface e o JavaScript.external.filters.external permite que você se comunique com o recipiente do Flash Player usando código ActionScript. BitmapFilter BlurFilter A classe BlurFilter permite aplicar um efeito de embaçamento a instâncias de clipes de filme.filters.Pacote flash. Consulte %{ColorMatrixFilter (flash.BlurFilter)}%. A classe BitmapFilter é uma classe base para todos os efeitos de filtro.filters O pacote flash. Consulte %{ConvolutionFilter (flash.BevelFilter)}%.ConvolutionFilter)}%.filters. você poderá produzir um resultado com um novo conjunto de valores alfa e de cor RGBA. como embaçamento.ColorMatrixFilter)}%. Consulte %{BlurFilter (flash.BitmapFilter)}%. Também chamada de API externa. Classe BevelFilter Description (Descrição) A classe BevelFilter permite adicionar um efeito de chanfro a uma instância de clipe de filme. um subsistema que permite a comunicação entre o ActionScript e o recipiente do Flash Player (como uma página HTML que usa o JavaScript) ou um aplicativo desktop que usa o Flash Player. Para obter mais informações sobre cada classe. verde.filters contém classes para os efeitos de filtro de bitmap disponíveis no Flash Player 8. Classe ExternalInterface Description (Descrição) A classe ExternalInterface é a API External. Pacote flash. brilho e sombreamento. A classe ConvolutionFilter permite aplicar um efeito de filtro de convolução de matriz. A classe ColorMatrixFilter permite aplicar uma matriz de transformação 4x5 aos valores alfa e de cor RGBA (vermelho. ColorMatrixFilter ConvolutionFilter Sobre classes de nível superior e internas 309 . Consulte %{ExternalInterface (flash. Consulte %{BitmapFilter (flash.ExternalInterface)}%. Consulte %{BevelFilter (flash.external O pacote flash.filters.filters. Os filtros permitem aplicar efeitos visuais sofisticados. Por exemplo. Após aplicar a transformação. chanfro. azul e alfa) de cada pixel na imagem de entrada. se você incorporar um arquivo SWF em uma página HTML. consulte as referências cruzadas fornecidas na tabela a seguir. às instâncias de Image e MovieClip. essa página será o recipiente.

Classe Description (Descrição) DisplacementMapFilte A classe DisplacementMapFilter permite usar os valores de pixel de r uma imagem especificada (imagem de mapa de deslocamento) para deslocar espacialmente a instância original (um clipe de filme) à qual o filtro foi aplicado. Consulte %{Point (flash.filters. A GradientGlowFilter permite aplicar um efeito de gradiente de brilho a um clipe de filme. Para obter mais informações sobre cada classe. Consulte %{GradientGlowFilter (flash. O objeto Point representa um local em um sistema de coordenadas bidimensional. como pontos. Consulte %{ColorTransform (flash.geom. onde x representa o eixo horizontal e y representa o eixo vertical.GradientBevelFilter)}%.GradientGlowFilter)}%. Matrix Point 310 Classes . É possível recuperar esses valores após eles serem definidos. retângulos e matrizes de transformação.geom.geom O pacote flash.filters.filters.Point)}%. Essas classes oferecem suporte à classe BitmapData e ao recurso de armazenamento de bitmap em cache. Consulte %{GradientBevelFilter (flash. Classe ColorTransform Description (Descrição) A classe ColorTransform permite definir matematicamente o valor de cor RGB (vermelho.DropShadowFilter)}%.filters.Matrix)}%. GlowFilter GradientBevelFilter GradientGlowFilter Pacote flash. consulte as referências cruzadas fornecidas na tabela a seguir.ColorTransform)}%. Consulte %{Matrix (flash.GlowFilter)}%. A classe GradientBevelFilter permite aplicar um efeito de chanfro gradiente a um clipe de filme. verde e azul) e a transformação de cor de uma instância.geom.filters. Representa uma matriz de transformação que determina como mapear pontos de um espaço de coordenadas para outro.DisplacementMapFilter)}%. Consulte %{GlowFilter (flash. DropShadowFilter A classe DropShadowFilter permite adicionar um sombreamento a um clipe de filme. Consulte %{DropShadowFilter (flash. Consulte %{DisplacementMapFilter (flash. A classe GlowFilter permite adicionar um efeito de brilho a um clipe de filme.geom contém classes de geometria.

TextRenderer)}%.text contém a classe TextRenderer para trabalhar com o recurso sem serrilhado avançado disponível no Flash Player 8.Transform)}%.text.FileReferenceList)}%. A classe FileReferenceList permite fazer upload de um ou mais arquivos do computador do usuário em um servidor. consulte as referências cruzadas fornecidas na tabela a seguir. Consulte %{Transform (flash.FileReference)}%.text O pacote flash. Para obter mais informações sobre cada classe.lang.Classe Rectangle (Retângulo) Transform (Transformar) Description (Descrição) A classe Rectangle é usada para criar e modificar objetos Rectangle.geom. Consulte %{Rectangle (flash.Rectangle)}%.net O pacote flash.lang O pacote mx.geom. Classe FileReference Description (Descrição) A classe FileReference permite fazer upload e download de um ou mais arquivos entre o computador do usuário e um servidor. Sobre classes de nível superior e internas 311 .lang contém a classe Locale para trabalhar com texto multilíngüe. Consulte %{Locale (mx.net. Pacote mx.net contém classes que permitem fazer upload e download de um ou mais arquivos entre o computador do usuário e o servidor.Locale)}%. Classe TextRenderer Description (Descrição) Esta classe oferece a funcionalidade para o recurso sem serrilhado avançado no Flash Player 8. Consulte %{TextRenderer (flash. Consulte %{FileReferenceList (flash. Consulte %{FileReference (flash. Classe Locale Description (Descrição) Essa classe permite controlar como o texto multilíngüe é exibido em um arquivo SWF.net. Coleta dados sobre transformações de cores e manipulações coordenadas que são aplicadas em uma instância de objeto. Pacote flash. FileReferenceList Pacote flash.

IME)}%. consulte as seguintes seções: ■ ■ “Princípios da programação orientada a objeto” na página 246 “Criando arquivos de classes personalizados” na página 249 312 Classes . Para obter mais informações sobre cada classe. Consulte %{capabilities (System. A classe Security contém métodos que especificam como os arquivos SWF de diversos domínios podem se comunicar uns com os outros. A classe IME permite manipular diretamente o IME (Input Method Editor. IME segurança O pacote TextField contém a classe StyleSheet que é usada para aplicar estilos CSS (Cascading StyleSheets. como tamanho da fonte. Folhas de estilos em cascata) ao texto. Consulte %{StyleSheet (TextField.Pacotes System e TextField O pacote System contém as classes capabilities.security)}%. Sobre como trabalhar com classes internas Na programação orientada a objeto. Uma classe descreve as propriedades (dados) e o comportamento (métodos) de um objeto. Editor de método de entrada) do sistema operacional no aplicativo Flash Player executado em um computador cliente. Essas classes controlam as configurações do cliente que podem afetar o seu aplicativo no Flash Player. uma classe define uma categoria de objeto. Para obter informações sobre classes e outros conceitos de programação orientada a objetos. Classe StyleSheet Description (Descrição) A classe StyleSheet permite criar um objeto de folha de estilos que contém as regras de formatação de texto. IME e security. consulte as referências cruzadas fornecidas na tabela a seguir. cor e outros estilos de formatação.capabilities)}%. Classe capabilities Description (Descrição) A classe Capabilities determina as capacidades do sistema e do Flash Player que está hospedando o arquivo SWF. Isso permite personalizar o conteúdo para diversos formatos. Consulte %{IME (System.StyleSheet)}%. Consulte %{security (System. da mesma maneira que uma planta arquitetônica descreve as características de uma construção.

O Flash 8 possui muitas classes internas que você pode usar no código (consulte “Sobre classes de nível superior e internas” na página 302). conforme discutido em “Sobre classes de nível superior e internas” na página 302. Por exemplo.firstName O código a seguir cria um novo objeto Array e. A função construtora sempre tem o mesmo nome da classe e retorna uma instância da classe. Para obter mais informações sobre o uso de classes internas no Flash 8. você geralmente cria primeiro uma instância dessa classe (exceto no caso de classes com membros estáticos). Em alguns casos. Por exemplo. Para usar as propriedades e os métodos definidos por uma classe interna. consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ “Sobre a criação de uma nova instância de uma classe interna” na página 313 “Acessando propriedades de objetos internos” na página 313 “Sobre a chamada de métodos de objetos internos” na página 314 “Sobre os membros de classe (estáticos)” na página 315 “Pré-carregando arquivos de classe” na página 316 “Excluindo classes” na página 315 Sobre a criação de uma nova instância de uma classe interna Para criar uma instância de uma classe do ActionScript.) para acessar o valor de uma propriedade em um objeto. A relação entre uma instância e sua classe é semelhante à relação entre uma casa e sua planta arquitetônica. não é necessário criar uma instância de uma classe para usar suas propriedades e métodos. Insira o nome do objeto à esquerda do ponto e o nome da propriedade à direita. para ajudar a adicionar interatividade aos aplicativos. my_obj é o objeto e firstName é a propriedade: my_obj. o código a seguir cria um novo objeto Sound: var song_sound:Sound = new Sound(). que você normalmente atribui a uma variável. em seguida. Para obter mais informações. use o operador new para chamar a função construtora da classe. Acessando propriedades de objetos internos Use o operador ponto (. na instrução a seguir. consulte “Sobre os membros de classe (estáticos)” na página 315. mostra sua propriedade length: Sobre como trabalhar com classes internas 313 .

Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: var results:Object = {firstName:"Tommy". "bananas").336. na página 403. Por exemplo. “Funções e métodos”. você pode usá-lo para fins de depuração. avg. Crie um novo documento do Flash e salve-o como forin. “Trabalhando com texto e seqüências de caracteres”. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Para obter exemplos de como trabalhar com propriedades das classes TextField. String. } O código anterior define um novo objeto chamado de resultados e define valores para firstName.fla. 3. b:"R". lastName:"G". na página 369. O exemplo a seguir executa uma repetição em um objeto para exibir cada uma de suas propriedades. na página 213.. “Trabalhando com clipes de filme”. age:7. por exemplo. 314 Classes .var my_array:Array = new Array("apples".length). consulte o Capítulo 12. Para obter mais informações sobre métodos e propriedades. consulte “Sobre operadores” na página 185. "oranges". Para obter exemplos de como trabalhar com propriedades da classe interna MovieClip. b e t. lastName.) seguido do método. Uma repetição for. t:"L"}. Para obter exemplos de como trabalhar com métodos das classes internas TextField. o código a seguir cria um novo objeto Sound e chama o seu método setVolume(): var my_sound:Sound = new Sound(this). Sobre a chamada de métodos de objetos internos Você pode chamar o método de um objeto usado o operador ponto (. TextRenderer e TextFormat. avg:0. my_sound. Para obter mais informações sobre operadores. // 3 Também é possível usar o operador de acesso de array ([]) para acessar as propriedades de um objeto. String. na página 403. Para executar uma repetição no conteúdo de um objeto: 1. “Trabalhando com clipes de filme”.in apresenta cada propriedade no objeto de resultados e apresenta o valor para o painel Output (Saída).setVolume(50). consulte o Capítulo 11. TextRenderer e TextFormat. “Trabalhando com texto e seqüências de caracteres”. consulte Capítulo 6. 2. consulte o Capítulo 11. Para obter exemplos de como trabalhar com métodos da classe interna MovieClip. na página 369. trace(my_array. age. incluindo operadores de acesso dot e array. consulte o Capítulo 12. for (var i:String in results) { trace("the value of [" + i + "] is: " + results[i]).

max(10. não é necessário criar uma instância da classe para usar essas propriedades e métodos. // 20 Para obter mais informações sobre métodos estáticos da classe Math. 2.xml ao arquivo XML. você poderá excluir classes da compilação. especialmente os que acessam várias das mesmas classes. e exemplos de como usálos. Salve o arquivo no mesmo diretório que o arquivo FLA. 3. 4. Os membros de classe (propriedades e métodos) são acessados ou chamados não em uma instância da classe.Sobre os membros de classe (estáticos) Algumas classes internas do ActionScript apresentam membros de classe (membros estáticos). todas as propriedades da classe Math são estáticas. consulte %{Math}% em ActionScript 2. Portanto. consulte os seguintes tópicos: ■ “Pré-carregando arquivos de classe” na página 316 Para excluir classes da compilação: 1. 20).0 Language Reference (Referência da linguagem ActionScript). Por exemplo.fla. Coloque as seguintes marcas no arquivo XML: <excludeAssets> <asset name="className1" /> <asset name="className2" /> </excludeAssets> Sobre como trabalhar com classes internas 315 . Atribua o nome Nome_do_arquivo_FLA_exclude. trace(largerNumber). Para obter mais informações sobre como excluir classes. O código a seguir chama o método max() da classe Math para determinar o maior de dois números: var largerNumber:Number = Math.xml. mas no próprio nome da classe. A exclusão das classes ajudará a evitar que elas sejam duplicadas nesses arquivos. Crie um novo arquivo XML. mas ainda será capaz de acessá-las e usá-las para verificação de tipo. se o arquivo FLA for sellStocks. Excluindo classes Para reduzir o tamanho de um arquivo SWF. o nome do arquivo XML deverá ser sellStocks_exclude. você poderá fazer isso se estiver desenvolvendo um aplicativo que utilize vários arquivos SWF ou bibliotecas compartilhadas. Por exemplo. onde Nome_do_arquivo_FLA é o nome do arquivo FLA sem a extensão. Por exemplo.

é preciso lidar com esses dados de forma inteligente. Selecione File > Publish Settings (Configurações de publicação). sendo assim.screens. porque o framework para componentes também é carregado no primeiro quadro de um arquivo SWF. 4. digite o número de um novo quadro para determinar quando as classes devem ser carregadas. Pré-carregamento envolve o carregamento de alguns dados para o arquivo SWF antes que o usuário comece a interagir com ele. Isso é semelhante para as classes de componente. o arquivo XML a seguir exclui as classes mx.core. mas antes de usar componentes. Selecione a guia Flash e clique no botão Settings (Configurações).Os valores especificados para os atributos de nome nas marcas <asset> são os nomes das classes que você deseja excluir do arquivo SWF. consulte “Pré-carregando arquivos de classe” na página 316. Ao criar grandes aplicativos.Slide do arquivo SWF: <excludeAssets> <asset name="mx. o tempo de carregamento pode ser demorado quando é necessário importar dados. porque é desejável que ela reflita o progresso do carregamento de todos os dados (incluindo classes).core. Para selecionar um quadro diferente para o carregamento das classes no arquivo SWF: 1.screens.Slide" /> </excludeAssets> Para obter informações sobre o pré-carregamento de classes. 316 Classes . conforme mostrado nos seguintes procedimentos.UIObject e mx. carregue as classes depois de outras partes do arquivo SWF. 3. Como as classes são os primeiros dados a serem carregados. Clique em OK.UIObject" /> <asset name="mx. Adicione quantas classes precisar para o seu aplicativo. Pré-carregando arquivos de classe Essa seção descreve algumas das metodologias usadas para pré-carregamento e exportação de classes no Flash 8 (incluindo as classes usadas por componentes na versão 2 do Macromedia Component Architecture). Por exemplo. Na caixa de texto Export Frame for Classes (Exportar quadro para classes). O seguinte procedimento mostra como alterar o quadro no qual as classes são carregadas no arquivo SWF. 2. Portanto. O Flash importa classes no primeiro quadro de um arquivo SWF quando são usadas classes externas e esses dados são os primeiros elementos a serem carregados no arquivo SWF. você pode ter problemas ao criar uma barra de progresso ou ao carregar animações se as classes forem carregadas antes da barra de progresso.

como os componentes da versão 2 exigem classes para garantir a funcionalidade. deve pré-carregar os componentes no arquivo SWF. portanto. você pode criar uma barra de progresso personalizada para o primeiro quadro do arquivo SWF. você deve carregar componentes depois de Export frame for classes (Exportar quadro para classes) no ActionScript 2. não poderá usar nenhuma classe até que a reprodução atinja o Frame 3 e carregue os dados. você deve definir os componentes para exportarem para um quadro diferente no arquivo SWF. Se os componentes não forem carregados no primeiro quadro. Se você exportar para o Frame 3 (Quadro 3). desmarque a opção Export in First Frame (Exportar no primeiro quadro) da caixa de diálogo Linkage (Vinculação) do componente. Não faça referência a nenhum componente no ActionScript nem inclua componentes no Stage até carregar as classes para o quadro especificado na caixa de texto Export Frame for Classes (Exportar quadro para classes). Por padrão.Você não pode usar classes até que a reprodução atinja o quadro escolhido para o qual as classes devem ser carregadas. A T E NÇ Ã O Você deve exportar componentes após as classes ActionScript que eles usam. Se você quiser pré-carregar um arquivo que use classes. Sobre como trabalhar com classes internas 317 . os componentes de interface de usuário exportam no Frame 1 do arquivo SWF. Para isso. como as classes de componente da versão 2.0. Por exemplo.

318 Classes .

Para obter mais informações sobre herança. . . . . . . . . . . . . . . . você aprendeu a criar arquivos de classes e como as classes podem ajudá-lo a organizar o código em arquivos externos. . . . 319 . . . consulte Capítulo 6. . . . . . . . . “Classes. . . . pois talvez você precise estender suas classes personalizadas ou as classes existentes para adicionar novos métodos e propriedades. . . . . . . . . . “Funções e métodos”. . . . . . Este assunto é útil. . . .”. . . . . . . . . você viu como criar um arquivo de classe para criar tipos de dados personalizados. . . . . . . . . . . .”. . você saberá como mover o código da Timeline (Linha de tempo) para arquivos externos. . . . . 327 8 Sobre herança No Capítulo 7. é mais fácil editá-lo. . . . Programação orientada a objeto) chamada criação de subclasses ou extensão de classes. . . . . Você também viu como organizar arquivos de classes em pacotes relacionados. Para obter mais informações sobre herança. . consulte os seguintes tópicos: Sobre herança. . . . . . Agora que está familiarizado com os conceitos básicos de criação de classes personalizadas. . . . . . . . . na página 213. . que permite criar novas classes com base em outra existente. . . . . . . você aprenderá uma técnica de OOP (Object-Oriented Programming. . Quando o código é movido para arquivos externos. . . . . 319 Sobre a criação de subclasses no Flash . . . . . . . “Classes. .CAPÍTULO 8 Herança No Capítulo 7. . . . . . O objetivo deste capítulo é mostrar como criar classes mais avançadas que estendem a funcionalidade de uma classe existente. . . consulte “Sobre herança” na página 319. . . . Para obter mais informações sobre métodos e propriedades. . . . Aprendendo a criar arquivos de classes personalizados. 321 Usando o polimorfismo em um aplicativo . . .

Por exemplo. você poderia simplesmente estender uma classe existente. em seguida. Se uma subclasse substituir um método herdado da superclasse correspondente. a classe Siamese. por sua vez. A subclasse herda todas as propriedades e métodos da classe MovieClip. caso esteja na função construtura da subclasse. poderia criar uma nova classe chamada Contractor que estende a classe Employee e herda todos os seus métodos e propriedades. a classe Lettuce pode ser uma extensão da superclasse Vegetable. Toda vez que uma classe é estendida.Uma das vantagens da OOP é que ela permite criar subclasses de uma classe. consulte “Substituindo métodos e propriedades” na página 324. e criar uma nova classe chamada Director. determinar como estruturar a hierarquia das classes é uma grande parte do projeto. fire(). portanto. mesmo que as classes relacionadas tivessem a mesma funcionalidade. A única exceção à regra acima é que. você poderia criar uma nova classe chamada Manager. ela estende a superclasse. A subclasse herda todas as propriedades e métodos de uma superclasse. Em um aplicativo complexo. você não poderá mais acessar a definição da superclasse dentro da subclasse. Também é possível criar um conjunto de classes como uma extensão de uma superclasse personalizada. pois permitem criar várias classes relacionadas que podem compartilhar funcionalidade. Por exemplo. criar uma classe Cat que estenda essa classe. que define certas propriedades e comportamentos comuns a todos os mamíferos e. em vez de recriar todo o código comum às duas classes. Por exemplo. como também depurando o aplicativo e mantendo um projeto caso uma lógica semelhante fosse alterada em vários arquivos. Você gastaria muito mais tempo não só codificando. ao estender a classe MovieClip (ou criar uma subclasse dela). Se as classes não estivessem relacionadas. você criará uma classe personalizada que estenderá essa classe. você poderia criar uma classe Employee que define as propriedades e os métodos básicos de um funcionário típico de uma empresa. O uso de subclasses permite reutilizar o código de modo que. que também estende a classe Employee e define métodos e propriedades adicionais. Outra subclasse. você precisaria recriar cada método e propriedade em cada arquivo de classe separado. você poderá acessar o construtor da superclasse usando a instrução super. A subclasse geralmente define métodos e propriedades adicionais que podem ser usados em seu aplicativo. Em seguida. você pode criar uma classe chamada Mammal. a nova classe herda todos os métodos e propriedades atuais da subclasse. Por exemplo. 320 Herança . A herança e a criação de subclasses são muito úteis em aplicativos maiores. As subclasses também substituem (fornecem suas próprias definições para) os métodos herdados de uma superclasse. raise() e promote(). poderia estender a classe Cat e assim por diante. Você também poderia estender uma subclasse. A classe Contractor poderia adicionar os seus próprios métodos e propriedades ou substituir os métodos e as propriedades definidos na classe Employee. adiciona novos métodos ou substitui os métodos existentes. como Manager. Depois. que. como hire(). Para obter mais informações sobre substituição.

da seguinte maneira: class Marsupial extends Mammal {} A subclasse herda todas as propriedades e métodos da superclasse. Para ver um exemplo que cria uma subclasse. mas não pode estender a classe TextField nem as classes estáticas. Key e Mouse. incluindo as propriedades ou os métodos declarados como privados usando a palavra-chave private. a superclasse.0 Language Reference (Referência da linguagem ActionScript 2. Para obter mais informações sobre a palavra-chave extends. uma classe Marsupial. Para criar esse tipo de relacionamento entre duas classes.No ActionScript.0). que define propriedades e métodos comuns a todos os mamíferos. consulte %{extends statement}% em ActionScript 2. Para obter mais informações sobre o uso da palavra-chave extends. como Math. Por exemplo. privados e estáticos” na página 262. ou seja. Para especificar uma superclasse. uma subclasse pode herdar as propriedades e os métodos de outra classe. Para obter mais informações sobre a extensão de classes. criará uma subclasse dessa classe. consulte “Sobre a criação de subclasses no Flash” na página 321 e “Sobre a criação de uma subclasse” na página 322. você pode criar uma classe Mammal. consulte “Sobre propriedades (membros) e métodos públicos. Sobre a criação de subclasses no Flash 321 . Sobre a criação de subclasses no Flash Na programação orientada a objeto. Você pode estender suas classes personalizadas. bem como várias das classes básicas e do ActionScript do Flash Player. Para criar uma variação da classe Mammal. use a seguinte sintaxe: class SubClass extends SuperClass {} A classe especificada em SubClass herda todas as propriedades e métodos definidos em SuperClass. consulte os seguintes tópicos: ■ ■ “Sobre a criação de uma subclasse” na página 322 “Substituindo métodos e propriedades” na página 324 Para obter mais informações sobre membros privados. você usa a palavra-chave extends para estabelecer a herança entre uma classe e sua superclasse ou para estender uma interface. você estenderá a classe Mammal. consulte “Exemplo: Estendendo a classe Widget” na página 322. por exemplo. use a cláusula extends da instrução class.

// permitido class B extends A {} class C extends B {} Também é possível usar interfaces para implementar uma forma limitada de herança múltipla. true).0 Language Reference. B {} // **Error: Uma classe não pode estender mais do que uma classe. que pode ser estendida (subclasse) com a criação de outra chamada SubWidget. Entretanto. "mozart. 322 Herança . Se a superclasse não tiver um construtor.mp3". Ele define um array chamado song_arr e um método chamado playSong(). será necessário criar um construtor na subclasse e chamar a superclasse com os parâmetros necessários. ou herança de mais de uma classe.mp3"). Para criar a classe Widget e a subclasse SubWidget: 1. Para obter mais informações sobre interfaces. } } Se você não fizer uma chamada para super() na função construtora de uma subclasse. class JukeBox extends Sound { public var song_arr:Array = new Array("beethoven. que estende a classe Sound. O exemplo a seguir demonstra como criar uma classe Widget. public function playSong(songID:Number):Void { super.0. Exemplo: Estendendo a classe Widget Os membros da classe propagam-se para as subclasses da superclasse que define esses membros. "bach. se a superclasse utilizar parâmetros em sua definição. o compilador criará uma função vazia e depois gerará a chamada para ela a partir da subclasse.loadSound(song_arr[songID]. não é permitida no ActionScript 2.as. Para ver um exemplo que cria uma subclasse. as classes poderão herdar efetivamente as características de diversas classes se você utilizar instruções extends individuais.mp3". sem parâmetros como a primeira instrução da função. Crie um novo arquivo do ActionScript e salve-o como Widget. Entretanto. consulte Capítulo 9. que herda as características da classe Sound. Para obter mais informações sobre super. A herança múltipla. consulte %{super statement}% em ActionScript 2.Sobre a criação de uma subclasse O código a seguir define a classe personalizada JukeBox. que reproduz uma música e chama o método loadSound(). como mostra o seguinte exemplo: // não permitido class C extends A. o compilador gerará automaticamente uma chamada para o construtor da superclasse imediata. na página 331. consulte “Exemplo: Estendendo a classe Widget” na página 322. “Interfaces”.

Crie um novo arquivo FLA e salve-o como subWidgetTest.widgetCount. } } 3. Salve as alterações no arquivo do ActionScript.widgetCount. var sw2:SubWidget = new SubWidget().as. Se você tentar acessar a propriedade estática widgetCount a partir de instâncias da classe Widget ou SubWidget. digite o seguinte código na janela Script: class SubWidget extends Widget { public function SubWidget() { trace("Creating subwidget # "+Widget. Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. O painel Output (Saída) exibirá o seguinte: Creating subwidget #1 Creating subwidget #2 10. o compilador gerará um erro. 4. como sw1 ou sw2.as no mesmo diretório que a classe Widget.widgetCount = " + Widget.2. public function Widget() { Widget. e o compilador recriará a referência (no bytecode. não no arquivo ActionScript) como Widget. Adicione o seguinte código ao novo documento: class Widget { public static var widgetCount:Number = 0. Selecione Sobre a criação de subclasses no Flash 323 .fla no mesmo diretório dos arquivos de classes anteriores do ActionScript. digite o seguinte código no Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: var sw1:SubWidget = new SubWidget(). Nesse arquivo. Salve as alterações em SubWidget.widgetCount). Em SubWidget.widgetCount). Salve as alterações no documento.widgetCount = " + SubWidget. 7. trace("SubWidget. Crie um novo arquivo do ActionScript e salve-o como SubWidget. você poderá acessar a propriedade widgetCount por meio dessa subclasse.widgetCount).widgetCount++. Como SubWidget é uma subclasse da classe Widget. 8. trace("Widget. 9. O código anterior cria duas instâncias da classe SubWidget: sw1 e sw2. Cada chamada do construtor de SubWidget rastreia o valor atual da propriedade estática Widget.as. 6. } } 5.

o construtor da classe Widget incrementa a variável estática widgetCount dessa classe. em seguida. Da mesma forma. O exemplo a seguir mostra como substituir os métodos existentes nas classes.as. o compilador recriará a referência (no bytecode. O compilador ActionScript 2. como no exemplo anterior. e não no arquivo do ActionScript) como Widget. Uma das vantagens de se trabalhar com classes e estendê-las é que isso permite adicionar uma nova funcionalidade às classes existentes. da seguinte maneira: 324 Herança .widgetCount e exportará corretamente essa propriedade. a subclasse herda todos os métodos e as propriedades da superclasse. Se você não especificar o nome da classe da propriedade Widget. 2.as. O uso de referências explícitas permite identificar facilmente onde a definição de um membro estático reside. a Macromedia recomenda que você use sempre referências explícitas a variáveis de membro estático no código. o Flash gerará um erro informando que só é possível acessar os membros estáticos diretamente através de classes. considere a classe Widget criada no “Exemplo: Estendendo a classe Widget” na página 322. digite o seguinte código ActionScript na janela Script: Nota: Se tiver criado a classe Widget em um exemplo anterior. Substituindo métodos e propriedades Quando uma subclasse estende uma superclasse.0 pode resolver as referências a membros estáticos nas definições de classes. embora o construtor da classe Widget nunca seja chamado explicitamente.widgetCount porque SubWidget é uma subclasse da classe Widget. Para garantir a legibilidade máxima do seu código. o compilador ActionScript 2.widgetCount = 2 Essa saída é exibida porque. Para substituir os métodos em uma subclasse: 1. bem como modificar uma funcionalidade já existente. Você poderia criar um novo método na superclasse (Widget) e. Por exemplo. o construtor da classe SubWidget o chama para você. se você fizer referência à propriedade como SubWidget. Crie um novo documento do ActionScript e salve-o como Widget. Como resultado. substituir o método na subclasse (SubWidget) ou simplesmente usar o método herdado da classe Widget. Em Widget. mas fizer referência somente a widgetCount.widgetCount.widgetCount.Widget. modifique o código existente adicionando o método doSomething(). A TE N Ç Ã O Se você tentar acessar a variável estática widgetCount da classe Widget usando a instância sw1 ou sw2.0 resolverá a referência como Widget.widgetCount = 2 SubWidget.

fla. } } 6. Agora a classe Widget define um construtor e um método público chamado doSomething(). Crie um novo documento do Flash e salve-o como subWidgetTest. doSomething(). Você observa o seguinte no painel Output (Saída): Creating subwidget # 1 Widget::doSomething() Creating subwidget # 2 Widget::doSomething() 10. var sw2:SubWidget = new SubWidget(). } } 3. 4.as.widgetCount++. Em subWidgetTest. você poderá usá-la. Observe que o construtor da classe SubWidget chama o método doSomething() definido na superclasse.as. Salve as alterações no documento do ActionScript. 7. digite o seguinte código ActionScript na janela Script: class SubWidget extends Widget { public function SubWidget() { trace("Creating subwidget # "+Widget. Crie um novo arquivo do ActionScript chamado SubWidget. Salve as alterações no documento do Flash.as e salve-o no mesmo diretório que Widget. 5. Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. NO TA Se tiver criado a classe SubWidget no “Exemplo: Estendendo a classe Widget” na página 322.fla no mesmo diretório que os documentos do ActionScript. digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal : var sw1:SubWidget = new SubWidget(). } public function doSomething():Void { trace("Widget::doSomething()").widgetCount). Em SubWidget. 9.class Widget { public static var widgetCount:Number = 0.as. Selecione Sobre a criação de subclasses no Flash 325 . 8. Salve as alterações em SubWidget. public function Widget() { Widget.

} public function doSomething():Void { trace("SubWidget::doSomething()"). doSomething(). Abra a classe SubWidget novamente e modifique o construtor dessa classe para chamar o método doSomething() (adicione o código em negrito): public function SubWidget() { trace("Creating subwidget # "+Widget. Modifique sua classe de acordo com o seguinte código (adicione o código em negrito): class SubWidget extends Widget { public function SubWidget() { trace("Creating subwidget # "+Widget. 326 Herança . que herda as características da superclasse.widgetCount). Para obter mais informações sobre super. consulte a entrada correspondente em ActionScript 2. 11. super. Salve 13. Selecione Control > Test Movie para testar o arquivo. Você observa o seguinte no painel Output: Creating subwidget # 1 SubWidget::doSomething() Creating subwidget # 2 SubWidget::doSomething() A saída anterior mostra que o método doSomething() do construtor da classe SubWidget chama o método doSomething() da classe atual. abra subwidgetTest.0 Language Reference. as alterações no arquivo de classe e. O painel Output exibe o conteúdo do método doSomething() da classe Widget.fla novamente. em seguida. Salve o arquivo de classe SubWidget com o construtor modificado e selecione Control > Test Movie para publicar novamente o documento do Flash.doSomething(). 14. você pode adicionar a palavra-chave super para chamar o método doSomething() da superclasse. Abra a classe SubWidget e adicione um novo método chamado doSomething(). } Como demonstrado.widgetCount). O construtor de SubWidget rastreia a propriedade estática da superclasse e chama o método doSomething().Essa saída mostra que o construtor da classe SubWidget chama o construtor de sua superclasse (Widget). que incrementa a propriedade estática widgetCount. e não da superclasse. } } 12. em vez do método doSomething() da classe atual.

criar as subclasses Cat.Usando o polimorfismo em um aplicativo A programação orientada a objeto permite expressar as diferenças entre classes individuais com uma técnica chamada polimorfismo. Em Mammal. private var _name:String = "Mammal".". O procedimento a seguir demonstra esse exemplo no Flash. você pode criar inicialmente uma classe chamada Mammal com os métodos play() e sleep() e. } public function sleep():String { return "Close eyes. pela qual as classes podem substituir os métodos de suas superclasses e definir implementações especializadas desses métodos.as. Monkey implementa o método play() para pendurar-se nos galhos de árvores. Para usar o polimorfismo em um aplicativo: 1. Cat implementa o método play() para avançar em um novelo de lã._gender = gender. Monkey e Dog para estender essa classe. Por exemplo. digite o seguinte código ActionScript na janela Script: class Mammal { private var _gender:String. Esse documento é a classe base de várias classes diferentes de animais que você criará na etapas subseqüentes.". } public function get speciesName():String { return this. Dog implementa o método play() para apanhar uma bola._gender. 2. em seguida. } public function toString():String { return "[object " + speciesName + "]". // construtor public function Mammal(gender:String) { this. você usaria a implementação de superclasse. As subclasses substituem o método play() da classe Mammal para refletir os hábitos desses tipos específicos de animais. Crie um novo documento do ActionScript e salve-o como Mammal._name. Como a funcionalidade sleep() é semelhante entre os animais. } Usando o polimorfismo em um aplicativo 327 . } public function get gender():String { return this. } public function play():String { return "Chase another of my kind.as.

os métodos e as propriedades dessa classe são herdados pela classe Cat. Em Dog. que são usadas para armazenar o tipo de mamífero e o sexo do animal. Em seguida. Três métodos públicos adicionais também são especificados: toString(). 7. Como a classe Cat estende a classe Mammal. digite o seguinte código ActionScript na janela Script: class Cat extends Mammal { // construtor public function Cat(gender:String) { super(gender). speciesName = "Cat". Você pode usar o método toString() da classe Mammal para exibir uma representação de seqüência de caracteres de qualquer instância dessa classe (ou de qualquer instância que estendesse essa classe). Para obter mais informações sobre substituição. O construtor precisa de um único parâmetro. um método construtor e outro play().as. Em Cat. 4. 3.as criada na etapa 1. __gender e __name. A classe Cat define somente dois métodos. consulte “Substituindo métodos e propriedades” na página 324. Crie um novo documento do ActionScript e salve-o como Dog. gender.as.as no mesmo diretório do arquivo de classe Mammal. Salve o documento do ActionScript. Essa classe funciona como a superclasse das classes Cat. Os três métodos finais são getters e setters das propriedades _gender e _name do mamífero. Dog e Monkey.". que é usado para definir a variável privada _gender especificada anteriormente. Crie um novo arquivo do ActionScript e salve-o como Cat. play() e sleep().as no mesmo diretório que os dois arquivos de classes anteriores. } } 5. digite o seguinte código ActionScript na janela Script: class Dog extends Mammal { 8. o construtor Mammal é definido.public function set speciesName(value:String):Void { this. que você criará em breve. 328 Herança . } } A classe anterior define duas variáveis privadas._name = value. sendo que cada um retorna objetos String. Observe que você está substituindo o método play() da superclasse Mammal. 6. Salve as alterações no documento do ActionScript. } public function play():String { return "Pounce a ball of yarn.

9. Salve 13. digite o seguinte código ActionScript na janela Script: class Monkey extends Mammal { // construtor public function Monkey(gender:String) { super(gender). digite o seguinte código ActionScript no Frame (Quadro) 1 da Timeline (Linha de tempo) principal: var mammals_arr:Array = new Array(). crie um novo documento do Flash chamado mammalTest. que ele passa à classe pai da classe Dog. } public function play():String { return "Swing from a tree. Mais uma vez.". passando a propriedade gender para ele e definindo speciesName como a seqüência de caracteres Monkey. Mammal. Agora que você criou três subclasses da classe Mammal. A variável speciesName também é substituída e definida como a seqüência de caracteres Dog. Como as duas classes anteriores. Salve as alterações no documento do ActionScript. O construtor de Dog utiliza uma única propriedade. 12. speciesName = "Monkey". a classe Dog estende a classe Mammal e herda todos os seus métodos e propriedades.". gender. a classe Monkey estende a classe Mammal. 14. outro documento do ActionScript no mesmo diretório que os seus outros arquivos e salve-o como Monkey.// construtor public function Dog(gender:String) { super(gender). as alterações no documento do ActionScript. Cat e Dog. Crie 11.fla. } public function play():String { return "Fetch a stick. O construtor da classe Monkey chama o construtor da classe Mammal.fla. A classe Monkey também substitui o comportamento do método play(). Em Monkey.as. mammalTest. Em Usando o polimorfismo em um aplicativo 329 .as. } } 10. speciesName = "Dog". O método play() também é substituído a partir da classe pai. com exceção de alguns valores que foram alterados. } } Observe que a classe Dog tem uma estrutura muito semelhante à da classe Cat.

} info_txt.createTextField("info_txt". i < len. 15.play() + "</p>".push(new Cat("Male")). var len:Number = mammals_arr. 200.htmlText += "</textformat>". Primeiro ele importa as três classes de animal. info_txt.push(new Dog("Female")). } O código de mammalTest.multiline = true.length.push(new Monkey("Female")). 80).gender + "\t" + mammals_arr[i]. i++) { info_txt. info_txt. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. 10. for (i = 0.fla é um pouco mais complexo do que as classes anteriores. 10. mammals_arr. mammals_arr.htmlText += "<b>Mammal\tGender\tSleep\tPlay</b>". mammals_arr. 300]'>". 10. 450.htmlText = "<textformat tabstops='[110. Você verá as informações de Mammal exibidas em um campo de texto no Stage (Palco) e o seguinte texto no painel Output (Saída): [object [object [object [object Dog] Cat] Monkey] Mammal] 330 Herança . info_txt.wordWrap = true.htmlText += "<p>" + mammals_arr[i].speciesName + "\t" + mammals_arr[i].push(new Mammal("Male")). } function createReport():Void { var i:Number. trace(mammals_arr[i]).html = true. createMammals() createReport() function createMammals():Void { mammals_arr. info_txt.sleep() + "\t" + mammals_arr[i]. info_txt. // A instrução trace chama o método Mammal.toString(). info_txt.this.border = true. // Exiba as informações de Mammal em quatro colunas de texto HTML usando interrupções de tabulação.

. . . . . . . . . . . . . .342 9 Sobre interfaces Na programação orientada a objeto. . . 331 . . Se não estiver familiarizado com a criação de classes. . . . . . . . . . . . . . . . . . . Para obter mais informações sobre o trabalho com interfaces. . . . . . . . . . . elas não “fazem” nada. . 340 Exemplo: Criando uma interface complexa . . . . . . . 337 Noções básicas sobre herança e interfaces . . No ActionScript. . . . uma interface é um documento que permite declarar (porém não definir) os métodos que devem aparecer em uma classe. . . . . . . . . . . . . você será capaz de criar seus próprios arquivos de interface. “Classes. . ou seja. . . . . . . Elas permitem que os desenvolvedores identifiquem facilmente os métodos base das classes do ActionScript. . . . . . . . . . . . . . . . . . . . . . . uma interface consiste em métodos “vazios”. . . . . . . . . . Portanto. . . . . as interfaces assemelham-se a classes cujos métodos não são implementados (definidos). . . . . . . consulte os seguintes tópicos: Sobre interfaces . . as interfaces podem ser muito úteis durante o desenvolvimento. . . . . . . . a distinção entre interface e objeto aplica-se somente à verificação de erros durante a compilação e à imposição de regras de linguagem. . . . . ao concluí-lo. Este capítulo examina algumas interfaces de exemplo e. . . . . . . . . . . . . . . . . . . . . . . . . . Esses métodos devem ser implementados quando os desenvolvedores usam cada interface. . . . . . . . . . Outra classe poderá implementar os métodos declarados pela interface. . . Quando você trabalha em equipes de desenvolvedores ou cria aplicativos maiores no Flash. . . . . . . leia o Capítulo 7. . . . . . . . . . . . . . Programação orientada a objeto). 331 Criando interfaces como tipos de dados. . .” antes de tentar fazer os tutoriais e ler os exemplos apresentados neste capítulo. . . .339 Exemplo: Usando interfaces . .CAPÍTULO 9 Interfaces Na OOP (Object-Oriented Programming. . . . . . . . . . .

Portanto. Uma solução melhor é criar uma interface que declare os métodos que essas classes usam para se comunicar e. Por exemplo. em seguida. ocorrerá um erro do compilador.Uma interface não é uma classe. as interfaces podem tornar o projeto dos aplicativos mais elegante. Uma classe Gato. Ao projetar o aplicativo. ainda. você estabelece um conjunto de métodos que as diferentes classes usarão para se comunicar. cada um responsável por uma classe diferente do mesmo aplicativo. Uma interface também pode ser considerada como um “contrato de programação” que pode ser usado para impor os relacionamentos entre classes não relacionadas de outra maneira. mas permite que ela estenda uma única classe e implemente várias interfaces. em seguida. seus parâmetros e tipos de retorno. Qualquer classe que implemente essa interface deve fornecer definições para esses métodos. você pode programar bem sem usar interfaces.0 não oferece suporte à herança múltipla. fazer cada classe implementar (fornecer suas próprias definições para) esses métodos. pode implementar essa interface e fornecer definições para esses métodos. O modelo de objeto do ActionScript 2. Entretanto. Como o Java. essa afirmativa não é completamente verdadeira no ActionScript durante a execução pois uma interface é abstrata. 332 Interfaces .0 não permite que uma classe estenda várias classes diretamente. É possível usar interfaces para implementar uma forma limitada de herança múltipla. Portanto. suponha que você esteja trabalhando com uma equipe de programadores. pela qual uma classe herda mais de uma classe. o ActionScript 2. quando usadas apropriadamente. que contém os métodos chaseTail() e eatCatNip(). bem como uma classe Playful. não faz sentido impor uma hierarquia de classe comum a elas. A interface é como um protocolo de comunicação ao qual todas as classes devem aderir. Por exemplo. ou qualquer outra classe. Você cria uma interface que declara esses métodos. As interfaces do ActionScript realmente existem na execução para permitir a conversão de tipos (a alteração de um tipo existente de dados em outro tipo). em C++. Normalmente. uma classe pode herdar as características de uma única classe pai. Como o aplicativo consiste em classes que não estão relacionadas. fazer com que cada classe seja estendida a partir dessa superclasse ou herde as características dela. porém. caso contrário. você pode criar uma interface Playful que declara os métodos chaseTail() e eatCatNip(). a classe Cat pode estender a classe Mammal. uma classe definida pelo usuário (personalizada). Uma maneira de fazer isso é criar uma classe que defina todos esses métodos e. dimensionável e fácil de manter. Essa classe pai pode ser uma classe básica ou do Flash Player ou.

com as seguintes diferenças relevantes: ■ As interfaces contêm somente descrições de métodos e não sua implementação. Ou seja. consulte as seguintes seções: ■ ■ ■ “Sobre a palavra-chave interface” na página 333 “Sobre a atribuição de nomes a interfaces” na página 334 “Definindo e implementado interfaces” na página 334 Sobre a palavra-chave interface A palavra-chave interface define uma interface.0 e Flash Player 6 ou uma versão posterior na guia Flash da caixa de diálogo Publish Settings (Configurações de publicação) do arquivo FLA.As interfaces do ActionScript existem durante a execução para permitir a conversão de tipos. membros estáticos e de classe não são permitidos. Para obter mais informações sobre o uso de interfaces. toda classe que implementa uma interface deve fornecer uma implementação para cada método definido na interface. “Sobre a conversão de objetos”. ■ ■ ■ A palavra-chave interface é suportada somente quando usada em arquivos de script externos. consulte “Exemplo: Usando interfaces” na página 340. Somente membros públicos são permitidos em uma definição de interface. Embora uma interface não seja um objeto ou uma classe. consulte “Criando arquivos de classes personalizados” na página 249. As instruções get e set não são permitidas em definições de interface. Para ver um tutorial sobre como criar um aplicativo com interfaces. é necessário especificar ActionScript 2. Para usar a palavra-chave interface. não em scripts criados no painel Actions (Ações). o fluxo de trabalho é semelhante ao existente quando se trabalha com classes. consulte Capítulo 4. Sobre interfaces 333 . na página 117. Uma interface é semelhante a uma classe. Para obter mais informações sobre o fluxo de trabalho de classes.

0”. O nome de interface a seguir. ou criar subinterfaces com base na interface original Criar uma classe que implemente a interface em um arquivo de script externo Para declarar uma interface. só é possível definir interfaces nos arquivos externos do ActionScript.0”. 334 Interfaces . usa uma inicial maiúscula e palavras concatenadas em letras maiúsculas e minúsculas: interface IEmployeeRecords {} NO TA ■ ■ ■ ■ Alguns desenvolvedores iniciam os nomes das interfaces com um “I” maiúsculo para diferenciá-las das classes. “Melhores práticas e convenções de codificação para ActionScript 2. use a palavra-chave interface. O fluxo de trabalho para a criação de uma interface envolve. em um documento do Flash (FLA) ou em um arquivo de script externo. consulte Capítulo 19. os nomes de interfaces iniciam em letra maiúscula. as seguintes etapas: Definir uma interface em um arquivo externo do ActionScript. seguida do nome da interface e de chaves ({}). Para obter mais informações sobre convenções de estruturação de classes e interfaces. na página 767. Para obter mais informações sobre convenções de atribuição de nome. tipos de parâmetro e tipos de retorno de função. que definem o corpo da interface. pois permite distinguir rapidamente entre interfaces e classes comuns. A adoção dessa prática é recomendada. Definindo e implementado interfaces O processo de criação de uma interface é igual ao de criação de uma classe. IEmployeeRecords. consulte “Exemplo: Usando interfaces” na página 340. consulte Capítulo 19. Assim como as classes. no mínimo. Salvar o arquivo da interface em um diretório de caminho de classe designado (o local em que o Flash procura as classes) ou no mesmo diretório que o arquivo FLA do aplicativo Criar uma instância da classe em outro script. incluindo parâmetros.Sobre a atribuição de nomes a interfaces Como os nomes de classes. Para ver um tutorial sobre a criação de um aplicativo que usa uma interface. Esses nomes são geralmente adjetivos como Printable. “Melhores práticas e convenções de codificação para ActionScript 2. na página 767. como mostra o seguinte exemplo: interface IEmployeeRecords { // declarações de método de interface } Uma interface só pode conter declarações de métodos (funções).

digite o seguinte código ActionScript na janela Script: class MyClass { } 5. method1(). Clique no botão Check Syntax (Verificar sintaxe). 6.as no mesmo diretório que IMyInterface. Para instruir a classe personalizada (MyClass) a usar a interface (IMyInterface). Para usar a interface em um aplicativo. O segundo método. 2. public function method2(param:String):Boolean.as (adicione o código em negrito) de acordo com o seguinte trecho: class MyClass implements IMyInterface { } Coloque a palavra-chave implements depois do nome da classe. method1() e method2(). No arquivo de classe MyClass. O primeiro método. tem um único parâmetro de tipo String e especifica um tipo de retorno Boolean. 4. Salve as alterações no arquivo do ActionScript. Para criar uma interface simples: 1. Modifique o código ActionScript em MyClass. O Flash exibe um erro no painel Output (Saída) informando que MyClass deve implementar o método X da interface IMyInterface. é necessário usar a palavra-chave implements. é necessário criar primeiro uma classe que implemente a nova interface. não possui parâmetros e especifica o tipo de retorno Void (que indica que ele não retorna um valor). Crie um novo arquivo do ActionScript e salve-o como IMyInterface. a qual especifica que uma classe deve definir todos os métodos declarados na(s) interface(s) implementada(s).Por exemplo.as. 7. Modifique o documento MyClass novamente (adicione o código em negrito) e crie o código ActionScript para os métodos method1() e method2(). Crie um novo arquivo do ActionScript e salve-o como MyClass.as. Digite o seguinte código ActionScript na janela Script: interface IMyInterface { public function method1():Void. como mostra o seguinte trecho: Sobre interfaces 335 . o código a seguir declara uma interface chamada IMyInterface que contém dois métodos. 8. } 3. method2(). Essa mensagem de erro é exibida porque toda classe que estende uma interface deve definir cada método listado no documento da interface.

O painel Output não exibe mais mensagens de erro ou avisos porque agora você definiu os dois métodos. Não são permitidos getters/setters em interfaces.. private function illegalPrivateMethod():Void. Declarações de variáveis não permitidas em interfaces. As regras para atribuir nome a interfaces e armazená-las nos pacotes são as mesmas usadas para as classes. 336 Interfaces . // Erro do compilador. Salve o documento MyClass.. // Erro do compilador. O arquivo de interface descreve apenas os métodos mínimos que devem ser implementados.. As classes que implementam uma interface quase sempre incluem métodos getter e setter.class MyClass implements IMyInterface { public function method1():Void { // .. } } 9. public function get illegalGetter():String. } Para ver um tutorial que demonstra como criar uma interface complexa. consulte “Exemplo: Usando interfaces” na página 340. O arquivo de classe criado não se limita aos métodos públicos definidos no arquivo de interface.as e clique em Check Syntax. public function method2(param:String):Boolean { // . return true. }. Os arquivos de interface não podem conter declarações de variáveis nem atribuições. As funções declaradas em uma interface não podem conter chaves. Não são permitidos métodos privados em interfaces. consulte “Sobre a atribuição de nomes a arquivos de classes” na página 280. a interface a seguir não é compilada: interface IBadInterface { // Erro do compilador. public function illegalMethod():Void { } // Erro do compilador. Por exemplo. bem como os tipos de retorno e as propriedades desses métodos. Corpos de função não permitidos em interfaces. public var illegalVar:String. variáveis e métodos adicionais.

Crie um novo documento do ActionScript e salve-o como Box. Nesse documento. Crie um novo documento do ActionScript e salve-o no disco rígido como IMovable. public var yPos:Number. Crie um novo documento do Flash chamado boxTest.as.as. Qualquer classe que implementa uma interface pode ser considerada como sendo do tipo definido pela interface.as no mesmo diretório que IMovable. criada no exemplo a seguir. Em IMovable. Salve as alterações no arquivo do ActionScript. crie uma classe Box que implementa a interface IMovable criada em uma etapa anterior. 5. public function moveDown():Void. 4.as. // definição de método } public function moveDown():Void { trace("moving down").as. Em Box. uma interface define um novo tipo de dados. public function Box() { } public function moveUp():Void { trace("moving up"). considere a interface IMovable. digite o seguinte código ActionScript na janela Script: class Box implements Movable { public var xPos:Number.Criando interfaces como tipos de dados Como uma classe. 2. } 3. Por exemplo. Para criar uma interface como um tipo de dados: 1. Salve as alterações no documento do ActionScript. // definição de método } } 6. digite o seguinte código ActionScript na janela Script: interface IMovable { public function moveUp():Void. Criando interfaces como tipos de dados 337 . 7.fla e salve-o no mesmo diretório que os dois documentos anteriores do ActionScript. Esse recurso é útil para determinar se um objeto específico implementa uma determinada interface.

“Sobre a conversão de objetos”. o método Box. que você declara como uma variável do tipo Box. o permite a conversão de tipos. 338 Interfaces . Caso contrário. consulte Capítulo 4. } Esse código ActionScript verifica se a instância newBox implementa a interface IMovable antes da chamada do método moveUp() no objeto. Para obter mais informações sobre conversão de tipos. 9. 11. Como a instância Box implementa a interface IMovable. abra o editor do ActionScript e digite o seguinte código ActionScript no painel Actions (Ações) (ou janela Script): var newBox:Box = new Box().fla: if (IMovable(newBox) != null) { newBox. Adicione o código a seguir ao final do código ActionScript em boxTest. na página 117.moveUp(). Esse recurso é útil para verificar se determinado objeto implementa uma interface específica. else { trace("box instance is not movable"). Para obter mais informações sobre conversão. No Flash Player 7 e versões posteriores. “Sobre a conversão de objetos”. você pode converter uma expressão em um tipo de interface ou em outro tipo de dados durante a execução. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo). será retornado null. e o texto “moving up” é exibido no painel Output (Saída).moveUp() é chamado.8. Esse código ActionScript cria uma instância da classe Box. o objeto será retornado. Salve o documento do Flash e selecione Control > Test Movie para testar o arquivo SWF. consulte Capítulo 4. na página 117. Se a expressão for um objeto que implemente a interface ou tenha uma superclasse que implemente a interface. Diferentemente das interfaces do Java. Salve as alterações no documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. 10. as interfaces do ActionScript existem durante a execução.

Noções básicas sobre herança e interfaces Você pode usar a palavra-chave extends para criar subclasses de uma interface.as. 7. Para estender uma interface: 1. mas tiverem parâmetros ou tipos de retorno diferentes. Isso poderá ser muito útil em projetos maiores quando se deseja estender uma interface existente (ou criar uma subclasse dela) e adicionar outros métodos. digite o seguinte código ActionScript na janela Script: class ClassA implements Ib { // f1() e f2() são definidos na interface Ia. 4. digite o seguinte código ActionScript na janela Script: interface Ib extends Ia { public function f8():Void.as na mesma pasta que o arquivo Ia. No arquivo Ib. Crie um novo arquivo do ActionScript e salve-o como Ib. public function f1():Void { } public function f2():Void { } 8. public function f9():Void. Em Ia. Uma consideração a ser feita ao estender interfaces é que serão exibidas mensagens de erro no Flash se vários arquivos de interface declararem funções com os mesmos nomes. 2.as. Noções básicas sobre herança e interfaces 339 . Salve as alterações no arquivo do ActionScript. Crie um novo arquivo do ActionScript e salve-o como ClassA. Salve as alterações no arquivo do ActionScript. } 5.as no mesmo diretório que os dois arquivos anteriores. digite o seguinte código ActionScript na janela Script: interface Ia { public function f1():Void.as criado na etapa 1. public function f2():Void. } 3. Esses métodos devem ser definidos por todas as classes que implementam essa interface. Em ClassA.as. 6.as. O exemplo a seguir demonstra como uma criar uma subclasse de um arquivo de interface com a palavra-chave extends. Crie um novo arquivo do ActionScript e salve-o como Ia.

public function searchHelp(keyword:String):Array. se uma classe estendesse uma superclasse e implementasse várias interfaces. 2. você criará uma interface simples que poderá ser reutilizada entre várias classes diferentes. 6. você usaria um código semelhante ao seguinte: class ClassA extends ClassB implements Ib.as e salveo como FlashPaper. NO T A No ActionScript 2.. digite o seguinte código ActionScript na janela Script: interface IDocumentation { public function downloadUpdates():Void. 4.}. Em IDocumentation. } 3. Ou. Salve o arquivo de classe e clique no botão Check Syntax (Verificar sintaxe) acima da janela Script. Em FlashPaper. que estende Ia.// f8() e f9() são definidos na interface Ib. as classes só podem estender uma classe. digite o seguinte código ActionScript na janela Script: class FlashPaper implements IDocumentation { } 5. Salve as alterações efetuadas no arquivo do ActionScript. Exemplo: Usando interfaces Neste exemplo. embora seja possível usá-las para implementar tantas interfaces quantas forem desejadas. Ic. public function checkForUpdates():Boolean. O Flash não gerará mensagens de erro desde que todos os quatro métodos sejam definidos e correspondam às definições de seus respectivos arquivos de interface.. separe simplesmente as interfaces com vírgulas. 340 Interfaces . Crie um novo arquivo do ActionScript e salve-o como IDocumentation. Crie um novo arquivo do ActionScript no mesmo diretório que IDocumentation. Para criar uma interface: 1.as. Para que a classe ClassA implemente várias interfaces no exemplo anterior. Id {.0.as.as. public function f8():Void { } public function f9():Void { } } 9.as. Salve as alterações efetuadas no arquivo de interface do ActionScript.

N OT A Você pode adicionar ao arquivo de classe FlashPaper quantas variáveis ou métodos estáticos.3. Desta vez. Abra o arquivo de classe FlashPaper. public function checkForUpdates():Boolean { return true. } 9.as novamente e modifique o código ActionScript de acordo com o seguinte código: class FlashPaper implements IDocumentation { private static var __version:String = "1. 8. public function downloadUpdates():Void { }. É exibida uma mensagem de erro semelhante a esta: **Error** path\FlashPaper. comment:String):Void. Abra o documento de interface IDocumentation novamente e adicione a seguinte linha de código em negrito (abaixo do método searchHelp()): interface IDocumentation { public function downloadUpdates():Void. Exemplo: Usando interfaces 341 . public function addComment(username:String. públicos ou privados desejar. }. public function searchHelp(keyword:String):Array { return [] }.as: Line 1: The class must implement method 'checkForUpdates' from interface 'IDocumentation'. Salve as alterações no arquivo de interface e reabra o documento FlashPaper. public function searchHelp(keyword:String):Array. class FlashPaper implements IDocumentation { Total ActionScript Errors: 1 Reported Errors: 1 Esse erro aparece porque a classe FlashPaper atual não define nenhum dos métodos públicos que você definiu na interface IDocumentation.4". public function checkForUpdates():Boolean.as. O arquivo de interface define somente um conjunto de métodos mínimos que devem aparecer em qualquer classe que implemente essa interface. } 11. 10. nenhum erro é exibido no painel Output (Saída).2. Clique no botão Check Syntax (Verificar sintaxe) referente à classe do ActionScript. Salve as alterações no arquivo do ActionScript e clique em Check Syntax novamente.7.

Exemplo: Criando uma interface complexa O exemplo a seguir mostra várias maneiras de definir e implementar interfaces. Nesta seção. Ao clicar no botão Check Syntax.as e clique no botão Check Syntax. embora ela adicione alguns outros métodos e propriedades. depois disso. 342 Interfaces .as: Line 1: The class must implement method 'addComment' from interface 'IDocumentation'. Crie um novo documento do ActionScript e salve-o como InterfaceA. Crie uma nova pasta chamada complexInterface e salve InterfaceA. Para corrigir esse erro. Salve todos os arquivos criados para este tutorial nesse diretório. Neste tutorial. comment:String):Void { /* Envie parâmetros para a página do servidor. você aprenderá a criar um arquivo de interface simples e uma classe que implemente várias interfaces. você não deverá receber mais erros. Para criar uma interface complexa: 1. pois será possível identificar facilmente os métodos necessários na nova classe.as não define mais todas as classes descritas no arquivo de interface. adicione o método addComment() à classe FlashPaper ou remova a definição do método do arquivo de interface IDocumentation. 2. Aprenderá também a fazer com que as interfaces estendam outras interfaces para criar estruturas de dados mais complexas. class FlashPaper implements IDocumentation { Total ActionScript Errors: 1 Reported Errors: 1 O erro anterior aparece porque o arquivo de classe FlashPaper. que insere um comentário no banco de dados.12. */ } 14. você criou uma classe com base no arquivo de interface IDocumentation. Este tutorial demonstra a utilidade de usar interfaces quando você deseja criar outra classe que estenda a interface IDocumentation. você criará uma nova classe que também implementará a interface IDocumentation.as nesse diretório. Adicione o seguinte método à classe FlashPaper: public function addComment(username:String. Salve as alterações em FlashPaper. 13. você vê uma nova mensagem de erro no painel Output: **Error** path\FlashPaper.as. Na seção anterior.

que são os resultados dos métodos k() e n() da classe ClassB. // 25 trace(myB.3. digite o seguinte código ActionScript na janela Script: // nome do arquivo: InterfaceA. } } 5. Em classbTest. } public function n(z:Number):Number { return (z + 5). crie um novo documento do ActionScript chamado ClassB. Exemplo: Criando uma interface complexa 343 .fla. } 4. crie um novo documento do Flash e salve-o como classbTest.fla import ClassB. Salve as alterações no documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento.as interface InterfaceA { public function k():Number. digite o seguinte código ActionScript na janela Script: // nome do arquivo: ClassB. ClassB. Esse arquivo de classe implementa a interface InterfaceA criada na etapa 1. Esse arquivo de classe testa a classe ClassB criada anteriormente. 6.as implementa a interface InterfaceA criada anteriormente. em seguida. Em ClassB. Salve o documento do ActionScript. 25 e 12.as. var myB:ClassB = new ClassB().as. digite o seguinte código ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): // nome do arquivo: classbTest.as class ClassB implements InterfaceA { public function k():Number { return 25.n(7)). 8.fla no diretório complexInterface. trace(myB. O painel Output (Saída) exibe dois números. em seguida. Salve as alterações no documento ClassB.as no diretório complexInterface. // 12 7.as.k()). Em Interface. Crie um novo arquivo do ActionScript e salve-o como ClassC.as e salve-o no diretório complexInterface. 9. public function n(z:Number):Number.

} public function n(z:Number):Number { return (z * z). é importante definir métodos para cada entrada da interface.as no diretório complexInterface. Crie um novo documento do ActionScript e salve-o como InterfaceB. } 12. InterfaceB.as. digite o seguinte código ActionScript na janela Script: // nome do arquivo: ClassD.as class ClassD implements InterfaceA. digite o seguinte código ActionScript na janela Script: // nome do arquivo: InterfaceB. Em 13. } public function o():Void { trace("o"). 11.as.as. Ao criar classes que implementam uma interface. InterfaceB { public function k():Number { return 15.as. Salve as alterações no documento InterfaceB. 14. } Se você clicar no botão Check Syntax (Verificar sintaxe) referente ao arquivo de classe ClassC. em seguida. crie um novo documento do ActionScript e salve-o como classD.as interface InterfaceB { public function o():Void. Essa classe implementa as interfaces InterfaceA e InterfaceB criadas em etapas anteriores. } // **Erro** A classe também deve implementar o método 'n' da interface 'InterfaceA'.10. o Flash exibirá uma mensagem de erro no painel Output informando que a classe atual deve implementar o método n() definido na interface InterfaceA. digite o seguinte código ActionScript na janela Script: // nome do arquivo: ClassC.as no diretório complexInterface. A ClassD deve incluir implementações de cada um dos métodos listados em cada arquivo de interface. } } 344 Interfaces .as class ClassC implements InterfaceA { public function k():Number { return 25. Em ClassD. Em ClassC.

Essa classe implementa duas interfaces. } 20. Os valores 15. No // nome do arquivo: ClassE. trace(myD. 49 e a letra o devem ser exibidos no painel Output. } public function o():Void { trace("o").as no diretório complexInterface. Em classdTest.k()). // o 16. digite o seguinte código ActionScript na janela Script: // nome do arquivo: InterfaceC.as interface InterfaceC extends InterfaceA { public function p():Void. } } Exemplo: Criando uma interface complexa 345 . Salve as alterações no arquivo ClassD.as. em seguida. Essa interface estende a interface InterfaceA criada anteriormente e adiciona uma nova definição de método. 17. adicione o seguinte código ActionScript ao Frame 1 da Timeline: // nome do arquivo: classdTest.o().n() e ClassD. crie um novo arquivo do ActionScript e salve-o como ClassE. var myD:ClassD = new ClassD(). // 15 trace(myD. } public function n(z:Number):Number { return (z + 5). 18. digite o seguinte código ActionScript na janela Script: 21.Salve as alterações no arquivo do ActionScript. ClassD.as. arquivo ClassE.as class ClassE implements InterfaceB.k(). // 49 myD.fla.fla import ClassD. } public function p():Void { trace("p").fla e selecione Control > Test Movie para testar o arquivo. Salve as alterações no arquivo classdTest.o() respectivamente. Crie um novo documento do ActionScript e salve-o como InterfaceC. Esses valores são os resultados dos métodos ClassD.15. em seguida. crie um novo documento do Flash e salve-o como classdTest.as. InterfaceC { public function k():Number { return 15.n(7)).as.fla. Esse documento do Flash testa a classe ClassD criada anteriormente. InterfaceB e InterfaceC. Em InterfaceC. 19.

Salve 23.p().22. em seguida.fla import ClassE.No as alterações no documento do ActionScript. // 12 myE. // 15 trace(myE. crie um novo documento do Flash e salve-o como classeTest. var myE:ClassE = new ClassE().fla. arquivo classeTest. Os valores 15.k(). // p 24. ClassE.fla no diretório complexInterface. Esses valores são retornados pelos métodos ClassE.Salve o documento do Flash e selecione Control > Test Movie para testar o arquivo SWF. Embora as interfaces InterfaceB e InterfaceC definam somente os métodos o() e p(). trace(myE.o() e ClassE. Isso significa que todos os métodos definidos por ela.k()). // o myE.n(). digite o seguinte código ActionScript no Frame 1 da Timeline: // nome do arquivo: classeTest. a InterfaceC estende a InterfaceA. 346 Interfaces .o().n(7)). ClassE. k() e n().p(). 12. também devem ser implementados. o e p são exibidos no painel Output. cada método dos dois arquivos de interface deve ser definido. Como a classe ClassE implementou as interfaces InterfaceB e InterfaceC.

o manipulador de eventos ainda estará disponível depois que o novo código for carregado. em seguida. %{on handler}% e %{onClipEvent handler}%. depois que um arquivo XML for carregado pela rede. “Transmitindo eventos de instâncias de componentes” na página 360 ■ O uso de manipuladores de eventos com %{loadMovie (MovieClip. Para que seu aplicativo reaja a eventos. se você usar %{onClipEvent handler}% ou %{on handler}% para anexar um manipulador de eventos a um clipe de filme e.CAPÍTULO 10 Manipulando eventos Eventos são ações que ocorrem enquanto um arquivo SWF é reproduzido. Você pode manipular eventos no ActionScript de várias maneiras: ■ ■ ■ 10 “Usando métodos manipuladores de eventos” na página 348 “Usando ouvintes de eventos” na página 351 “Usando manipuladores de eventos de botão e de clipe de filme” na página 355. ou se criar um manipulador dinâmico usando um método como %{onPress (MovieClip. 347 . porque não é gerado diretamente pelo usuário. Um evento. em seguida. chama-se evento do sistema. Um evento gerado automaticamente pelo Flash Player. chamar loadMovie() nesse clipe. o seu conteúdo poderá ser exibido em um campo de texto. Por exemplo.loadMovie method)}% pode ser imprevisível. o manipulador de eventos não estará disponível depois que o novo conteúdo for carregado. um código ActionScript associado a um objeto e a um evento específicos. já que é o resultado de uma interação direta com o usuário. chamar loadMovie(). quando um usuário clicar em um botão no Stage (Palco). Ou. especificamente.onPress handler)}% e. Se você anexar um manipulador de eventos a um botão usando on(). como um clique com o mouse ou um pressionamento de tecla. Entretanto. como a aparência inicial de um clipe de filme no Stage (Palco). você poderá avançar a reprodução até o próximo quadro. você deve usar manipuladores de eventos. é chamado de evento do usuário.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Para obter mais informações sobre os manipuladores de eventos fornecidos por elas. . . . A função atribuída ao manipulador de eventos é chamada automaticamente sempre que o evento ocorre. . . . . . . . . . . . . o Flash Player chama esse manipulador automaticamente quando ocorre o evento apropriado. . . . Selection. . Sound. . . . . . . . Para que seu aplicativo responda ao evento. Key. . . . . . . . . Mouse. . . . . . . ContextMenu. LocalConnection. . . . . . . . . . . . . . . . . . . . defina uma função com a instrução de função e atribua essa função ao manipulador de eventos apropriado. . . . . . . . . . . . . . . . A palavra handler é adicionada ao título de cada manipulador de eventos. . . . . 348 Manipulando eventos .355 Transmitindo eventos de instâncias de componentes . . consulte as entradas correspondentes a cada classe em ActionScript 2. . . . . Stage. . . . . . o manipulador de eventos não é chamado diretamente. . Ao contrário de outros métodos de classe. . .362 Escopo da palavra-chave this . . . . .365 Usando a classe Delegate . . . . . 360 Criando clipes de filme com estados de botão . . . . . . . . . . . . . . a classe MovieClip define um manipulador de eventos onPress que é chamado sempre que o botão do mouse é pressionado em um objeto de clipe de filme. . . . . . . . . . XML e XMLSocket. .366 Usando métodos manipuladores de eventos Um método manipulador de eventos é o método de uma classe que é chamado quando ocorre um evento em uma instância dessa classe.353 Usando manipuladores de eventos de botão e de clipe de filme. . . . .0). . . . . . . . . . . 351 Usando ouvintes de eventos com componentes . Por padrão. . . . . . . . . Por exemplo. . . . LoadVars. . . . . . As seguintes classes do ActionScript são exemplos de classes que definem manipuladores de exemplos: Button. . . MovieClip. o manipulador correspondente é chamado. . . . . . . . . . . . . . . . consulte as seguintes seções: Usando métodos manipuladores de eventos . . ContextMenuItem. . . . os métodos manipuladores de eventos são indefinidos: quando ocorre um evento específico. . . . TextField. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . porém. . . . . . . . . . . . . .348 Usando ouvintes de eventos . . . . . MovieClipLoader. . . . . . . . . . . . . . . . . . . . . mas o aplicativo não responde mais ao evento. .0 Language Reference (Referência da linguagem ActionScript 2. . . 361 Escopo do manipulador de eventos . . . . SharedObject. . . . . . . . . . . .Para obter mais informações sobre a manipulação de eventos. . . . . .

} No exemplo a seguir. imagine que exista um botão chamado next_btn no Stage (Palco). next_btn.onSetFocus é chamado quando uma instância de campo de texto ganha o foco do teclado. Recebendo parâmetros passados Usando métodos manipuladores de eventos 349 . como mostra este exemplo: // Atribua uma referência de função ao manipulador de eventos onPress do botão. Esse manipulador de eventos recebe uma referência ao objeto de campo de texto que tinha o foco do teclado.eventMethod = function () { // Insira seu código aqui em resposta ao evento.onPress = goNextFrame. // Defina a função goNextFrame(). a função nextFrame() é atribuída diretamente a um manipulador de eventos onPress.onPress = function () { nextFrame(). essa função avança a reprodução até o próximo quadro na linha de tempo atual: next_btn. function goNextFrame() { nextFrame(). o nome do método manipulador de eventos do objeto e a função atribuída ao manipulador de eventos.onPress = goNextFrame. } Por exemplo. posteriormente.onPress = goNextFrame(). O exemplo a seguir mostra a estrutura básica de um manipulador de eventos: object. Por exemplo. observe que você atribui a referência da função. o manipulador de eventos TextField. O código a seguir atribui uma função ao manipulador de eventos onPress do botão. ao manipulador de eventos onPress: // Incorreto! next_btn. Também é possível atribuir uma referência de função (nome) a um método manipulador de eventos e. e não seu valor de retorno. definir a função. next_btn. Alguns manipuladores de eventos recebem parâmetros passados com informações sobre o evento ocorrido. } Atribuindo uma referência de função No código anterior.Um manipulador de eventos consiste em três partes: o objeto ao qual se aplica o evento. // Correto.

“Classes. o código a seguir insere um texto em um campo de texto que não tem mais o foco do teclado: this. 20). newclip_mc. 10. 100. } Para obter mais informações. O código a seguir substitui o manipulador de eventos onPress da classe MovieClip por uma função que diminui a transparência do clipe de filme: Substituindo métodos manipuladores de eventos // Classe FadeAlpha – define a transparência quando você clica no clipe de filme.createTextField("myOther_txt". 99. myOther_txt.border = true.onPress = function () { trace("You pressed me").text = "I just lost keyboard focus". Para obter informações sobre a criação e o trabalho com classes personalizadas. myOther_txt. 10.type = "input". this. }. "newclip_mc". } } Para obter instruções específicas sobre a extensão de uma classe do ActionScript e a vinculação a um símbolo da biblioteca. 200. consulte Capítulo 7._alpha -= 10. Manipuladores de eventos de objetos criados durante a execução Também é possível atribuir funções a manipuladores de eventos de objetos criados durante a execução. o código a seguir cria uma nova instância de clipe de filme (newclip_mc) e atribui uma função ao manipulador de eventos onPress do clipe. Por exemplo. 20). this. vinculando qualquer símbolo da biblioteca da classe estendida à nova subclasse. my_txt.Por exemplo.type = "input". my_txt.” 350 Manipulando eventos . 10. A criação de uma classe que estenda uma classe do ActionScript permite substituir os métodos manipuladores de eventos pelas funções criadas.attachMovie("symbolID". Você pode definir um manipulador de eventos em uma nova subclasse que poderá ser reutilizada para diversos objetos. 10). myOther_txt.createTextField("my_txt". consulte “Criando clipes de filme durante a execução” na página 378. 200. consulte os exemplos fornecidos em “Atribuindo uma classe a símbolos no Flash” na página 295.border = true.onSetFocus = function(my_txt:TextField) { my_txt. 50. class FadeAlpha extends MovieClip { function onPress() { this.

navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/StageSize. os diversos códigos entram em conflito ao tentarem controlar essa referência única da função de retorno de chamada XML. receba eventos transmitidos por outro objeto.width e Stage.Usando ouvintes de eventos Os ouvintes de eventos permitem que um objeto. para que recebam eventos de um único transmissor. na pasta Samples no disco rígido. O objeto transmissor registra o objeto ouvinte para que receba eventos gerados por ele. o modelo de ouvinte/transmissor de eventos permite que vários códigos ouçam o mesmo evento sem que haja conflito.onLoad.0 Language Reference. No Macintosh. chamado objeto ouvinte. É possível encontrar um arquivo de origem de exemplo. você pode registrar um objeto de clipe de filme para que receba notificações onResize do Stage (Palco). É possível registrar vários objetos ouvintes.height quando a janela do navegador é redimensionada. Por exemplo. como XML. %{Mouse}%. ou uma instância de botão pode receber notificações onChanged de um objeto de campo de texto. stagesize. %{Selection}%. para que receba eventos de vários transmissores.onLoad(). %{MovieClipLoader}%. As seguintes classes do ActionScript podem transmitir eventos: %{Key}%. chamado objeto transmissor. Diferentemente dos métodos manipuladores de eventos. podem criar problemas quando vários códigos ouvem o mesmo evento. consulte os seguintes tópicos: ■ ■ “Modelo de ouvinte de evento” na página 351 “Exemplo de ouvinte de eventos” na página 352 A classe Stage podem transmitir eventos. ■ Modelo de ouvinte de evento O modelo de evento para ouvintes de eventos é semelhante ao de manipuladores de eventos (consulte “Usando métodos manipuladores de eventos” na página 348).scaleMode afeta os valores de Stage. com duas diferenças principais: Usando ouvintes de eventos 351 . Com o modelo de ouvinte/transmissor. Os modelos de eventos que não usam o modelo de ouvinte/transmissor.fla. Para obter mais informações sobre ouvintes de eventos. %{Stage}% e %{TextField}%. Esse exemplo demonstra como a propriedade Stage. é possível adicionar facilmente ouvintes ao mesmo evento sem que haja gargalos de código. ■ No Windows. consulte a entrada correspondente a cada classe no ActionScript 2. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\StageSize. e registrar um único objeto ouvinte. Para ver os ouvintes disponíveis para uma classe.

listenerObject.■ O manipulador de eventos é atribuído ao objeto ouvinte. Para cancelar o registro de um objeto ouvinte para o recebimento de eventos. como uma instância de um objeto. broadcasterObject. O objeto ouvinte pode ser qualquer objeto. ele também pode ser uma instância de uma classe do ActionScript. clipe de filme ou botão existente no Stage (Palco). listenerObject. que registra o objeto ouvinte para receber seus eventos. crie um campo de texto no Stage (Palco). A propriedade eventName é um evento que ocorre em broadcasterObject.removeListener(listenerObject). O código inicia com um objeto.addListener(listenerObject). o qual transmite o evento para listenerObject. e não ao objeto que transmite o evento. Com a ferramenta Text (Texto). Você pode registrar vários ouvintes para um transmissor de eventos. no inspetor Properties (Propriedades). passando para ele o nome do evento a ser removido e do objeto ouvinte. Selecione o campo de texto e. e a borda do campo de texto que perdeu o foco é desativada. addListener(). passando para ele o objeto ouvinte. chame o método do objeto transmissor. Você chama um método especial do objeto transmissor. a borda do campo de texto que recebe o foco do teclado é ativada (exibida). 352 Manipulando eventos .eventName = function(eventObj:Object) { // Aqui entra o seu código }. um clipe de filme personalizado poderia implementar os métodos ouvintes para os ouvintes do Stage. com a propriedade eventName. 2. Por exemplo. Atribua uma função ao ouvinte de eventos que responda de alguma forma ao evento. Exemplo de ouvinte de eventos O exemplo a seguir mostra como usar o ouvinte de eventos onSetFocus na classe Selection para criar um gerenciador de foco simples para um grupo de campos de texto de entrada. chame o método addListener() no objeto transmissor. Para criar um gerenciador de foco simples com ouvintes de eventos: 1. removeEventListener() broadcasterObject. ■ O código a seguir descreve o modelo de ouvinte de eventos: var listenerObject:Object = new Object(). selecione Input (Entrada) no menu pop-up Text Type (Tipo de texto) e selecione a opção Show Border Around Text (Mostrar borda em torno do texto). Também poderia existir um objeto que ouvisse vários tipos de ouvintes. Nesse caso. Finalmente.

var focusListener:Object = new Object(). e outra ao campo de texto que ganhou o foco.border = true. A função define a propriedade border do campo de texto que perdeu o foco como false e a propriedade border do campo de texto que ganhou o foco como true.onSetFocus = function(oldFocus_txt:TextField. Você pode continuar a criar os campos de texto de entrada. Selection. focusListener. Verifique se a opção Show Border Around Text não está selecionada para esse campo de texto. clique no primeiro campo de texto e pressione a tecla Tab para alternar o foco entre os campos.border = false. Selecione Frame 1 (Quadro 1) na Timeline (Linha de tempo) e abra o painel Actions (Ações). digite o seguinte código no painel Actions: // Cria um objeto ouvinte. 6. Para criar um objeto que ouça a notificação de foco da classe Selection.3. 4. Crie outro campo de texto de entrada abaixo do primeiro. newFocus_txt:TextField) { oldFocus_txt. O exemplo a seguir mostra como usar ouvintes de eventos para monitorar o andamento do download de uma imagem carregada dinamicamente.addListener(focusListener). 7. Teste o aplicativo em Control (Controlar) > Test Movie (Testar filme). Usando ouvintes de eventos com componentes A sintaxe do ouvinte de eventos é ligeiramente diferente quando se trabalha com componentes. Esse código cria um objeto chamado focusListener que define a propriedade onSetFocus e atribui uma função a ela. em Window (Janela) > Actions. // Define a função do objeto ouvinte. adicione o seguinte código ao painel Actions: // Registra focusListener no transmissor. focusListener. Os componentes geram eventos que devem ser ouvidos por meio de um objeto ouvinte ou de uma função personalizada. } 5. newFocus_txt. Para registrar o objeto focusListener para receber eventos do objeto Selection. A função usa dois parâmetros: uma referência ao campo de texto que perdeu o foco. Usando ouvintes de eventos com componentes 353 .

// progress trace("\t" + evt_obj. e se a imagem tiver sido armazenada em cache no sistema local do usuário.target. Arraste uma instância do componente Loader do painel Components (Componentes) para o Stage (Palco). 3. loaderListener). Finalmente.security. e várias mensagens são exibidas no painel Output. instrua a instância my_ldr a ouvir cada um dos dois eventos especificados (progress e complete) e especifique a função ou o objeto ouvinte a ser executado quando o evento é disparado. Quando cada um desses eventos for disparado. 2.jpg").type). Selecione o carregador e digite my_ldr na caixa de texto Instance Name (Nome da instância) no inspetor Properties (Propriedades). se você testar o arquivo SWF na ferramenta de criação. o evento progress poderá ser disparado várias vezes. o código correspondente será executado e o texto de depuração será exibido no painel Output (Saída). O download da imagem é feito na instância Loader no Stage. Dependendo do tamanho da imagem para download.type). my_ldr. A principal diferença é que você deverá usar o método addEventListener() em vez de chamar addListener().target. 4.complete = function(evt_obj:Object):Void { trace(evt_obj. o método Loader.com/flash/images/image1. Depois. System.helpexamples. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. var loaderListener:Object = new Object().bytesLoaded + " of " + evt_obj. especifique o evento que deseja ouvir bem como a função ou o objeto ouvinte de eventos.allowDomain("http://www. você usará uma sintaxe ligeiramente diferente daquelas mostradas nos exemplos anteriores para os ouvintes de eventos. Ao trabalhar com componentes e disparar eventos.progress = function(evt_obj:Object):Void { trace(evt_obj.helpexamples. // complete } my_ldr.bytesTotal + " bytes loaded").load() é chamado e ativa o download da imagem.addEventListener("complete". Esse código ActionScript define um objeto ouvinte chamado loaderListener. Em seguida. 354 Manipulando eventos . my_ldr.load("http://www. } loaderListener. que ouve dois eventos: progress e complete. enquanto o evento complete só será disparado depois que o download da imagem tiver sido concluído.com").addEventListener("progress". loaderListener). Adicione o código a seguir ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal. loaderListener.Para ouvir eventos do componente Loader: 1.

load(). } function completeListener(evt_obj:Object):Void { trace(evt_obj. insira o código no painel Actions (Ações).com"). Usando manipuladores de eventos de botão e de clipe de filme Você pode anexar manipuladores de eventos diretamente a uma instância de um botão ou clipe de filme no Stage (Palco) usando os manipuladores de eventos onClipEvent() e on().addEventListener("complete". é possível que o carregamento seja concluído antes da definição completa dos ouvintes. Não confunda manipuladores de eventos de botão e de clipe de filme com eventos de componentes.com/flash/images/image1. my_ldr. consulte “Anexando código a objetos” na página 783.addEventListener("progress". e o manipulador on() manipula eventos de botões. Isso significa que o conteúdo poderá ser exibido. my_ldr. function progressListener(evt_obj:Object):Void { trace(evt_obj.Em vez de usar um objeto ouvinte.helpexamples.type).click. os ouvintes de eventos são sempre adicionados antes da chamada do método Loader. é possível usar uma função personalizada.helpexamples.load("http://www. que devem ser anexados a instâncias de componentes e são abordados em Using Components (Usando componentes).Clipe de filme). // complete } N OT A N OT A Nos exemplos anteriores.bytesTotal + " bytes loaded"). UIObject.allowDomain("http://www. Usando manipuladores de eventos de botão e de clipe de filme 355 .load() antes de especificar os ouvintes de eventos. completeListener).png").reveal. Para obter diretrizes sobre o uso de código anexado a instâncias de botão ou de clipe de filme.bytesLoaded + " of " + evt_obj.type). O código do exemplo anterior poderia ser recriado da seguinte maneira: System.Botão) ou Actions Panel . como SimpleButton. e o evento complete talvez não seja capturado.security. // progress trace("\t" + evt_obj. progressListener). como no primeiro procedimento em “Usando ouvintes de eventos com componentes” na página 353. O manipulador onClipEvent() transmite eventos de clipes de filme.hide e UIObject. my_ldr.Button (Painel Ações .target. O título do painel Actions indica se o código será anexado ao botão ou ao clipe de filme: Actions Panel .target. Se você chamar o método Loader. em seguida.Movie Clip (Painel Ações . clique na instância no Stage para colocá-la em foco e. Para anexar um manipulador de eventos a uma instância de um botão ou de um clipe de filme.

Consulte “Escopo do manipulador de eventos” na página 362. Entretanto. com o método attachMovie()). Por exemplo. é possível usar os métodos on() e onClipEvent(). para o qual você define uma função que instrui um objeto do Stage (Palco) a girar.) NO TA ■ ■ ■ Anexar os manipuladores onClipEvent() e on() não é uma prática recomendada. e pode ter um método onPress(). consulte “Usando métodos manipuladores de eventos” na página 348 e “Anexando código a objetos” na página 783. Quando você clica no botão. Não há conflito entre o uso dos métodos on() e onClipEvent() e dos métodos manipuladores de eventos definidos por você. consulte os seguintes tópicos: “Usando on e onClipEvent com métodos manipuladores de eventos” na página 356 “Especificando eventos para os métodos on ou onClipEvent” na página 358 “Anexando ou atribuindo vários manipuladores a um objeto” na página 359 Usando on e onClipEvent com métodos manipuladores de eventos Em alguns casos. Não é possível anexar onClipEvent() ou on() a instâncias de clipes de filme criadas durante a execução (por exemplo. 356 Manipulando eventos .Você só pode anexar onClipEvent() e on() a instâncias de clipes de filme colocadas no Stage durante a criação. o arquivo SWF é reproduzido e o objeto gira. que instrui o arquivo SWF a ser reproduzido. o botão pode ter um manipulador on(press). Para obter mais informações. o escopo de variáveis e objetos em manipuladores on() e onClipEvent() é diferente daquele em manipuladores e ouvintes de eventos. Dependendo dos tipos de eventos que você deseja chamar e de quando eles serão chamados. como demonstrado neste manual. (Consulte “Usando métodos manipuladores de eventos” na página 348 e “Usando ouvintes de eventos” na página 351. suponha que um arquivo SWF contenha um botão. você poderá usar diversas técnicas para manipular eventos sem conflito. Para anexar manipuladores de eventos a objetos criados durante a execução. Em vez disso. Para obter mais informações sobre manipuladores de eventos de botão e de clipe de filme. use métodos manipuladores de eventos ou ouvintes de eventos. métodos manipuladores de eventos ou as duas técnicas de manipulação de eventos. coloque o código em scripts de quadro ou em um arquivo de classes.

Selecione a ferramenta Selection (Seleção).onPress = function() { trace("box_mc. clique duas vezes no quadrado no Stage e pressione F8 para acessar a caixa de diálogo Convert to Symbol (Converter em símbolo)... Para obter informações sobre a especificação de eventos para on() e onClipEvent(). Adicione o ActionScript a seguir diretamente no símbolo do clipe de filme no Stage: on(press){ trace("on (press) {. Para obter mais informações.fla. consulte “Especificando eventos para os métodos on ou onClipEvent” na página 358. defina o tipo de clipe como Movie (Filme) e clique em OK.}"). 8. Crie um novo documento do Flash e salve-o como handlers. Usando manipuladores de eventos de botão e de clipe de filme 357 . Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash.. Para usar um manipulador on e um manipulador de eventos onPress: 1.}... N OT A Anexar os manipuladores onClipEvent() e on() não é uma prática recomendada.onPress = function() {.} box_mc."). 2. }. consulte “Usando métodos manipuladores de eventos” na página 348 e “Anexando código a objetos” na página 783.. coloque o código em scripts de quadro ou em um arquivo de classes. como demonstrado neste manual.. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: box_mc. Digite o nome de um símbolo para a caixa. 3. Em vez disso.}. 5. Quando você clica no símbolo do clipe de filme no Stage. 6. } 4.Use também on() com clipes de filme para criar clipes que recebem eventos de botão. Atribua ao clipe de filme no Stage o nome de instância box_mc. consulte “Criando clipes de filme com estados de botão” na página 361.onPress = function() {. Para obter mais informações. Selecione a ferramenta Rectangle (Retângulo) e desenhe um quadrado grande no Stage. a saída a seguir é enviada para o painel Output: on (press) {. 7..

"). Por exemplo. on (press) { trace("Thanks for pressing me. Por exemplo. or rolled out"). este manipulador on() anexado a um botão é executado sempre que o mouse passa sobre o botão: on (rollOver. } 358 Manipulando eventos . } Como alternativa.Especificando eventos para os métodos on ou onClipEvent Para usar um manipulador on() ou onClipEvent(). O ActionScript em um manipulador é executado quando um dos eventos especificados pelo manipulador ocorre. anexe-o diretamente a uma instância de um botão ou clipe de filme no Stage (Palco) e especifique o evento a ser manipulado para essa instância. } Também é possível adicionar eventos de pressionamento de tecla usando manipuladores on(). se quiser rastrear quando a tecla Enter é pressionada por um usuário. rollOut) { trace("You rolled over. consulte %{on handler}% e %{onClipEvent handler}% em ActionScript 2. o código a seguir rastreia uma seqüência de caracteres quando você pressiona o número 3 no teclado. } É possível especificar dois ou mais eventos para cada manipulador on().0 Language Reference. Para obter uma lista completa de eventos suportados pelos manipuladores de eventos on() e onClipEvent(). use o formato de código a seguir. separados por vírgulas. o manipulador de eventos on() a seguir é executado sempre que o usuário clica no botão ao qual ele está anexado. Selecione uma instância de botão ou de clipe de filme e adicione o seguinte código ao painel Actions (Ações): on (keyPress "3") { trace("You pressed me"). Selecione uma instância de botão ou de clipe de filme e adicione o seguinte código ao painel Actions: on (keyPress "<Enter>") { trace("Enter Pressed"). Por exemplo.

Em vez disso. Por exemplo. NO T A N OT A Anexar os manipuladores onClipEvent() e on() não é uma prática recomendada. coloque o código em scripts de quadro ou em um arquivo de classes. como demonstrado neste manual. Para anexar vários manipuladores a um objeto usando o código colocado na Timeline (Linha de tempo).unloadMovie() } onClipEvent (load) { trace("I've loaded"). consulte %{Key}%. Para obter mais informações sobre a adição de interatividade de pressionamento de tecla a aplicativos. consulte “Usando métodos manipuladores de eventos” na página 348 e “Anexando código a objetos” na página 783. ou quando aparece no Stage (Palco). Usando manipuladores de eventos de botão e de clipe de filme 359 . como demonstrado neste manual.Selecione Control (Controlar) > Test Movie (Testar filme) e pressione a tecla Enter para ver a seqüência de caracteres rastreada no painel Output (Saída). consulte “Usando métodos manipuladores de eventos” na página 348 e “Anexando código a objetos” na página 783. consulte o exemplo a seguir. } onClipEvent (unload) { trace("I've unloaded"). Em vez disso. O código anexa os manipuladores onPress e onRelease a uma instância de clipe de filme. Se nenhuma seqüência for rastreada. é possível anexar os manipuladores onClipEvent() a seguir à mesma instância de clipe de filme. on (press) { this. o segundo é executado quando o clipe de filme é descarregado do Stage. Anexando ou atribuindo vários manipuladores a um objeto Você também poderá anexar mais de um manipulador a um objeto se desejar que scripts diferentes sejam executados quando ocorrerem eventos distintos. O primeiro é executado quando o primeiro clipe de filme é carregado. selecione Control > Disable Keyboard Shortcuts (Desativar atalhos de teclado) e tente novamente. coloque o código em scripts de quadro ou em um arquivo de classes. Para obter mais informações. } Anexar os manipuladores onClipEvent() e on() não é uma prática recomendada. Para obter mais informações.

}. A imagem é carregada na instância img_mc e os manipuladores de eventos onPress() e onRelease() permitem arrastá-la pelo Stage (Palco).helpexamples. img_mcl.jpg". é possível especificar como um evento é manipulado.Para atribuir vários manipuladores a um objeto: 1. Crie um novo documento do Flash e atribua o nome assignMulti. } var img_mcl:MovieClipLoader = new MovieClipLoader().createEmptyMovieClip("img_mc". mclListener.onRelease = function() { target_mc.fla a ele.com/flash/images/image1.stopDrag(). img_mc). Os eventos de componentes são manipulados de maneira diferente dos eventos transmitidos por objetos nativos do ActionScript.onPress = function() { target_mc. consulte “Handling Component Events” em Using Components (Usando componentes). Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento.addListener(mclListener). 360 Manipulando eventos .loadClip("http://www. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e adicione o seguinte código ao painel Actions (Ações): this.onLoadInit = function(target_mc:MovieClip) { target_mc. var mclListener:Object = new Object(). Transmitindo eventos de instâncias de componentes Para qualquer instância de componente. } mclListener. img_mcl. 10). Para obter mais informações.onLoadError = function(target_mc:MovieClip) { trace("error downloading image"). 2. target_mc. 3.startDrag(). }.

8. Digite o nome de símbolo mcbutton. 9. 2. 4. Adicione a ação stop() ao Frame 10 da camada actions e o rótulo de quadro _over ao Frame 10 da camada labels. Clique duas vezes na forma com a ferramenta Selection (Seleção) e pressione F8 para acessar a caixa de diálogo Convert to Symbol (Converter em símbolo).fla. _over e _down à Timeline (Linha de tempo) do clipe de filme. 6. Digite o rótulo de quadro _up no inspetor Property (Propriedade). Também é possível criar estados de botão automáticos (Up. Quando o usuário move o mouse sobre o clipe de filme ou clica nele. 5. Crie uma nova camada acima da camada padrão e da camada labels. 12. a reprodução é enviada para o quadro com o rótulo de quadro apropriado. use a propriedade %{hitArea (MovieClip. Para designar a área sensível utilizada por um clipe de filme. Clique duas vezes no símbolo do clipe de filme no Stage para alternar para o modo de edição de símbolo. todas as três camadas e Insert (Inserir) > Timeline > Keyframe (Quadro-chave). o clipe responde aos eventos do mouse da mesma forma que um botão. Para criar estados de botão em um clipe de filme: 1. o retângulo no Frame 10 e use o inspetor Property para selecionar outra cor de preenchimento. desenhe um pequeno retângulo (de cerca de 100 pixels de largura por 20 pixels de altura) no Stage (Palco).Criando clipes de filme com estados de botão Quando você anexa um manipulador on() a um clipe de filme ou atribui uma função a um dos manipuladores de eventos de mouse MovieClip para uma instância de clipe de filme. defina o tipo de símbolo para o clipe de filme e clique em OK. 10. Selecione Frame 10. Over e Down) em um clipe de filme adicionando os rótulos de quadro _up. 3.hitArea property)}%. Selecione Criando clipes de filme com estados de botão 361 . Renomeie a nova camada actions e adicione o ActionScript a seguir ao Frame 1 (Quadro 1) da Timeline do clipe de filme: stop(). 7. Crie um novo documento do Flash e salve-o como mcbutton. Crie uma nova camada na Timeline (Linha de tempo) do clipe de filme e atribua a ela o nome labels. 11. Com a ferramenta Rectangle (Retângulo).

14. Escopo do manipulador de eventos O escopo. Atribua uma função a um dos manipuladores de eventos de mouse do objeto de clipe de filme (onPress. ■ 17. // variável de função local shoeColor = "blue". considere os dois manipuladores de eventos a seguir. Quando você move o ponteiro do mouse sobre a instância do clipe de filme no Stage. 362 Manipulando eventos . Se você estiver definindo um manipulador de eventos em uma nova classe do ActionScript. ou manipuladores on() e onClipEvent().0 e do ActionScript 2. Para fazer com que o clipe de filme responda a eventos do mouse. Retorne à Timeline principal. mas os manipuladores on() e onClipEvent() não fazem isso. onRelease etc.13. O segundo é um manipulador on() anexado à mesma instância de clipe de filme. Esta seção contém exemplos do ActionScript 1.onPress = function () { var shoeColor. Modifique a cor do retângulo no Frame 20 para que cada estado dos três botões tenha uma 15. a reprodução é alterada automaticamente para o estado _down do clipe de filme. Quando você clica na instância do clipe de filme. O primeiro é um manipulador de eventos onPress associado a um clipe de filme chamado clip_mc. o escopo também dependerá de como o manipulador de eventos é definido.).0 Por exemplo. siga um destes procedimentos: ■ Anexe um manipulador de eventos on() à instância de clipe de filme. de variáveis e comandos que você declara e executa em um manipulador de eventos depende do tipo de manipulador utilizado: manipuladores de eventos ou ouvintes de eventos. // Anexado à Timeline do clipe pai de clip_mc: clip_mc. 16. o estado do clipe é alterado automaticamente para _over. ou contexto. Exemplos do ActionScript 1. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Crie novos quadros-chave no Frame 20 de cada uma das três camadas e adicione o rótulo de quadro _down no inspetor Property. As funções atribuídas a métodos manipuladores de eventos e ouvintes de eventos (como todas as funções do ActionScript criadas por você) definem o escopo de uma variável local. cor diferente. conforme analisado em “Usando métodos manipuladores de eventos” na página 348.0. como abordado em “Usando manipuladores de eventos de botão e de clipe de filme” na página 355.

No primeiro caso. // sem escopo de variável local shoeColor = "blue". suponha que você declare o método manipulador de eventos my_mc. a variável color é local para a função definida para onPress. a mesma função play() se aplica à Timeline que contém a definição da função. on (press) { _parent. on (press) { play(). à Timeline mãe do botão. Por exemplo. quando o manipulador on(press) estiver anexado a um objeto de clipe de filme. e não a clipes de filme. a chamada da função play() se aplicará ao clipe de filme que utiliza o manipulador. Se o código a seguir for anexado a um clipe de filme. no segundo caso. Por exemplo. isto é. a chamada da mesma função inicia a Timeline do clipe de filme ao qual o manipulador está anexado. os dois manipuladores de eventos produzem resultados diferentes. a variável é definida no escopo da Timeline (Linha de tempo) do clipe de filme clip_mc.onPress a seguir na Timeline que contém a instância de clipe de filme my_mc: Escopo do manipulador de eventos 363 . } Embora contenham o mesmo código. a Timeline mãe será reproduzida: // Anexado ao clipe de filme. // Reproduz a timeline mãe. Para manipuladores de eventos on() anexados a botões. No primeiro caso. // Reproduz a timeline do clipe de filme. } Quando anexada a um objeto de botão. } Em uma definição de manipulador de eventos ou de ouvinte de eventos.play(). Entretanto.} // manipulador on() anexado a clip_mc: on (press) { var shoeColor. as variáveis (bem como as chamadas de funções e métodos) são chamadas no escopo da Timeline que contém a instância do botão. } // Anexado ao clipe de filme. // Anexado ao botão. No segundo caso. a chamada da função play() inicia a reprodução da Timeline que contém o botão. a função play() aplica-se à Timeline que contém o botão. como o manipulador on() não define um escopo de variável local. dependendo de sua anexação a um objeto de clipe de filme ou de botão. o manipulador de eventos on() a seguir produzirá resultados diferentes. on (press) { play(). // Reproduz a timeline mãe.

// reproduz a timeline raiz }.my_txt. o mesmo código colocado na Timeline raiz de uma instância de botão reproduziria a Timeline raiz: my_btn. public function TextLoader() { params_lv = new LoadVars().as class TextLoader { private var params_lv:LoadVars. }. 0. _level0.onPress = function () { this. 999.play().onPress = function () { this.autoSize = "left". // Reproduz a timeline onde ela está definida. 20).monthNames.my_txt. } private function onLoadVarsDone(success:Boolean):Void { _level0.play(). // TextLoader. // undefined } } 364 Manipulando eventos . faça referência explicitamente ao clipe usando a palavra-chave this.createTextField("my_txt".onPress = function () { play().com/flash/params. Para reproduzir o clipe de filme que define o manipulador de eventos onPress.txt"). desta forma: // Função definida na timeline raiz my_mc. Exemplo do ActionScript 2.onLoad = onLoadVarsDone.// Função definida em uma timeline my_mc.helpexamples.text = params_lv. Para obter mais informações sobre o escopo da palavra-chave this em manipuladores de eventos. _level0. params_lv. }. consulte “Escopo da palavra-chave this” na página 365. 0.load("http://www. 100.0 A classe TextLoader a seguir é usada para carregar um arquivo de texto e exibir um texto após carregar o arquivo com êxito. Entretanto. params_lv. // reproduz a timeline de my_mc clip.

com/flash/params. Por exemplo.. portanto.onLoad depois que o arquivo de texto é carregado.load("http://www. this poderá se referir a objetos diferentes. } private function onLoadVarsDone(success:Boolean):Void { _level0. // TextLoader. 0. a função onLoadVarsDone() espera uma instância params_lv..onLoad = function (success:Boolean):Void { owner.my_txt. e a função onLoadVarsDone() é chamada com a palavra-chave this definida como LoadVars. o objeto LoadVars chama o manipulador de eventos this.params_lv que não existe.helpexamples.onLoadVarsDone(success).Esse código não funciona corretamente.março. this refere-se ao objeto que define o método manipulador de eventos ou ouvinte de eventos. public function TextLoader() { params_lv = new LoadVars(). _level0.my_txt. no código a seguir. porém.as class TextLoader { private var params_lv:LoadVars. Em uma função de manipulador de eventos ou de ouvinte de eventos. this refere-se a my_mc: Escopo da palavra-chave this 365 . 20).monthNames. O objeto owner ainda está visível no escopo da função anônima e. use a seguinte estratégia: use um literal de função para criar uma função anônima que chame a função desejada. 999. pode ser usado para localizar o objeto TextLoader que está fazendo a chamada. embora a função onLoadVarsDone() dependa desse objeto por referência.createTextField("my_txt".txt"). // janeiro.fevereiro. } params_lv. var owner:TextLoader = this. Portanto.text = params_lv.autoSize = "left". 100. params_lv. Para chamar corretamente o método onLoadVarsDone() no escopo do objeto TextLoader. e não como TextLoader. } } Escopo da palavra-chave this A palavra-chave this refere-se ao objeto do escopo em execução no momento. Dependendo do tipo de técnica de manipulação de eventos usada. O comportamento esperado nesse exemplo é que o método onLoadVarsDone() seja chamado no escopo do objeto TextLoader. 0.. ele é chamado no escopo do objeto LoadVars porque o método foi extraído do objeto TextLoader e inserido no objeto LoadVars. _level0. O objeto params_lv reside no escopo dessa palavra-chave quando chamado. Em seguida. pois há um problema envolvendo o escopo dos manipuladores de eventos e não está claro se a palavra-chave this faz referência à classe ou ao manipulador de eventos onLoad.

o evento é disparado em um escopo diferente. Para usar a classe Delegate para ouvir eventos: 1. como mostra o seguinte código: // Anexado ao botão na timeline principal on (press) { trace(this). e não no objeto em que ela está declarada.fla. EventDispatcher. Dependendo da forma como você adiciona ouvintes de eventos a uma instância do componente Button. this refere-se ao clipe de filme ao qual o manipulador on() está anexado. e para chamar funções no escopo da classe em que está contida. Quando você passa uma função como um parâmetro para a função é chamada no escopo da instância do componente transmissor. // _level0. 366 Manipulando eventos . // _level0 } Usando a classe Delegate A classe Delegate permite executar uma função em um escopo específico.my_mc } Em um manipulador on() anexado a um clipe de filme.create() para chamar a função dentro do escopo do objeto declarante.addEventListener(). 2.my_mc } Em um manipulador on() anexado a um botão.// Manipulador de eventos onPress() anexado à timeline principal: my_mc. como mostra o código a seguir: // Anexado ao clipe de filme my_mc na timeline principal on (press) { trace(this). Consulte “Delegating the scope of a function” in Using Components (Usando componentes). this refere-se à Timeline que contém o botão. consulte “Delegating events to functions” em Using Components (Usando componentes). Adicione e posicione a instância do botão no Stage (Palco) usando ActionScript em uma etapa posterior. // _level0. Arraste um componente Button da pasta User Interface do painel Components (Componentes) para a biblioteca.onPress = function () { trace(this). Essa classe é fornecida para disparar o mesmo evento em duas funções diferentes. O exemplo a seguir mostra os três métodos de audição de eventos de uma instância do componente Button. É possível usar Delegate. Crie um novo documento do Flash e salve-o como delegate.

one_button. two_button. 10).addEventListener("click". Usando a classe Delegate 367 . three_button. que contém um manipulador para esse evento. } var buttonListener:Object = new Object(). three_button. {label:"One"}). As três seções restantes do código criam uma nova instância do componente Button no Stage. Por fim. this. buttonListener.controls.target + " instance. this.move(230. a terceira função adiciona um ouvinte para o evento click. 20. "one_button".addEventListener("click". trace("\t this -> " + this)."). 10). this. two_button. {label:"Three"}). usa a classe Delegate para disparar esse evento no escopo this (em que this equivale a _level0) e passa uma referência para a função manipuladora click. reposicionam a instância e adicionam um ouvite de evento para o evento click. click. function clickHandler(eventObj:Object):Void { trace("[" + eventObj.move(10.utils. 10).type + "] event on " + eventObj.addEventListener("click".createClassObject(Button. one_button.createClassObject(Button.click = function(eventObj:Object):Void { trace("[" + eventObj. 30. Delegate.Button. O segundo botão adiciona um ouvinte para o evento click e passa uma referência para um objeto ouvinte. O código anterior é dividido em seis seções (separadas por uma linha em branco).createClassObject(Button. A primeira seção importa a classe Button (para o componente Button) e a classe Delegate. A segunda seção do código define uma função chamada quando o usuário clica em alguns dos botões. "three_button".create(this.target + " instance. clickHandler). trace("\t this -> " + this). }.3. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: import mx. clickHandler)).type + "] event on " + eventObj.Delegate."). buttonListener). import mx. A terceira seção do código cria um objeto usado como um ouvinte de evento e o objeto ouve um único evento. {label:"Two"}). O primeiro botão adiciona um ouvinte para o evento click e passa uma referência diretamente a uma função manipuladora click. 10.move(120. "two_button".

Clique no primeiro botão no Stage para rastrear o texto a seguir no painel Output (Saída): [click] event on _level0. a _level0. 368 Manipulando eventos .create() ou. 5.4.one_button Quando você clica na instância one_button. Clique no segundo botão no Stage para rastrear o texto a seguir no painel Output: [click] event on _level0. this -> [object Object] Quando você clica na instância two_button. neste caso. this -> _level0. b. Clique em cada instância do botão no Stage para ver o escopo em que o evento é manipulado. o escopo this faz referência ao objeto buttonListener.one_button instance. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. this -> _level0 Quando você clica na instância three_button. o escopo this faz referência ao escopo especificado na chamada do método Delegate. a.three_button instance.two_button instance. Clique no terceiro botão no Stage para rastrear o texto a seguir no painel Output: [click] event on _level0. o escopo this faz referência à própria instância do botão. c.

animação com script e muito mais. no qual o clipe pai contém um ou mais clipes filho. Dessa maneira. É possível atribuir nomes a instâncias de clipes de filme para identificá-las de forma exclusiva como objetos que podem ser controlados com o ActionScript.CAPÍTULO 11 Trabalhando com clipes de filme Os clipes de filme assemelham-se a arquivos SWF que funcionam de maneira independente uns dos outros e da Timeline (Linha de tempo) que os contém. Os clipes de filme aninhados dessa maneira têm um relacionamento hierárquico. Por exemplo. cada quadro do clipe de filme será reproduzido quando o arquivo SWF principal for reproduzido. os componentes disponíveis no painel Components (Componentes). os clipes de filme fornecem o alicerce da arquitetura baseada em componente no Macromedia Flash Basic 8 e no Macromedia Flash Professional 8. Para obter informações sobre o uso da API (Application Programming Interface. bem como de filtros. se a Timeline principal possuir somente um quadro. Um clipe de filme pode. conter outros clipes de filme ou clipes aninhados. esse nome a identifica como um objeto do tipo de classe MovieClip. mesclagens. Quando um nome de instância é atribuído a uma instância de clipe de filme. em Window (Janela) > Components.” 11 369 . consulte o Capítulo 13. “Animação. Na verdade. manter seu estado e gerenciar seus clipes filho. são clipes de filme sofisticados que foram projetados e programados para se parecerem e se comportarem de certos modos. Use as propriedades e os métodos da classe MovieClip para controlar a aparência e o comportamento dos clipes de filme durante a execução. por sua vez. filtros e desenhos. e um clipe de filme nesse quadro possuir dez quadros. Pense nos clipes de filme como objetos autônomos que podem responder aos eventos. enviar mensagens para outros objetos do clipe de filme. Interface de programação de aplicativos) Drawing (métodos de desenho da classe MovieClip).

. . . . . . . . . . . . .Para obter mais informações sobre clipes de filme. . . . . . . . . . . . . 376 Arrastando clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A opção escolhida dependerá de sua preferência e familiaridade com a criação de scripts no ActionScript. . . . . . . . . . . 399 Atribuindo uma classe a um símbolo de clipe de filme . . . . . . . . . . . . . . . . . . . . . . . consulte os seguintes tópicos: Sobre o controle de clipes de filme com o ActionScript . . . O exemplo a seguir mostra a diferença entre usar um método e usar uma função. . . . . . . . . . . . . . . . a Timeline (Linha de tempo) de destino deverá ser carregada no Flash Player quando a função ou o método for chamado. . . . . . . . Cada instrução duplica a instância my_mc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Carregando e descarregando arquivos SWF . . . . . . . . . . . . . . . . . . . . . . . . . . . é possível controlar os clipes de filme usando qualquer um dos dois. . . . . . . . . . . como hitTest() e swapDepths(). . . "new_mc". . . . . .397 Manipulando eventos de clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quando uma função e um método apresentam comportamentos semelhantes. . . . . . . . . . 399 Inicializando as propriedades de classe . . . 370 Trabalhando com clipes de filme . . . . . . . . . . . . . . . . . . . 378 Adicionando parâmetros aos clipes de filme criados dinamicamente . . . . . . . . . . . . . . . 401 Sobre o controle de clipes de filme com o ActionScript É possível usar as funções globais do ActionScript ou os métodos da classe MovieClip para realizar tarefas nos clipes de filme. . . . . . . . . 5). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . my_mc. outros. . . . . . . . . . . . . . . . . . . . . . . não têm nomes de função correspondentes. atribui o nome newClip ao novo clipe e o coloca na profundidade 5. . . . . . . . . Alguns métodos da classe MovieClip realizam as mesmas tarefas que as funções de mesmo nome. . . . .385 Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript. . . . . . . . . . . . duplicateMovieClip(my_mc.383 Gerenciando profundidades do clipe de filme . . . . . . . . . . . .370 Chamando vários métodos em um único clipe de filme. . . Se você usar uma função ou um método. . . . . . . . . . . . 5). . . .duplicateMovieClip("new_mc". . . . . . . 377 Criando clipes de filme durante a execução . . 373 Alterando a posição e a aparência de um clipe de filme . . . . . . . .389 Usando clipes de filme como máscaras . . . . . . . . . .

0 Language Reference (Referência da linguagem ActionScript 2. MovieClip.globalToLocal().getBytesTotal(). Para obter mais informações sobre essas funções e métodos. No Macintosh. my_mc. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Animation. MovieClip.childClip. ■ Sobre o controle de clipes de filme com o ActionScript 371 . Para usar essas funções.onRelease = function() { stopDrag().gotoAndPlay(3). o método gotoAndPlay() envia a reprodução em childClip (que é filho da instância parentClip) para o quadro 3 e continua a mover a reprodução. Os métodos MovieClip a seguir podem controlar clipes de filme ou níveis carregados. MovieClip. }.setMask(). navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Animation. startDrag() destina-se à instância em que o código foi colocado e torna-a arrastável: my_mc.fla. loadVariables(). Para obter um exemplo de animação com script no Flash. As funções a seguir destinam-se aos clipes de filme: loadMovie(). como nas instruções a seguir: myMovieClip. MovieClip. Na primeira instrução.onPress = function() { startDrag(this). seguido de um ponto e do nome do método e dos parâmetros.getDepth(). ■ No Windows. MovieClip. }. MovieClip.swapDepths().Para usar um método. navegue até a pasta Samples no disco rígido onde é possível encontrar um arquivo de origem de exemplo. no script a seguir. MovieClip. Por exemplo.getBytesLoaded().0).play(). insira um caminho de destino no parâmetro target da função para indicar seu destino. As funções globais que controlam uma Timeline têm um parâmetro target que permite especificar o caminho de destino para a instância a ser controlada.getNextHighestDepth().hitTest().getBounds(). Na segunda instrução. animation. play() move a reprodução na instância myMovieClip. parentClip.createEmptyMovieClip(). duplicateMovieClip() e removeMovieClip(). startDrag(). unloadMovie(). MovieClip. MovieClip.createTextField().localToGlobal(). ative-o usando o caminho de destino do nome da instância. consulte as entradas correspondentes em ActionScript 2.getInstanceAtDepth(). setProperty().attachMovie(). MovieClip. e não têm funções equivalentes: MovieClip. MovieClip. MovieClip. MovieClip.

■ Chamando vários métodos em um único clipe de filme É possível usar a instrução with para endereçar um clipe de filme uma vez e executar uma série de métodos nesse clipe._alpha = 20. Todas as ações aninhadas em uma instrução with são executadas no novo caminho de destino ou escopo.hole) { _alpha = 20. Os arquivos de origem de exemplo._xscale = 150. que inclui a animação com script.hole. ■ No Windows. donut. e não somente com clipes de filme. hole.fla e gallery_tween. Esses arquivos contêm exemplos do uso do ActionScript para controlar clipes de filme dinamicamente e carregar arquivos de imagem em um arquivo SWF. O objeto especificado é adicionado ao final do caminho de destino atual. } 372 Trabalhando com clipes de filme .É possível encontrar exemplos de aplicativos de galeria de fotografias no disco rígido. No Macintosh.fla. hole.hole._yscale = 150. encontram-se na pasta Samples no disco rígido. o objeto donut. no script a seguir. donut._xscale = 150. A instrução with requer um clipe de filme como parâmetro.hole é passado à instrução with para alterar as propriedades de hole: with (donut. Array. _xscale = 150. O código anterior também é equivalente ao seguinte exemplo: with (donut) { hole. gallery_tree. Por exemplo. } O script comporta-se como se as instruções contidas na instrução with fossem chamadas na Timeline (Linha de tempo) da instância hole._alpha = 20. _yscale = 150. O código anterior é equivalente ao seguinte exemplo: donut. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Galleries.hole._yscale = 150. Essa instrução funciona com todos os objetos do ActionScript (por exemplo. Color e Sound). navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Galleries.

Em algumas situações. como true quando necessário. Ao carregar um arquivo SWF. defina a propriedade _visible como false e. use esse procedimento para carregar arquivos de imagem ou SWF dinâmicos com base nas variáveis especificadas em um clipe de filme. consulte “Carregando arquivos SWF e de imagem externos” na página 621. é possível alterar essas propriedades. Para obter mais informações sobre a classe MovieClipLoader.0). Também é possível usar o método loadMovie() para enviar variáveis a um script CGI. O método unloadMovie() remove um arquivo SWF carregado anteriormente pelo método Descarregar explicitamente um arquivo SWF com unloadMovie() assegura uma transição suave entre arquivos SWF e pode reduzir o volume de memória exigido pelo Flash Player.Carregando e descarregando arquivos SWF Para reproduzir arquivos SWF adicionais sem fechar o Flash Player ou para alternar os arquivos SWF sem carregar outra página HTML. Use loadMovie() para efetuar qualquer uma das seguintes ações: ■ Reproduzir uma seqüência de faixas de propaganda que sejam arquivos SWF. que gera um arquivo SWF como sua saída CGI. é possível especificar um nível ou um destino de clipe de filme no qual o arquivo SWF será carregado. consulte %{MovieClipLoader}% em ActionScript 2. Criar uma interface de navegação com controles de navegação no nível 0 que carregue conteúdo em outros níveis. Uma vez carregado o filme do Flash. o SWF carregado herdará as propriedades do clipe de filme de destino especificado. use uma das seguintes opções: ■ ■ A função loadMovie() global ou o método loadMovie() da classe MovieClip. ■ ■ Para obter mais informações sobre o carregamento de arquivos SWF. O método loadClip() da classe MovieClipLoader. Carregando e descarregando arquivos SWF 373 . Por exemplo. Se você carregar um arquivo SWF em um destino.0 Language Reference (Referência da linguagem ActionScript 2. talvez seja mais eficiente definir a propriedade _visible do clipe de filme como false em vez de descarregar o clipe. Carregar o conteúdo em níveis ajuda a produzir transições mais suaves entre páginas de conteúdo do que carregar novas páginas HTML em um navegador. Se você reutilizar o clipe posteriormente. depois. colocando uma função loadMovie() em um arquivo SWF recipiente que carrega e descarrega seqüencialmente os arquivos SWF de faixas. loadMovie(). Desenvolver uma interface ramificada com links para permitir que o usuário escolha entre diversos arquivos SWF usados para exibir o conteúdo de um site.

onRelease = function():Void { trace(_root. o arquivo SWF carregado. se um script no nível 1 avaliar _root. my_btn.userName = "Mary".swf: _root.swf.swf: _root.swf que contenha uma instância de clipe de filme chamada target_mc em sua Timeline principal. a Timeline raiz estará no nível que contém o script atualmente em execução. considere um arquivo chamado container.swf"). o mesmo script carrega outro arquivo contents. }.userName). Esse procedimento pode fazer com que o código de container. Por exemplo. target_mc. contents.swf.loadMovie("contents.swf for carregado no clipe de filme no arquivo container. o valor de userName que estiver anexado à Timeline raiz do arquivo SWF hospedeiro (container. No exemplo a seguir. a Timeline especificada por _root poderá mudar dependendo de o arquivo SWF estar sendo executado independentemente (em seu próprio nível) ou de ter sido carregado em uma instância de clipe de filme por meio de uma chamada de loadMovie() .swf ) será definido como "Mary" em vez de "Tim". consulte os seguintes tópicos: ■ ■ “Especificando uma Timeline raiz para arquivos SWF carregados” na página 374 “Carregando arquivos de imagem em clipes de filme” na página 375 Especificando uma Timeline raiz para arquivos SWF carregados A propriedade _root do ActionScript especifica ou contém uma referência à Timeline (Linha de tempo) raiz de um arquivo SWF. Quando contents.Para obter mais informações. No exemplo a seguir. O arquivo container.swf declara uma variável chamada userName na Timeline principal.userName = "Tim". será retornado _level1. Entretanto.swf no clipe de filme target_mc: // Em container. também declara uma variável chamada userName em sua Timeline raiz: // Em contents.swf (bem como de contents. 374 Trabalhando com clipes de filme . Se um arquivo SWF possuir vários níveis.swf ) funcione inadequadamente.

esse clipe de filme funciona como _root para qualquer arquivo SWF carregado nele.swf — ou em qualquer arquivo SWF carregado em target_mc — serão feitas à sua própria Timeline. essa propriedade é false. e não à Timeline raiz de container. Esse procedimento garantirá que. quando você carrega uma imagem em uma Timeline raiz. não importando o outro arquivo SWF que o carrega. esse arquivo funciona como sua própria raiz. qualquer referência que ele faça a _root estará relacionada à sua própria Timeline principal. quando você clicar no botão. mas o conteúdo original do clipe do filme é removido. o autor de container. consulte %{_lockroot (MovieClip. Carregando arquivos de imagem em clipes de filme Você pode usar a função loadMovie() ou o método MovieClip de mesmo nome para carregar arquivos de imagem em uma instância de clipe de filme._lockroot = true. Carregando e descarregando arquivos SWF 375 . será exibido "Tim". a imagem carregada pode não aparecer centralizada. e não àquela do arquivo SWF hospedeiro. Também pode usar a função loadMovieNum() para carregar um arquivo de imagem em um nível. Qualquer clipe de filme e número de clipe de filme pode definir _lockroot como true. É possível definir essa propriedade no arquivo SWF em carga ou no arquivo SWF que esteja sendo carregado. Para obter mais informações.swf.swf poderia colocar o seguinte código no Frame 1 (Quadro 1) da Timeline principal: // Adicionado ao Frame 1 em container.swf: this. use a propriedade _lockroot. Como geralmente esse ponto de registro é o centro do clipe de filme. Quando _lockroot é definida como true em uma instância de clipe de filme.swf: target_mc. Esta etapa garante que todas as referências a _root em contents.swf for carregado. o autor de contents. Por exemplo. o canto superior esquerdo da imagem é colocado no Stage. o canto superior esquerdo da imagem é colocado no ponto de registro do clipe de filme. Quando você carrega uma imagem em um clipe de filme. Quando _lockroot é definida como true em um arquivo SWF. A imagem carregada herda a rotação e o dimensionamento do clipe de filme. independentemente de onde contents._lockroot property)}%._lockroot = true. em vez de na Timeline raiz real.Para forçar _root a avaliar sempre na Timeline do arquivo SWF carregado. Agora. Por padrão.swf pode adicionar o seguinte código à Timeline principal: // Adicionado ao Frame 1 em contents. Opcionalmente. Além disso.

onEnterFrame = function() { my_mc. escreva uma instrução que atribua um valor a uma propriedade ou use a função setProperty()._rotation = 45._x = _root. 45). _totalframes. consulte %{loadMovie function}%. _parent.wheel_mc. Alterando a posição e a aparência de um clipe de filme Para alterar as propriedades de um clipe de filme durante sua reprodução. o código a seguir define a rotação da instância mc como 45: my_mc. Além disso. Você pode criar instruções para definir qualquer propriedade que não seja somente leitura. chamadas somente leitura. você pode criar instruções que obtenham o valor de uma propriedade do clipe de filme. porém não definidos. (Essas propriedades são especificadas como somente leitura nas entradas correspondentes em ActionScript 2. que usa a função setProperty(): setProperty("my_mc". _url. 376 Trabalhando com clipes de filme . Esse código é equivalente ao apresentado a seguir.0 Language Reference e “Carregando arquivos SWF e de imagem externos” na página 621. %{loadMovie (MovieClip. _target. _framesloaded. As seguintes propriedades são somente leitura: _currentframe. que é filha da instância car_mc: car_mc. }. possuem valores que podem ser lidos. _xmouse e _ymouse. a instrução a seguir obtém o valor da propriedade _xmouse na Timeline (Linha de tempo) do nível atual e define a propriedade _x da instância my_mc como esse valor: this. Por exemplo. _xmouse)._xmouse. Algumas propriedades. que usa a função getProperty(): this. A instrução a seguir define a propriedade _alpha da instância de clipe de filme wheel_mc. _rotation.loadMovie method)}% e %{loadMovieNum function}% em ActionScript 2. Esse código é equivalente ao apresentado a seguir. Por exemplo._x = getProperty(_root.0 Language Reference). _droptarget.Para obter mais informações._alpha = 50. }.onEnterFrame = function() { my_mc.

navegue até a pasta Samples no disco rígido onde é possível encontrar um arquivo de origem de exemplo. interfaces personalizáveis. No Macintosh. _rotation.fla e gallery_tween. _alpha e _visible são afetadas pelas transformações do pai do clipe de filme e transformam o clipe e todos os seus filhos. ■ É possível encontrar exemplos de aplicativos de galeria de fotografias no disco rígido.As propriedades _x. Para obter uma lista de propriedades de clipes de filme. Arrastando clipes de filme 377 . navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Animation. _y. consulte o resumo de propriedades da classe %{MovieClip}% em ActionScript 2. Para obter um exemplo de animação com script no Flash. encontram-se na pasta Samples no disco rígido. As propriedades _focusrect. ■ No Windows. _quality e _soundbuftime são globais. _width.0 Language Reference. _highquality. ■ No Windows. barras de rolagem e controles deslizantes. Os arquivos de origem de exemplo. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Animation. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Galleries. ■ Arrastando clipes de filme Você pode usar a função global startDrag() ou o método MovieClip. _xscale. gallery_tree. No Macintosh.fla. Só é possível arrastar um clipe de filme de cada vez em um arquivo SWF. Todas as outras propriedades pertencem aos clipes de filme ou níveis carregados. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Galleries. _yscale.startDrag() para tornar um clipe de filme arrastável. você pode criar um clipe de filme arrastável para jogos.fla. Esses arquivos contêm exemplos do uso do ActionScript para controlar clipes de filme dinamicamente e carregar arquivos de imagem em um arquivo SWF. que inclui a animação com script. funções do tipo arrastar e soltar. _height. elas pertencem somente à Timeline principal de nível 0. Por exemplo. Um clipe de filme pode ser arrastado até ser parado explicitamente por stopDrag() ou até que outro clipe de filme seja definido por startDrag(). animation.

em seguida.onRelease = function() { this. Esse arquivo contêm um exemplo do uso do ActionScript para controlar clipes de filme dinamicamente e carregar arquivos de imagem em um arquivo SWF. consulte %{startDrag function}% ou %{startDrag (MovieClip.stopDrag(). Para obter mais informações. garbage_mc.Para criar um comportamento arrastar e soltar mais complexo. um clipe de filme “lata de lixo”) e. Por exemplo. garbage_mc._droptarget) == trashcan_mc) { garbage_mc. você pode avaliar a propriedade _droptarget do clipe de filme que está sendo arrastado._visible = false. gallery_tween. } }. // Quando o lixo for arrastado para a lixeira. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Galleries. ■ No Windows.startDrag method)}% em ActionScript 2.startDrag(false). ■ Criando clipes de filme durante a execução Além de criar instâncias de clipe de filme no ambiente de criação do Flash. if (eval(this. O arquivo de origem de exemplo. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Galleries. torne-o invisível. É possível encontrar um aplicativo de galeria de fotografias de exemplo no disco rígido. // Converta a notação de barra em notação de ponto usando eval. como mostra este exemplo: // Arraste o lixo. está localizado na pasta Samples no disco rígido. você pode examinar a propriedade _droptarget para verificar se o clipe de filme foi arrastado para um clipe específico (por exemplo.0 Language Reference. é possível criar instâncias de clipe de filme durante a execução das seguintes maneiras: ■ ■ ■ “Criando um clipe de filme vazio” na página 379 “Duplicando ou removendo um clipe de filme” na página 381 “Anexando um símbolo de clipe de filme ao Stage” na página 381 378 Trabalhando com clipes de filme . o que inclui tornar cada clipe de filme arrastável. ativar outra ação. }. No Macintosh.onPress = function() { this.fla.

“Criando um clipe de filme vazio” na página 379 “Duplicando ou removendo um clipe de filme” na página 381 “Anexando um símbolo de clipe de filme ao Stage” na página 381 ■ Para obter mais informações. que cria e remove vários clipes de filme durante a execução. o código a seguir cria um novo clipe de filme filho chamado new_mc na profundidade10 do clipe de filme parent_mc. Criando clipes de filme durante a execução 379 . está localizado na pasta Samples no disco rígido. No Macintosh. o que inclui criar clipes de filme durante a execução.fla. ■ No Windows. use o método createEmptyMovieClip() da classe MovieClip. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Animation. ■ Um arquivo de origem de exemplo. gallery_tween.fla. 10).) É possível encontrar um aplicativo de galeria de fotografias de exemplo no disco rígido. encontra-se na pasta Samples do disco rígido ■ No Windows. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Galleries. O arquivo de origem de exemplo. Este método cria um clipe de filme como filho do clipe que chamou o método. parent_mc. consulte os seguintes tópicos: ■ ■ ■ Criando um clipe de filme vazio Para criar uma nova instância de clipe de filme vazia no Stage (Palco). (Consulte “Gerenciando profundidades do clipe de filme” na página 385. animation. No Macintosh. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Animation. Por exemplo.Cada instância de clipe de filme criada durante a execução deve ter um nome e um valor de profundidade (pilha ou ordem z). Ela também permite substituir clipes de filme que residam na mesma profundidade.createEmptyMovieClip("new_mc". navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Galleries. A profundidade especificada determina como o novo clipe substitui os outros clipes na mesma Timeline (Linha de tempo). O ponto de registro de um clipe de filme vazio recémcriado é o canto superior esquerdo. Esse arquivo contêm um exemplo do uso do ActionScript para controlar clipes de filme dinamicamente e carregar arquivos de imagem em um arquivo SWF.

// Esse é o clipe de filme que será substituído pela imagem. 0). que cria e remove vários clipes de filme durante a execução.helpexamples.container_mc).onPress() para fazê-la funcionar como um botão. var my_mcl:MovieClipLoader = new MovieClipLoader(). em seguida. O carregamento de uma imagem com loadMovie() substitui o clipe de filme pela imagem. // Cria um clipe de filme filho em "my_mc". this. ele ativa loadMovie() para carregar um arquivo JPEG externo nele mesmo. my_mc.jpg").loadMovie("http://www. Para obter acesso a esses métodos.createEmptyMovieClip("canvas_mc".helpexamples.com/flash/images/image1.onPress = function():Void { trace("It works").createEmptyMovieClip method)}% em ActionScript 2. 10). // Use MovieClipLoader para carregar a imagem. é necessário criar um clipe de filme pai vazio e um clipe de filme filho recipiente.createEmptyMovieClip("container_mc".jpg em um clipe de filme e usar o método MovieClip. my_mc.99).0 Language Reference. encontra-se na pasta Samples do disco rígido ■ No Windows. Como mostra o exemplo a seguir. Carregue a imagem no recipiente e coloque o manipulador de eventos no clipe de filme pai. é possível carregar a imagem image2. mas não fornece acesso aos métodos de clipe de filme. }. Um arquivo de origem de exemplo. canvas_mc. my_mc. No Macintosh. ■ 380 Trabalhando com clipes de filme . // Cria um clipe de filme pai para armazenar o recipiente. this.loadClip("http://www. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Animation. animation.com/flash/images/image2. my_mcl.fla. consulte %{createEmptyMovieClip (MovieClip.createEmptyMovieClip("my_mc".O código a seguir cria um novo clipe de filme chamado canvas_mc na Timeline (Linha de tempo) raiz do arquivo SWF no qual o script é executado. Para obter mais informações. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Animation.jpg". // Coloque o manipulador de eventos no clipe de filme pai my_mc.

No Macintosh. Caso contrário. animation. Para usar o ActionScript para anexar um símbolo de clipe de filme da biblioteca.Duplicando ou removendo um clipe de filme Para duplicar ou remover instâncias de clipe de filme. você deve exportar o símbolo do ActionScript e atribuí-lo a um identificador de vinculação exclusivo. Para obter mais informações. use removeMovieClip(). Criando clipes de filme durante a execução 381 . Para isso. use a caixa de diálogo Linkage Properties (Propriedades de vinculação). O padrão é que todos os clipes de filme exportados para uso com o ActionScript sejam carregados antes do primeiro quadro do arquivo SWF que os contêm. encontra-se na pasta Samples do disco rígido ■ No Windows. Um arquivo de origem de exemplo. consulte %{duplicateMovieClip function}% e %{removeMovieClip function}% em ActionScript 2. Um clipe de filme duplicado sempre começa no Frame 1 (Quadro 1).ou os métodos da classe MovieClip de mesmo nome. Para excluir um clipe de filme criado com duplicateMovieClip(). Isso pode criar um atraso antes da reprodução do primeiro quadro. será necessário incluir uma instância dele em algum outro quadro do arquivo SWF. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Animation. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Animation. O método attachMovie() anexa a instância de um símbolo de clipe de filme na biblioteca do arquivo SWF ao Stage (Palco).0 Language Reference. e está sempre na frente de todos os clipes definidos anteriormente e colocados na Timeline (Linha de tempo). Ao atribuir um identificador de vinculação a um elemento. que cria e remove vários clipes de filme durante a execução. mesmo que o clipe original esteja em outro quadro durante a duplicação. O novo clipe torna-se um clipe filho do clipe que o anexou.fla. ■ Anexando um símbolo de clipe de filme ao Stage A última maneira de criar instâncias de clipe de filme durante a execução é usar o método attachMovie(). use as funções globais duplicateMovieClip() ou removeMovieClip(). Se esse conteúdo não for adicionado ao primeiro quadro. o elemento não será exportado para o arquivo SWF. O método duplicateMovieClip() cria uma nova instância de uma instância de clipe de filme existente. atribui a ela um novo nome e define sua profundidade ou ordem z. você também pode especificar se o conteúdo deverá ser adicionado antes do primeiro quadro. Os clipes de filme duplicados também serão removidos se o clipe pai for excluído.

Opcionalmente. Usando as referências de código que aparecem como guia. como descrito no exemplo anterior. Selecione Window > Library (Biblioteca) para abrir o painel Library. Em Linkage. insira uma instância do clipe de filme no quadro da Timeline (Linha de tempo) onde deseja que ela esteja disponível. selecione um quadro na Timeline. selecione Linkage (Vinculação). você pode atribuir uma classe do ActionScript ao símbolo de clipe de filme. 3. Selecione um clipe de filme no painel Library. coloque uma instância do símbolo nesse quadro ou antes dele na Timeline. Se você desmarcar essa opção. No painel Script do painel Actions. você pode anexar uma instância do símbolo ao Stage durante a execução usando attachMovie(). selecione Export for ActionScript (Exportar para ActionScript). 6. selecione ActionScript 2. se o script que você está criando não fizer referência ao clipe de filme até o Frame 10 (Quadro 10). Na caixa de ferramentas Actions (à esquerda do painel Actions). desmarque a opção Export in First Frame (Exportar no primeiro quadro). insira uma ID para o clipe de filme. No menu pop-up do painel Library. 4. Atribua um identificador de vinculação a um símbolo da biblioteca de clipes de filme. 3.Para atribuir um identificador de vinculação a um clipe de filme: 1. digite this. a partir de Window (Janela) > Actions.) 4. insira os valores dos seguintes parâmetros: 2. 5. Clique em OK. 2. Depois de atribuir um identificador de vinculação a um clipe de filme. 5. Com o painel Actions (Ações) aberto. Por exemplo. 7. (Consulte “Atribuindo uma classe a um símbolo de clipe de filme” na página 399.0 Classes (Classes do ActionScript 2. digite o nome do clipe de filme ou nível ao qual você deseja anexar o novo clipe de filme. 382 Trabalhando com clipes de filme . Para anexar um clipe de filme a outro: 1. para anexar o clipe de filme à Timeline raiz. O padrão é que o identificador seja igual ao nome do símbolo.0) > Movie (Filme) > MovieClip > Methods (Métodos) e selecione attachMovie(). Isso permite que o clipe de filme herde os métodos e as propriedades de uma classe especificada. A caixa de diálogo Linkage Properties é exibida. Por exemplo. Para não carregar o clipe de filme antes do primeiro quadro. Em Identifier (Identificador).

Cada filme anexado possui sua própria ordem de empilhamento. Os clipes de filme anexados estão sempre sobre o clipe de filme original.attachMovie method)}% e em ActionScript 2. O parâmetro initObject de attachMovie() e duplicateMovie() permite que os clipes de filme criados dinamicamente recebam parâmetros de clipe. ■ ■ Para obter mais informações.attachMovie() e MovieClip. %{duplicateMovieClip (MovieClip.duplicateMovieClip method)}% Para preencher um clipe de filme criado dinamicamente com parâmetros de um objeto especificado: Siga um destes procedimentos: ■ Use a sintaxe a seguir com o attachMovie(): myMovieClip.duplicateMovie(idName. newName. crie um símbolo de clipe de filme selecionando Insert (Inserir) > New Symbol (Novo símbolo). Adicionando parâmetros aos clipes de filme criados dinamicamente Ao usar MovieClip. O parâmetro initObject especifica o nome do objeto cujos parâmetros você deseja usar para preencher o clipe de filme criado dinamicamente. "california_mc". 10). depth [. newName. depth [. initObject]). Para preencher um clipe de filme com parâmetros usando attachMovie(): 1. você pode preencher o clipe de filme com os parâmetros de outro objeto. consulte %{attachMovie (MovieClip. como mostra o seguinte exemplo: this. insira um nome de instância para o clipe anexado de modo que você possa especificá-lo como destino. Em um novo documento do Flash. sendo que o nível 0 é o nível do clipe do filme de origem.duplicateMovie() para criar ou duplicar um clipe de filme dinamicamente.attachMovie method)}% em ActionScript 2. initObject]). Adicionando parâmetros aos clipes de filme criados dinamicamente 383 .■ Para idName. insira o nível no qual o filme duplicado será anexado ao clipe de filme. Para depth. ■ Use a sintaxe a seguir com duplicateMovie(): myMovieClip.attachMovie(idName.attachMovie("calif_id".0 Language Reference. especifique o nome do identificador inserido na caixa de diálogo Linkage Properties. Para newName.0 Language Reference. Para obter mais informações. consulte %{attachMovie (MovieClip.

A caixa de diálogo Linkage Properties é exibida. 99. Digite dynamic_mc na caixa de texto Symbol Name (Nome do símbolo) e selecione o comportamento Movie Clip (Clipe de filme).2.text = name_str. Selecione Edit (Editar)> Edit Document (Editar documento) para voltar à Timeline principal. 384 Trabalhando com clipes de filme . Dentro do símbolo. Verifique se esse campo de texto está abaixo e à direita do ponto de registro. Crie uma nova variável chamada name_str e atribua seu valor à propriedade text de name_txt. 7. O nome especificado em attachMovie() é exibido no novo campo de texto do clipe de filme. ■ No Windows. Selecione 11. _x:50. Teste o documento do Flash em Control (Controlar) > Test Movie (Testar filme). _y:50}). Selecione o símbolo de clipe de filme na biblioteca e Linkage (Vinculação) no menu popup Library (Biblioteca). name_txt. a partir de Window > Actions. Selecione o Frame 1 da Timeline do clipe de filme e abra o painel Actions. É possível encontrar um aplicativo de galeria de fotografias de exemplo no disco rígido. Digite dynamic_id na caixa de texto Identifier (Identificador) e clique em OK. 5. está localizado na pasta Samples no disco rígido. gallery_tween. 3. {name_str:"Erick".fla.attachMovie("dynamic_id". 4. navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Galleries. o que inclui criar clipes de filme durante a execução. Esse arquivo contêm um exemplo do uso do ActionScript para controlar clipes de filme dinamicamente e carregar arquivos de imagem em um arquivo SWF. Selecione as opções Export for ActionScript (Exportar para ActionScript) e Export in first frame (Exportar no primeiro quadro). como mostra o seguinte exemplo: var name_str:String. O arquivo de origem de exemplo. "newClip_mc". 10. o primeiro quadro da Timeline principal e adicione o seguinte código ao painel Script do painel Actions: /* Anexa um novo clipe de filme e move-o para a coordenada x e y 50 */ this. 9. 8. crie um campo de texto dinâmico no Stage com um nome de instância name_txt. 6.

"clip1_mc". O código a seguir anexa dois novos clipes de filme ao container_mc.attachMovie("symbolID". navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\Animation.evelyn Gerenciando profundidades do clipe de filme 385 . o código a seguir anexa um novo clipe de filme à Timeline de um clipe de filme chamado container_mc com um valor de profundidade 10. encontra-se na pasta Samples do disco rígido ■ No Windows. Os valores de profundidade de clipes de filme podem variar de -16384 a 1048575. Para evitar esse problema.createEmptyMovieClip method)}%.getNextHighestDepth().duplicateMovieClip method)}% ou %{createEmptyMovieClip (MovieClip. %{duplicateMovieClip (MovieClip. mas não com componentes que usam um sistema de gerenciamento de profundidade diferente. Ao criar um clipe de filme durante a execução usando %{attachMovie (MovieClip.attachMovie method)}%. Esse exemplo cria um novo clipe de filme com a profundidade 10 no espaço de ordem z de container_mc. é renderizado atrás do clip2_mc porque um valor de profundidade inferior foi atribuído a ele. 15). Cada clipe de filme tem um valor de profundidade associado. use o método MovieClip. container_mc. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Animation.attachMovie("symbolID". Um arquivo de origem de exemplo. "clip1_mc". o clipe novo ou anexado substituirá o conteúdo existente. Por exemplo. que cria e remove vários clipes de filme durante a execução. container_mc. Em vez disso. animation.■ No Macintosh. que determina se ele será renderizado na frente ou atrás de outros clipes de filme na mesma Timeline (Linha de tempo) de clipe de filme. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/Galleries. container_mc. use “DepthManager class” com o componente instances. "clip2_mc". 10). O primeiro clipe. No Macintosh. chamado clip1_mc. 10). especifique sempre uma profundidade para o novo clipe como um parâmetro do método. ■ Gerenciando profundidades do clipe de filme Cada clipe de filme tem seu próprio espaço de ordem z que determina como os objetos são sobrepostos no clipe de filme ou arquivo SWF pai.fla.attachMovie("symbolID". Se você criar ou anexar um novo clipe de filme em uma profundidade em que já existe um clipe de filme.

getDepth()). consulte “DepthManager class” em Component Language Reference (Referência da linguagem de componentes). Para obter mais informações sobre profundidades de clipes de filme. em vez disso. 10.A classe MovieClip fornece diversos métodos de gerenciamento de profundidades de clipes de filmes. para obter mais informações. _y:0}). consulte os seguintes tópicos: ■ ■ ■ ■ “Determinando a próxima profundidade mais alta disponível” na página 386 “Determinando a instância em uma profundidade particular” na página 387 “Determinando a profundidade de uma instância” na página 387 “Trocando profundidades de clipes de filme” na página 388 Determinando a próxima profundidade mais alta disponível Para determinar a próxima profundidade mais alta disponível em um clipe de filme. {_x:200. 386 Trabalhando com clipes de filme .swapDepths method)}% em ActionScript 2. this.getDepth())."file_mc". %{getDepth (MovieClip.getNextHighestDepth method)}%.getDepth method)}% e %{swapDepths (MovieClip. a variável nextDepth contém o valor 11 porque essa é a próxima profundidade mais alta disponível para o clipe de filme edit_mc. Depois. this. {_x:0. consulte %{getNextHighestDepth (MovieClip. "edit_mc".attachMovie("menuClip". Não use MovieClip.getInstanceAtDepth method)}%. use MovieClip.0 Language Reference. %{getInstanceAtDepth (MovieClip. O valor inteiro retornado por esse método indica a próxima profundidade disponível que será renderizada na frente de todos os outros objetos no clipe de filme. use o gerenciador de profundidade. nextDepth.getNextHighestDepth method)}%. ele determina a próxima profundidade mais alta disponível no mesmo clipe de filme e cria um novo clipe chamado edit_mc nessa profundidade. consulte %{getNextHighestDepth (MovieClip. // 10 var nextDepth:Number = this.getNextHighestDepth() com componentes. Para obter mais informações. chamado file_mc.getNextHighestDepth().getNextHighestDepth(). Para obter mais informações sobre MovieClip. trace(edit_mc. O código a seguir anexa um novo clipe de filme. na Timeline (Linha de tempo) raiz. trace(file_mc. // 11 Nesse caso. _y:0}).attachMovie("menuClip".getNextHighestDepth(). com profundidade 10.

O código a seguir faz a iteração de todos os clipes de filme na Timeline (Linha de tempo) principal de um arquivo SWF e exibe o nome da instância e o valor da profundidade de cada clipe no painel Output (Saída): for (var item:String in _root) { var obj:Object = _root[item].Para obter a profundidade ocupada mais alta atual. consulte %{getInstanceAtDepth em ActionScript 2. consulte %{getDepth (MovieClip. (MovieClip. O código a seguir combina getNextHighestDepth() e getInstanceAtDepth() para determinar o clipe de filme na profundidade ocupada mais alta (atual) na Timeline (Linha de tempo) raiz. Gerenciando profundidades do clipe de filme 387 .getDepth().getDepth method)}% em ActionScript 2.getInstanceAtDepth().getInstanceAtDepth(highestOccupiedDepth).1. if (obj instanceof MovieClip) { var objDepth:Number = obj. use MovieClip.getInstanceAtDepth method)}% Para obter mais informações. Determinando a instância em uma profundidade particular Para determinar a instância em uma profundidade específica. Determinando a profundidade de uma instância Para determinar a profundidade de uma instância de clipe de filme.getDepth().0 Language Reference. trace(obj. var highestOccupiedDepth:Number = this. como descrito na próxima seção. Esse método retorna uma referência para a instância de MovieClip na profundidade especificada. use MovieClip.0 Language Reference. var instanceAtHighestDepth:MovieClip = this.getNextHighestDepth() . subtraia 1 do valor retornado por getNextHighestDepth()._name + ":" + objDepth) } } Para obter mais informações.

elas trocam de profundidade. 10. Selecione 11. o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte código no painel Actions (Ações): first_mc.fla. Selecione a instância no Stage e digite first_mc na caixa de texto Instance Name (Nome da instância) no inspetor Property (Propriedade). 2. use MovieClip.swapDepths method)}% em ActionScript 2.onRelease = function() { this. 3. Os exemplos a seguir mostram como duas instâncias de clipes de filme podem trocar de profundidade durante a execução. }. em seguida. 5. second_mc. Modify (Modificar) > Convert to Symbol (Converter em símbolo). }. Selecione a opção Movie clip (Clipe de filme) e clique em OK. 388 Trabalhando com clipes de filme . 8. 9. Você verá as duas instâncias alterarem a sobreposição de um clipe por outro.swapDepths(first_mc). 4.0 Language Reference.onRelease = function() { this. Selecione a instância no Stage e digite second_mc na caixa de texto Instance Name no inspetor Property. 7. 6. consulte %{swapDepths (MovieClip. Selecione o círculo azul e.swapDepths(). Quando você clica nas instâncias no Stage. Desenhe um círculo vermelho no Stage e selecione Modify > Convert to Symbol.Trocando profundidades de clipes de filme Para trocar as profundidades de dois clipes de filme na mesma Timeline. Selecione a opção Movie clip (Clipe de filme) e clique em OK. Para obter mais informações. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. Desenhe um círculo azul no Stage (Palco).swapDepths(second_mc). Arraste as duas instâncias para que uma se sobreponha ligeiramente a outra no Stage. Para trocar profundidades de clipes de filme: 1. Crie um novo documento do Flash chamado swap.

O clipe de filme ou o botão é uma superfície. Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript 389 . você pode selecionar a opção Use runtime bitmap caching (Usar cache de bitmap em tempo de execução) no inspetor Properties. Para armazenar clipes de filme ou botões em cache sem usar o ActionScript. os dados vetoriais armazenados em cache na superfície não precisam permanecer inalterados ao longo de todo o arquivo SWF. a superfície é recriada. Quando o seu conteúdo permanece estático (como um clipe de filme retangular). quando você altera a posição do clipe de filme retangular. N OT A Você pode atualizar os dados vetoriais e.Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript À medida que o tamanho dos seus designs no Flash aumenta. Portanto. permitindo que ele seja renderizado rapidamente. Portanto. o Flash redesenha o retângulo inteiro no Flash Player 7 e em versões anteriores. Para ativar o recurso de armazenamento em cache para uma instância de clipe de filme. bem como para controlar os planos de fundo. Portanto. o Flash não otimiza o conteúdo. use o inspetor Properties (Propriedades). nesse momento. é possível armazenar em cache clipes de filme e botões especificados para melhorar o desempenho do arquivo SWF. esteja você criando um aplicativo ou animações complexas com script. No Flash Player 8. as instâncias que têm o armazenamento em cache ativado não são redesenhadas continuamente enquanto o arquivo SWF é reproduzido. é necessário considerar o desempenho e a otimização. essencialmente uma versão de bitmap dos dados vetoriais da instância que não devem sofrer muitas alterações ao longo do arquivo SWF. Você pode usar o ActionScript para ativar os recursos de armazenamento em cache e rolagem.

opaqueBackground Permite especificar uma cor de fundo para a instância do clipe de filme opaca. Você só observa vantagens de desempenho para as propriedades opaqueBackground e scrollRect quando define cacheAsBitmap como true. O Flash cria um objeto de superfície para a instância. A superfície copia o bitmap para a própria superfície mãe. Para obter mais informações e um exemplo. defina as propriedades cacheAsBitmap and para a instância do clipe de filme. a superfície será recriada em vez de redimensionada. Para obter mais informações e um exemplo. Essas três propriedades são independentes umas das outras. Para obter mais informações e um exemplo.scrollRect property)}%. mas as propriedades opaqueBackground e scrollRect funcionam melhor quando um objeto é armazenado em cache como um bitmap. Se você alterar os limites do clipe de filme. consulte “Armazenando um clipe de filme em cache” na página 393. consulte “Definindo o plano de fundo de um clipe de filme” na página 396. scrollRect 390 Trabalhando com clipes de filme . consulte %{scrollRect (MovieClip. Um bitmap opaco não tem um canal alfa (transparência) e é renderizado mais rápido. em vez de dados vetoriais. Dessa maneira.A tabela a seguir contém breve descrições das novas propriedades para instâncias de clipes de filme: Propriedade cacheAsBitmap Descrição Faz com que a instância do clipe de filme armazene em cache sua própria representação de bitmap. Se você definir essa propriedade como um valor numérico. e a instância rola com os deslocamentos de rolagem. scrollRect Permite rolar rapidamente o conteúdo do clipe de filme e obter uma janela que exibe conteúdo maior. que é um bitmap armazenado em cache. altura e largura especificados. Para criar uma superfície também rolável. o usuário pode rolar rapidamente o conteúdo do clipe e ter uma janela que exiba conteúdo maior do que o permitido na área Stage (Palco). a instância do clipe de filme terá uma superfície opaca (não transparente). É possível aninhar as superfícies umas dentro das outras. O conteúdo do clipe é cortado. É possível rolar mais rápido os campos de texto e o conteúdo complexo exibidos na instância porque o Flash não gera novamente todos os dados vetoriais do clipe de filme.

Por obter um exemplo. O desempenho geral dos dados armazenados em cache depende da complexidade dos dados vetoriais de suas instâncias. consulte “Sobre máscaras de canal alfa” na página 398. No Windows. Esta seção descreve os cenários em que é recomendável usar o armazenamento em cache e clipes de filme comuns.fla. Embora aparentemente seja sempre desejável ativar esse recurso para melhorar o desempenho dos arquivos SWF. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap. Localize o arquivo denominado cacheBitmap. como a renderização mais rápida de animações vetoriais complexas. No Macintosh. No Windows.fla na pasta Samples no disco rígido.Para obter informações sobre máscaras de canais alfa. É possível encontrar um arquivo de origem de exemplo que mostre como aplicar o armazenamento de bitmap em cache a uma instância. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/CacheBitmap. Localize o arquivo de origem de exemplo. Se você estiver alterando pequenas regiões. em algumas situações. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\FlashType. Para aproveitar esse recurso. Convém testar os dois cenários com o seu trabalho antes de implantar o aplicativo. ele não melhorará o desempenho ou poderá até mesmo piorá-lo. Também é possível encontrar um arquivo de origem de exemplo que mostre como aplicar o armazenamento de bitmap em cache à um texto de rolagem. na pasta Samples no disco rígido. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/FlashType. consulte o arquivo de exemplo no diretório de instalação do Flash\Samples and Tutorials\Samples\ActionScript\FlashType. NO T A ■ ■ ■ ■ Não é possível aplicar o armazenamento em cache diretamente a campos de texto. a diferença entre usar uma superfície e usar dados vetoriais poderá ser irrelevante. Há vários cenários em que será útil ativar o armazenamento em cache. do volume de dados alterado e da definição ou não da propriedade opaqueBackground. que exigem a definição da propriedade cacheAsBitmap como true. é necessário colocar um texto em um clipe de filme. No Macintosh. o que oferece diversas vantagens. Quando ativar o armazenamento em cache A ativação do armazenamento em cache para um clipe de filme cria uma superfície. flashtype. Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript 391 .

fla na pasta Samples no disco rígido. Assim a rolagem rápida de pixels é ativada para a instância especificada. e as janelas não precisam gerar novamente o conteúdo vetorial. No Macintosh. Quando um usuário rola a instância de clipe de filme. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/CacheBitmap. É possível abrir ou fechar cada janela (por exemplo. em vez de gerar novamente o campo de texto inteiro. Quando usar o armazenamento de bitmap em cache Veja a seguir os cenários típicos em que a ativação do armazenamento de bitmap em cache oferece vantagens significativas. que exigem a definição da propriedade cacheAsBitmap como true. Um aplicativo que contém uma imagem de fundo complexa e detalhada de dados vetoriais (talvez uma imagem à qual você tenha aplicado o comando Trace Bitmap (Traçar bitmap) ou uma arte criado no Adobe Illustrator). navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap. armazená-lo em um clipe de filme e definir a propriedade opaqueBackground como true. Os usuários podem arrastar as janelas para que se sobreponham. É possível encontrar um arquivo de origem de exemplo que mostre como aplicar o armazenamento de bitmap em cache a uma instância. Imagem de fundo complexa Um aplicativo que exibe um grande volume de texto em um campo de texto de rolagem. consulte “Sobre máscaras de canal alfa” na página 398. Todos esses cenários melhoram a resposta e a interatividade do aplicativo otimizando os gráficos vetoriais. É possível animar caracteres dispostos sobre o fundo. ■ 392 Trabalhando com clipes de filme . você pode selecionar o conteúdo. Localize o arquivo denominado cacheBitmap. ■ No Windows. Se você marcar cada janela como uma superfície (defina a propriedade cacheAsBitmap como true). Campo de texto de rolagem Sistema de janelas Um aplicativo com um sistema complexo de janelas sobrepostas. O fundo é renderizado como um bitmap e pode ser redesenhado rapidamente para que a animação seja reproduzida com muito mais rapidez.Para obter informações sobre máscaras de canais alfa. o que torna a animação mais lenta pois o fundo precisa gerar novamente os dados vetoriais de forma contínua. É possível colocar o campo de texto em um clipe de filme definido como rolável com limites de rolagem (a propriedade scrollRect). cada uma será isolada e armazenada em cache. Para melhorar o desempenho. as janelas do navegador da Web). o Flash desloca os pixels rolados para cima e gera a região recém-exposta.

flashtype. lembre-se das seguintes diretrizes: ■ Não utilize excessivamente superfícies (clipes de filme com o armazenamento em cache ativado). quando armazenado em cache. ela será alterada entre a superfície e os dados vetoriais.Também é possível encontrar um arquivo de origem de exemplo que mostre como aplicar o armazenamento de bitmap em cache à um texto de rolagem. Agrupe ao máximo as superfícies. ■ Quando evitar o uso do armazenamento de bitmap em cache O uso inadequado desse recurso pode ter um impacto negativo no arquivo SWF. ■ No Windows. em grande parte. observe que os pixels da instância do clipe de filme se encaixam automaticamente em coordenadas inteiras. na pasta Samples no disco rígido. o que dificulta o processamento e afeta negativamente o arquivo SWF. Localize o arquivo de origem de exemplo. Ao desenvolver um arquivo FLA que utilize superfícies. estáticas (sem animação). às vezes. só ative esse recurso quando precisar melhorar o desempenho da renderização. é preciso definir a propriedade cacheAsBitmap como true. o computador) precisa executar. Use superfícies para instâncias de clipe de filme que sejam. Se você abusar do armazenamento de bitmap em cache. Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript 393 . Por exemplo. ao criar aplicativos com janelas. Um bitmap armazenado em cache pode ocupar bem mais memória que uma instância de clipe de filme comum. É possível arrastar ou mover a instância. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/FlashType. Como cada superfície usa mais de memória do que um clipe de filme comum. será consumido um grande volume de memória. se o clipe de filme no Stage (Palco) tiver 250 pixels por 250 pixels de tamanho. observe que todas as animações vetoriais complexas são renderizadas mais rápido. Ao testar o arquivo SWF. No Macintosh. por exemplo. Depois de defini-la. especialmente se o conteúdo for aumentado. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\FlashType. Por exemplo. mas o seu conteúdo não deve conter muita animação nem sofrer muitas alterações. A mistura de superfícies e dados vetoriais aumenta o volume de processamento que o Flash Player (e. ■ ■ Armazenando um clipe de filme em cache Para armazenar uma instância de clipe de filme em cache. ■ Evite aumentar o zoom em superfícies armazenadas em cache.fla. se você girar ou transformar uma instância. ele poderá usar 250 KB em vez de 1 KB no caso de uma instância de clipe de filme comum (não armazenada em cache).

8. i++) { makeStar(). i < 20. "star" + depth. 5. No Macintosh.onEnterFrame = function() { star_mc. 394 Trabalhando com clipes de filme . ■ 4. Se houver falha na alocação do bitmap (erro de falta de memória). depth). Crie ou importe um gráfico vetorial complexo para o arquivo FLA.transitions.getNextHighestDepth(). Clique em OK para criar o símbolo do clipe de filme com o identificador de vinculação Star. Há um gráfico vetorial complexo no arquivo de origem concluído para este exemplo no seguinte diretório: ■ 3. mesmo que a propriedade cacheAsBitmap esteja definida como true nas seguintes situações: ■ ■ Se o bitmap tiver mais de 2880 pixels de altura ou largura. em seguida. for (var i:Number = 0. 7. 2. Selecione o gráfico vetorial e. 6.fla.Tween. Selecione Export for ActionScript (Exportar para ActionScript). navegue até unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap. } function makeStar():Void { var depth:Number = this. Digite star_id na caixa de texto Identifier (Identificador). star_mc._rotation += 5. var star_array:Array = new Array().attachMovie("star_id". Digite star na caixa de texto Name (Nome) e clique em Advanced (Avançado) se a caixa de diálogo ainda não estiver expandida. Para armazenar um clipe de filme em cache: 1. Digite 24 na caixa de texto de quadros por segundo no inspetor Properties (Propriedades). No Windows. Crie um novo documento do Flash e atribua ao arquivo o nome cachebitmap. que também seleciona Export in first frame (Exportar no primeiro quadro). Modify (Modificar) > Convert to Symbol (Converter em símbolo).Uma superfície (um bitmap armazenado em cache) não será criada. var star_mc:MovieClip = this. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e adicione o seguinte ActionScript ao painel Actions (Ações): import mx. 9. em Window (Janela) > Properties > Properties. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/CacheBitmap.

Também é possível aplicar esse código para uma instância de botão. } var mouseListener:Object = new Object().} star_mc. null. Selecione 11. var star_tween:Tween = new Tween(star_mc. 10.random() * 5) + 5.yoyo(). No Macintosh. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap. Stage. 0. } } Mouse. for (var i:Number = 0.cacheAsBitmap. ■ Sobre o armazenamento em cache e a rolagem de clipes de filme com o ActionScript 395 .0 Language Reference. }.round(Math.random() * Stage. star_tween.fla na pasta Samples no disco rígido._height / 2). Se você alternar entre a ativação e a desativação do armazenamento em cache. como demonstrado no exemplo anterior. ■ No Windows. Consulte %{cacheAsBitmap (Button. Localize o arquivo denominado cacheBitmap.length.height . i < star_array.0 Language Reference.width.cacheAsBitmap = !star_mc. (Referência da linguagem ActionScript 2.push(star_mc). Para obter informações sobre máscaras de canais alfa. true). a definição de cacheAsBitmap é alternada entre true e false.0) Para obter exemplos de rolagem de clipes de filme.onMotionFinished = function():Void { star_tween._y = Math. i++) { star_mc = star_array[i]. mouseListener. "_x". Control (Controlar) > Test Movie (Testar filme) para testar o documento. Quando você clica no Stage. É possível encontrar um arquivo de origem de exemplo que mostre como aplicar o armazenamento de bitmap em cache a uma instância.addListener(ouvinteMouse). star_mc. consulte %{scrollRect (MovieClip. star_array.star_mc. Você perceberá que a animação deixará de ser animada à taxa de 1 quadro por segundo e passará a uma animação suave em que as instâncias serão animadas nos dois sentidos de forma alternada no Stage. os dados armazenados em cache serão liberados.onMouseDown = function():Void { var star_mc:MovieClip. consulte “Sobre máscaras de canal alfa” na página 398. que exigem a definição da propriedade cacheAsBitmap como true. (Math. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/CacheBitmap.cacheAsBitmap property)}% em ActionScript 2. Clique em qualquer local no Stage para ativar o armazenamento de bitmap em cache.scrollRect property)}% em ActionScript 2.

Quando você não define cacheAsBitmap como true. a propriedade opaqueBackground adiciona uma forma quadrada vetorial opaca ao plano de fundo da instância do clipe de filme. ■ Definindo o plano de fundo de um clipe de filme É possível definir um plano de fundo opaco para um clipe de filme. navegue até HD do Macintosh/Applications/Macromedia Flash 8/ Samples and Tutorials/Samples/ActionScript/FlashType. */ my_mc. na pasta Samples no disco rígido. que ajuda a otimizar o desempenho. my_mc. Selecione a instância no Stage e digite my_mc na caixa de texto Instance Name (Nome da instância) no inspetor Properties (Propriedades).opaqueBackground = 0xFF0000. Desenhe um círculo azul no Stage (Palco). Selecione a opção Movie clip (Clipe de filme) e clique em OK.fla. você poderá definir a propriedade opaqueBackground como uma cor específica. ■ No Windows. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples e Tutorials\Samples\ActionScript\FlashType. Ela não cria um bitmap automaticamente.fla. Selecione o círculo azul e. 4. flashtype. Para definir o plano de fundo de um clipe de filme: 1. a mesma cor do Stage (Palco). the internal bitmap is opaque and renders faster. 3. em seguida. essa propriedade permite tornar o bitmap interno opaco e renderizá-lo com mais rapidez.Também é possível encontrar um arquivo de origem de exemplo que mostre como aplicar o armazenamento de bitmap em cache à um texto de rolagem. quando tiver um plano de fundo com arte vetorial complexa. 396 Trabalhando com clipes de filme . O plano de fundo é então tratado como um bitmap. 6. Quando você define cacheAsBitmap como true e define a propriedade opaqueBackground como uma cor especificada. 2. Crie um novo documento do Flash chamado background. O exemplo a seguir mostra como definir o plano de fundo de um clipe de filme para otimizar o desempenho. Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) e digite o seguinte código no painel Actions (Ações): /* When you set cacheAsBitmap.cacheAsBitmap = true. Por exemplo. Localize o arquivo de origem de exemplo. No Macintosh. em geral. 5. Modify (Modificar) > Convert to Symbol (Converter em símbolo).

opaqueBackground property)}% em ActionScript 2.7. Os traços são ignorados.com"). consulte %{opaqueBackground (MovieClip.setMask(mask_mc). Crie um quadrado no Stage (Palco) com a ferramenta Rectangle (Retângulo). usar formas separadas dentro de uma única máscara ou redimensionar uma máscara dinamicamente. Selecione o quadrado e pressione F8 para convertê-lo em um clipe de filme. animá-lo ao longo de uma guia de movimento. 10).security.0). O clipe de filme da máscara reproduz todos os quadros na sua Timeline (Linha de tempo) como em um clipe de filme comum. Também pode usar o ActionScript para ativar ou desativar uma máscara.onLoadInit = function(target_mc:MovieClip):Void { target_mc. Essa instância é a sua máscara. Para obter mais informações sobre essa propriedade. 2. Abra o painel Actions (Ações). em Window (Janela) > Actions. O clipe de filme aparece no Stage com a cor de fundo especificada.0 Language Reference (Referência da linguagem ActionScript 2. No inspetor Properties (Propriedades). Para criar uma máscara: 1. 5. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. Somente preenchimentos são usados em um clipe de filme de máscara. 4. 6. Usando clipes de filme como máscaras É possível usar um clipe de filme como máscara para criar um furo pelo qual o conteúdo de outro clipe de filme fica visível. this. No painel Actions. } var my_mcl:MovieClipLoader = new MovieClipLoader(). Usando clipes de filme como máscaras 397 . Também não é possível definir a propriedade _alpha de um clipe de filme de máscara. se ele ainda não estiver aberto. 3. var mclListener:Object = new Object(). Não é possível usar uma máscara para mascarar outra máscara.helpexamples. digite mask_mc na caixa de texto Instance Name (Nome da instância).allowDomain("http://www. insira o seguinte código: System. mclListener. Você pode tornar o clipe de filme da máscara arrastável. O clipe de filme mascarado é revelado em todas as áreas opacas (não transparentes) do clipe de filme que está funcionando como a máscara.createEmptyMovieClip("img_mc". Selecione Frame 1 (Quadro 1) na Timeline (Linha de tempo).

O armazenamento de bitmap em cache no tempo de execução foi aplicado aos dois clipes de filme no inspetor Properties (Propriedades).40. As fontes de dispositivo podem ser mascaradas somente usando um clipe de filme como máscara.setMask method)}% em ActionScript 2. o usuário deve ter o Flash Player 6 (6.0 Language Reference (Referência da linguagem ActionScript 2.0) ou versão posterior. o seguinte código é inserido no Frame 1 (Quadro 1) da Timeline (Linha de tempo): flower_maskee. a caixa de delimitação retangular da máscara é usada como a forma de mascaramento. consulte %{setMask (MovieClip.addListener(mclListener). img_mc).com/flash/images/image1.helpexamples. e não a forma da própria máscara.jpg".0). Nesse arquivo de exemplo.0. my_mcl. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. se você criar uma máscara de clipe de filme não-retangular para o texto da fonte de dispositivo no ambiente de criação do Flash. Não é possível mascarar fontes de dispositivo usando uma camada de máscara no Stage (Palco). Sobre a máscara de fontes de dispositivo Você pode usar um clipe de filme para mascarar o texto que é definido em uma fonte de dispositivo.com/go/flash_samples. Sobre máscaras de canal alfa Há suporte para máscaras de canal alfa quando o clipe de filme de máscara e o clipe de filme mascarado usam o armazenamento de bitmap em cache. Para ver um exemplo de máscara alfa. faça o download do arquivo de exemplo de máscara alfa em www.macromedia. Para obter informações detalhadas. 398 Trabalhando com clipes de filme .my_mcl. O clipe de filme mascarado (flower_maskee) tem alfa de 100% e nenhum filtro foi aplicado a ele. Uma imagem JPEG externa é carregada no arquivo SWF durante a execução e mascarada pela forma desenhada anteriormente no Stage. Quando você usa um clipe de filme para mascarar texto definido em uma fonte de dispositivo.loadClip("http://www. 7.setMask(oval_mask). a máscara exibida no arquivo SWF terá a forma da caixa de delimitação retangular da máscara. a máscara é oval (oval_mask) com alfa de 50% e filtro de embaçamento aplicado a ela. Ou seja. No painel Actions (Ações). Para que a máscara do clipe de filme de uma fonte de dispositivo funcione adequadamente. Esse suporte também permite usar um filtro no clipe de filme de máscara independentemente do filtro aplicado ao clipe de filme mascarado.

como cliques do mouse e pressionamentos de teclas.0. Use o código ActionScript para aplicar uma máscara e o armazenamento de bitmap em cache durante a execução. você criará uma classe MoveRight que prolonga a classe MovieClip. bem como aos eventos no nível do sistema. em seguida. Para criar uma subclasse de clipe de filme: 1. 2. em Control (Controlar) > Test Movie (Testar filme). Selecione File (Arquivo) > New (Novo) e. como o carregamento inicial de um clipe de filme no Stage. consulte “Exemplo: Criando classes personalizadas” na página 278. você pode fornecer definições para os métodos MovieClip internos e manipuladores de eventos. ActionScript file (Arquivo do ActionScript) na lista de tipos de documentos para criar um novo arquivo do ActionScript. Crie um novo diretório chamado BallTest. Atribuindo uma classe a um símbolo de clipe de filme 399 . O ActionScript fornece duas maneiras de manipular eventos do clipe de filme: através de métodos manipuladores de eventos e dos manipuladores de eventos onClipEvent() e on(). como onEnterFrame e onRelease. você criará um símbolo de clipe de filme em um novo documento Flash (FLA) e atribuirá a classe MoveRight a esse símbolo. No segundo procedimento. No procedimento a seguir. Atribuindo uma classe a um símbolo de clipe de filme Com o ActionScript 2. Sempre que você criar uma instância do clipe de filme à qual a classe é atribuída.0. é possível criar uma classe que estenda o comportamento da classe MovieClip interna e usar caixa de diálogo Linkage Properties (Propriedades de vinculação) para atribuir essa classe a um símbolo da biblioteca de clipes de filme.”. “Manipulando eventos.Quando você testa o documento. é feita a mistura de alfa no clipe mascarado por meio da máscara.) Em uma subclasse da classe MovieClip. consulte Capítulo 10. Para obter mais informações sobre a manipulação de eventos de clipes de filme. ela assumirá as propriedades e comportamentos definidos pela classe atribuída a ela. (Para obter mais informações sobre o ActionScript 2. a MoveRight define um manipulador onPress que move os 20 pixels do clipe para a direita sempre que o usuário clica no clipe de filme. NO T A As camadas de máscara não suportam as máscaras de canal alfa. Manipulando eventos de clipes de filme Os clipes de filme podem responder aos eventos do usuário.

Clique em OK. Selecione o círculo e. No Flash. Se você criar propriedades de componente para uma classe e desejar que um clipe de filme herde essas propriedades.as). 7. 8. siga esta etapa adicional: com o símbolo do clipe de filme selecionado no painel Library (Biblioteca). selecione File > New. Teste o documento do Flash em Control (Controlar) > Test Movie (Testar filme). 4. Para atribuir a classe a um símbolo de clipe de filme: 1. 400 Trabalhando com clipes de filme . Sempre que você clicar no clipe de filme ball. } } 4. 3. Usando a ferramenta Oval. 5.move o clipe para a direita 20 pixels quando ele é clicado class MoveRight extends MovieClip { public function onPress() { this. Selecione Advanced (Avançado) para mostrar as opções de vinculação. Salve o documento como MoveRight.3. Selecione a opção Export for ActionScript (Exportar para ActionScript) e digite MoveRight na caixa de texto Class (Classe). ele se moverá 20 pixels para a direita. 2._x += 20. Na caixa de diálogo Convert to Symbol. selecione Component Definition (Definição de componente) no menu de pop-up Library e insira o nome da nova classe na caixa Class (Classe). Salve o arquivo como ball. selecione Movie Clip (Clipe de filme) como o comportamento do símbolo e digite ball_mc na caixa de texto Name (Nome). em seguida. Modify (Modificar) > Convert to Symbol (Converter em símbolo).fla no diretório BallTest (o mesmo diretório que contém o arquivo MoveRight. selecione Flash Document (Documento do Flash) na lista de tipos de arquivo e clique em OK. Insira o seguinte código no arquivo de script: // classe MoveRight -. se elas ainda não estiverem exibidas. 6. desenhe um círculo no Stage.as no diretório BallTest.

No painel Library (Biblioteca). você adicionou a instância do símbolo Ball ao Stage (Palco) durante a criação. 6.fla no mesmo diretório como o arquivo de classes.move o clipe para a direita 5 pixels a cada quadro. é possível atribuir parâmetros aos clipes criados durante a execução usando o parâmetro initObject de attachMovie() e duplicateMovie().as. Crie um novo documento do Flash e salve-o como MoveRightDistance. Por exemplo. e exclua o conteúdo do Stage (Palco). como oval. } } 3. var distance:Number. A diferença é uma nova propriedade chamada distance. Crie um novo documento do ActionScript e salve-o como MoveRightDistance. cujo valor determina quantos pixels um clipe de filme se move quando é clicado. a classe MoveRightDistance a seguir é uma variação da classe MoveRight (consulte “Atribuindo uma classe a um símbolo de clipe de filme” na página 399). class MoveRightDistance extends MovieClip { // A propriedade distance determina quantos // pixels o clipe deve se mover a cada clique no botão do mouse. no símbolo e selecione Linkage (Vinculação) no menu de contexto. 2. ou mantenha pressionada a tecla Control e clique (Macintosh). Digite o seguinte ActionScript na janela Script: // Classe MoveRightDistance -. Basta um símbolo de clipe de filme da biblioteca para este exemplo. Salve as alterações. function onPress() { this. 5. clique com o botão direito do mouse (Windows)._x += this.Inicializando as propriedades de classe No exemplo apresentado no segundo procedimento em “Atribuindo uma classe a um símbolo de clipe de filme”. Como abordado em “Adicionando parâmetros aos clipes de filme criados dinamicamente” na página 383. Inicializando as propriedades de classe 401 . Crie um símbolo de clipe de filme com uma forma vetorial.distance. Você pode usar esse recurso para inicializar as propriedades de classe que está atribuindo a um clipe de filme. Para passar argumentos para uma classe personalizada: 1. 4.

é movida 50 pixels sempre que é clicada. Atribua o identificador de vinculação Ball ao símbolo. é movida 125 pixels sempre que é clicada.attachMovie("Ball". {distance:125}). Digite MoveRightDistance na caixa de texto AS 2. Esse código cria duas novas instâncias do símbolo na Timeline raiz do arquivo SWF. "ball125_mc". 10.0).attachMovie("Ball". 8. 402 Trabalhando com clipes de filme .0 Class (Classe AS 2. ball125_mc. {distance:50}). a segunda. "ball50_mc".7. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. A primeira instância. this. 20. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. 10. 9. ball50_mc.

Para criar campos de texto. A lista a seguir descreve a terminologia usada neste capítulo. pode analisar seqüências de caracteres em um array ou validar as seqüências de caracteres que o usuário digita em um campo de texto. É possível trabalhar de várias maneiras com seqüências de caracteres em um aplicativo. use a ferramenta de criação do Flash ou o ActionScript. Caracteres Os caracteres são letras. ao contrário do texto sem serrilhado (consulte também Sem serrilhado). Serrilhado 12 O texto com serrilhado não utiliza variações de cor para suavizar as bordas dentadas. A opção Anti-Aliasing (Eliminação de serrilhado) torna o texto mais legível alinhando os contornos do texto nas fronteiras dos pixels e é especialmente eficiente para renderizar fontes menores com mais nitidez.CAPÍTULO 12 Trabalhando com texto e seqüências de caracteres Vários dos aplicativos. a fim de que as bordas dos caracteres exibidos na tela pareçam menos dentadas. Um modo de exibir texto é usar código para manipular como as seqüências de caracteres aparecerão antes de serem carregadas e exibidas no Stage (Palco) durante a execução. apresentações e gráficos criados por você com o Macromedia Flash Professional 8 ou o Macromedia Flash Basic 8 contêm algum tipo de texto. Sem serrilhado Use a eliminação de serrilhado para suavizar o texto. por exemplo. Também pode usar texto de entrada para capturar a entrada do usuário e adicionar texto a uma imagem de fundo. Você pode usar texto estático em seus layouts. 403 . Este capítulo descreve várias maneiras de usar texto e seqüências de caracteres em aplicativos. numerais e pontuação combinados para formar seqüências de caracteres. É possível utilizar vários tipos de texto. porém texto dinâmico para textos mais longos. com ênfase no uso de código para manipular o texto. você pode enviá-las para um servidor e recuperar uma resposta.

. . . . . . . . . . . . . . . . Como os contornos de fontes não são incorporados. . . . . . . . . . o texto criado com elas parece diferente do esperado em sistemas de computadores que não possuem uma fonte instalada correspondente à fonte do dispositivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475 404 Trabalhando com texto e seqüências de caracteres . . cor. . . . . . . . . . . . . . . . . . . . . . . . . o tamanho de um arquivo SWF é menor do que quando são usados contornos de fontes incorporadas. . . . . . . . . . . . . . . . . . . . . . Alguns exemplos de opções de formatação de texto que podem ser aplicadas ao texto são: alinhamento. . . . . Texto Uma ou mais seqüências de caracteres que podem ser exibidas em um campo de texto ou dentro de um componente de interface de usuário. . . . . . . . . . . . . . . . . . . . como as fontes de dispositivo não são incorporadas. . . 420 Sobre a renderização de fontes e texto sem serrilhado. . . . . . . . . . itálicos e espaçamento entre letras. É possível aplicar formatação a um campo de texto ou a determinados caracteres dentro de um campo de texto. . Para obter mais informações sobre texto. 430 Sobre o layout e a formatação de texto. . ativar suporte com várias linhas. . . . . . . . . . . . o Flash Player usa a fonte disponível no computador local mais semelhante à fonte de dispositivo. . . . . . . . . . . . . . . . . . . . . . . . . Uma seqüência de caracteres. . . . . . . . . . . . . formatar como HTML. . 439 Formatando texto com estilos CSS . . . . . . . . . . . . . . 415 Usando fontes . . . . . . Em vez disso. . . . . . . o Flash permite definir campos de texto como editáveis (somente leitura). negrito. . . . . . . . . . . . . . . . . 406 Sobre o carregamento de texto e variáveis em campos de texto . . tamanho de fonte. . consulte os seguintes tópicos: Formatação de texto Sobre campos de texto . . . . . . . . . . . . . . . . . .447 Criando um objeto de folha de estilos . . . . . . . . . . . . . . . . . . . . . . . 449 Usando texto em formato HTML . . O Flash contém três fontes de dispositivo: _sans (semelhante à Helvetica ou Arial). . . . . . . . . . . . . . . Entretanto. . . . . .Fontes de dispositivo As fontes de dispositivo são fontes especiais no Flash que não são incorporadas a um arquivo SWF. . . . . . . . . . . . . . . . . . . . . . . . 461 Exemplo: Criando texto de rolagem . . . . . . . 405 Usando a classe TextField . . recuos. . . . estilo e tamanho semelhantes. . . . . . Campos de texto Um elemento visual no Stage (Palco) que permite exibir texto para um usuário. . . . _serif (semelhante à Times Roman) e _typewriter (semelhante à Courier). . . . Fontes String Conjuntos de caracteres com tipo de fonte. . . . . . . . . . . . mascarar senhas ou aplicar uma folha de estilos CSS ao texto em formato HTML. . . . . . . larguras de margens. . Semelhante a um campo de texto de entrada ou controle de formulário da área de texto em HTML. . . . . . . . . . . . . . . . . . . . . . . . . . .

consulte “Sobre como exibir as propriedades do campo de texto para depuração” na página 763. Os métodos da classe TextField permitem definir. É possível utilizar a interface de usuário para criar vários tipos de campos de texto. fontes especiais não disponíveis na maioria dos computadores. eles tornam o tamanho dos arquivos maior para o aplicativo. outra opção é utilizar o ActionScript para criar campos de texto. NO T A Todos os campos de texto oferecem suporte para Unicode. Texto dinâmico Use campos de texto dinâmico quando precisar exibir caracteres que são atualizados ou alterados durante a execução. Os usuários podem digitar texto nesses campos. consulte “Sobre seqüências de caracteres e a classe String” na página 477. Ambos os componentes têm maior funcionalidade do que os campos de texto equivalentes. consulte “Usando a classe TextField” na página 406. É possível usar o nome de instância em instruções do ActionScript para definir. Ao criar um campo de texto no ambiente de criação. alterar e formatar o campo de texto e seu conteúdo usando as classes TextField e TextFormat. Texto de entrada Use campos de texto de entrada quando precisar capturar a entrada do usuário. Para obter mais informações. pequenas quantidades de texto ou. Para obter informações sobre depuração de campos de texto durante a execução. Sobre campos de texto 405 . ainda. O componente TextInput é semelhante a um campo de texto de entrada. Além disso. entretanto. Também é possível exibir fontes não convencionais com a incorporação de caracteres para campos de texto dinâmico. Os seguintes tipos de campos de texto podem ser criados no Flash: Texto estático Use texto estático para exibir caracteres que não precisam ser alterados.Sobre campos de texto Um campo de texto dinâmico ou de entrada é um objeto TextField (uma instância da classe TextField). O componente TextArea é semelhante a um campo de texto dinâmico com barras de rolagem internas. selecionar e manipular o texto de um campo de texto dinâmico ou de entrada gerado durante a criação ou execução. você pode atribuir a ele um nome de instância no inspetor Properties (Propriedades). Componentes de texto Use os componentes TextArea ou TextInput para exibir ou capturar texto em seus aplicativos. Para obter informações sobre Unicode. você pode carregar texto em campos de texto dinâmico.

atribua a campo de texto um nome de instância no inspetor Properties (Propriedades). O Flash Player também oferece suporte a um subconjunto de marcas HTML que você pode usar para formatar o texto (consulte “Usando texto em formato HTML” na página 461). e usar os métodos e propriedades da classe TextField para controlar o conteúdo ou a aparência básica do campo de texto. O texto é envolvido em torno da mídia incorporada de maneira semelhante a um navegador da Web que envolve o texto em torno da mídia incorporada a um documento HTML. A classe TextFormat permite definir a formatação de caractere e parágrafo dos objetos TextField (consulte “Usando a classe TextFormat” na página 444). O Flash Player 7 e versões posteriores oferecem suporte à marca HTML img. e chamar os métodos dos campos de texto dinamicamente. definir novas marcas de formatação ou aplicar estilos. No Flash Player 7 e versões posteriores. Folha de estilos em cascata) aos campos de texto usando a classe TextField.StyleSheet. consulte “Marca de imagem” na página 465. No Flash Player 8. você também pode carregar dinamicamente imagens PNG. você pode fazer referência ao campo de texto com o nome da instância. Em seguida. Use os métodos e as propriedades dessa classe para controlar os campos de texto durante a execução. arquivos SWF e arquivos JPEG). _droptarget. 406 Trabalhando com texto e seqüências de caracteres . Você pode obter e definir as propriedades. _framesloaded e _totalframes. mas também arquivos SWF externos e clipes de filme que residam na biblioteca (consulte “Marca de imagem” na página 465). Para obter mais informações sobre o uso de estilos CSS. Para obter mais informações. No Flash Player 7 e versões posteriores. seqüências de caracteres e muito mais. o texto HTML que você atribui a um campo de texto pode conter mídia incorporada (clipes de filme. que pode usar estilos CSS. Para obter informações sobre a terminologia que compara texto. que permite incorporar não apenas imagens externas. você pode aplicar os estilos CSS (Cascading StyleSheet. consulte “Formatando texto com estilos CSS” na página 447.O ActionScript também oferece várias maneiras de formatar o texto durante a execução. diretamente a um campo de texto. Também é possível atribuir um texto em formato HTML. Usando a classe TextField A classe TextField representa qualquer campo de texto dinâmico ou de entrada (editável) criado com a ferramenta Text (Texto) no Flash. Você pode usar estilos CSS para atribuir estilo às marcas HTML internas. com exceção das propriedades _currentframe. GIF e JPEG progressivas (o Flash Player 7 não oferece suporte a imagens JPEG progressivas). consulte a introdução deste capítulo “Trabalhando com texto e seqüências de caracteres” na página 403. Para utilizar o ActionScript para controlar um campo de texto dinâmico ou de entrada. Os objetos TextField oferecem suporte às mesmas propriedades que os objetos MovieClip.

texto em formato XML e folhas de estilo externas. Com a ferramenta Text (Texto). no inspetor Properties (Propriedades) (Window [Janela] > Properties > Properties). Para obter mais informações sobre o uso da classe TextField. 2. Sobre campos de texto 407 . navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. Para obter mais informações. O exercício a seguir atribui texto a um campo de texto durante a execução. ■ Atribuindo texto a um campo de texto durante a execução Ao criar aplicativos com o Flash. como suporte a texto em formato HTML. Caso utilize a versão 2 da Arquitetura de Componentes Macromedia no documento do Flash. crie um campo de texto no Stage (Palco).htmlText. talvez você queira carregar o texto de uma origem externa. um arquivo XML ou até mesmo um serviço remoto da Web. consulte os seguintes tópicos: ■ ■ “Atribuindo texto a um campo de texto durante a execução” na página 407 “Sobre a instância do campo de texto e os nomes de variáveis” na página 409 É possível localizar arquivos de origem de exemplo para demonstrar como trabalhar com campos de texto usando o ActionScript. também será possível atribuir valores criando vinculações entre os componentes. como um arquivo de texto. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields. Com o campo de texto selecionado. consulte “Criando campos de texto durante a execução” na página 410. Os arquivos de origem são chamados textfieldsA. Para atribuir texto a um campo de texto.text ou TextField. Ou. no seu disco rígido. No Macintosh.createTextField().fla e textfieldsB. texto simples. Você também pode usar o ActionScript para definir uma folha de estilo. usando o método MovieClip. ■ No Windows. poderá atribuir um valor ao campo de texto criando uma variável com o nome especificado. selecione Input Text (Texto de entrada) no menu popup Text Type (Tipo de texto) e digite headline_txt na caixa de texto Instance Name (Nome da instância). O Flash possibilita um grande controle sobre o modo de criação e exibição de texto no Stage (Placo). se você digitar um valor no campo de texto da variável no inspetor Property (Propriedades).Pode também criar objetos TextField durante a execução e atribuir a eles nomes de instâncias.fla e encontram-se na pasta Samples. Para atribuir texto a um campo de texto durante a execução: 1. é possível usar a propriedade TextField.

". 300. 100. com largura de 200 pixels e altura de 20 pixels. Para criar um campo de texto em formato HTML: Utilize uma das duas etapas a seguir para ativar a formatação HTML para o campo de texto: ■ Selecione um campo de texto e clique em Render Text as HTML (Renderizar texto como HTML) no inspetor Property.getNextHighestDepth(). headline_txt. headline_txt. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Selecione Frame 1 (Quadro 1) da Timeline (Linha de tempo) e abra o painel Actions (Ações) (Window > Actions). 408 Trabalhando com texto e seqüências de caracteres . sublinhados (_) e cifrões ($). digite o seguinte código ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. 4.htmlText = "New articles available on <i>Developer Center</ i>. 5. 20).text = "New articles available on Developer Center". headline_txt. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. 20). números. 100. Esse código cria um novo campo de texto com o nome de instância headline_txt.html = true.getNextHighestDepth(). Ao testar o arquivo SWF (Control > Test Movie).Os nomes de instâncias devem conter apenas letras. 100.text = "New articles available on Developer Center". 100. O campo de texto é criado na próxima profundidade mais alta. Defina a propriedade html do campo de texto como true usando o ActionScript (consulte o código de exemplo a seguir). 300. ■ Para aplicar formatação HTML a um campo de texto usando o ActionScript. nas coordenadas x e y de 100. Você também pode criar um campo de texto com o ActionScript e atribuir texto a ele. 3.createTextField("headline_txt". você verá o texto “New articles available on Developer Center” (Novos artigos disponíveis no Centro de Desenvolvedores) no Stage. this. 100.createTextField("headline_txt". this. Insira o seguinte código no painel Actions: headline_txt.

em seguida. você pode atribuir um nome de variável a um campo de texto dinâmico ou de entrada e. Os arquivos de origem são chamados textfieldsA. Por exemplo. Um nome de variável de um campo de texto é uma referência variável ao texto contido nesse campo. em vez da propriedade de texto. e não uma referência a um objeto. No Macintosh. de forma dinâmica. poderá usar o código a seguir para definir o conteúdo do campo de texto. exibindo o termo “Developer Center” em itálico.fla e textfieldsB. você deve atribuir um nome de instância a um campo de texto para chamar métodos. Para versões mais recentes do Flash Player. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. var myTextVar:String = "This is what will appear in the text field". atribuir valores à variável. Entretanto. você não poderá usar o nome de variável myTextVar para definir a propriedade text do campo de texto. um novo campo de texto. se você tiver atribuído a um campo de texto o nome de variável myTextVar. como mostra o seguinte código: Sobre campos de texto 409 . bem como para obter e definir propriedades nesse campo. A T E NÇ Ã O ■ ■ Ao usar texto em formato HTML com um campo de texto (e não com componentes) no Stage. Você deve usar o nome de instância. No Windows.fla e encontram-se na pasta Samples. ativa a formatação HTML e exibe o texto “New articles available on Developer Center” (Novos artigos disponíveis no Centro de Desenvolvedores) no Stage. Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript. Sobre a instância do campo de texto e os nomes de variáveis Na caixa de texto Instance Name (Nome da instância) do inspetor Properties (Propriedades). Esta é uma funcionalidade obsoleta que pode ser usada durante a criação de aplicativos para versões mais antigas do Flash Player (como o Flash Player 4). é preciso atribuir o texto à propriedade htmlText do campo de texto. no seu disco rígido.O código anterior cria. Na caixa de texto Var do inspetor Properties. Entretanto. não confunda o nome de instância de um campo de texto com seu nome de variável. defina o texto de um campo de texto usando o nome de instância correspondente e o ActionScript. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields.

text = "A text field variable is not an object reference". myTextVar. Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript. Digite o seguinte ActionScript no Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. o código a seguir cria um novo campo de texto. No Macintosh. a menos que pretenda usar uma versão do Flash Player que não ofereça suporte à classe TextField. que se expande para acomodar o texto inserido. 3. chamado test_txt.createTextField("test_txt". navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields. ele atribui um texto usando a propriedade text do campo.wordWrap = true. myField.multiline = true. 100). navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. e modifica suas propriedades para torná-lo um campo de texto com quebra automática e várias linhas. Isso diminui as chances de um conflito de nome de variável. 300. o qual poderá resultar em um comportamento inesperado durante a execução. Esse código cria um campo de texto de 300 x 100 pixels. 0) e a profundidade (ordem z) 10. Por exemplo. Use a propriedade TextField. 2. 0.text = "This sets the text property of the myField object". ■ Criando campos de texto durante a execução Você pode usar o método createTextField() da classe MovieClip para criar um campo de texto vazio no Stage durante a execução. Para acessar os métodos e as propriedades do campo de texto recém-criado. 10. 0. Depois. test_txt. Os arquivos de origem são chamados textfieldsA.// Este exemplo não funcionará. no seu disco rígido. Selecione File (Arquivo) > New (Novo) e depois selecione Flash Document (Documento do Flash) para criar um arquivo FLA.fla e textfieldsB. com o local (0. O novo campo de texto é anexado à linha de tempo do clipe de filme que chama o método. test_txt. isso funcionará.fla e encontram-se na pasta Samples. // Para um campo de texto de entrada com o nome de instância "myField". use o nome de instância especificado no primeiro parâmetro do método createTextField(). Para criar dinamicamente um campo de texto com o ActionScript: 1. ■ No Windows. 410 Trabalhando com texto e seqüências de caracteres . test_txt.text para controlar o conteúdo de um campo de texto.

text = "Create new text fields with the MovieClip. Você poderá manipular um campo de texto desde que atribua um nome de instância no inspetor Properties (Propriedades) ou com código se usar código para criar o campo.fla e encontram-se na pasta Samples. test_txt. No Macintosh. consulte %{createTextField (MovieClip. não estão disponíveis para a criação de campos de texto durante a execução. 100.fla e textfieldsB.0 Language Reference. Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript. no seu disco rígido.createTextField() method. O método removeTextField() não funciona em um campo de texto colocado pela linha de tempo durante a criação.removeTextField method)}% em ActionScript 2. No Windows. N OT A ■ ■ Algumas propriedades de TextField. Só é possível girar um campo de texto se ele utilizar fontes incorporadas. Sobre campos de texto 411 .border = true.autoSize = "left". Sobre a manipulação de campos de texto É possível manipular campos de texto de várias maneiras ao criar um arquivo FLA.text = "I like seeds". Para obter uma lista completa das propriedades da classe TextField.0 Language Reference. Para obter mais informações. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. this. atribui texto a ele e altera a propriedade border do campo: this. Selecione Control (Controlar) > Test Movie (Testar filme) para ver o campo de texto. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields. 200. como _rotation. Você pode usar o método TextField. 100.test_txt. Os arquivos de origem são chamados textfieldsA. O exemplo simples apresentado a seguir cria um campo de texto. Consulte “Para incorporar um símbolo de fonte:” na página 423.getNextHighestDepth(). pigeon_txt. consulte o ActionScript 2.".removeTextField() para remover um campo de texto criado com createTextField().createTextField method)}% e %{removeTextField (TextField. pigeon_txt. O texto é criado durante a execução e aparece no Stage (Palco). 20).createTextField("pigeon_txt". 4.

■ No Windows. Para reposicionar um campo de texto usando o ActionScript: 1. Os arquivos de origem são chamados textfieldsA. 10. 0. no seu disco rígido. 2. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields. É necessário definir novos valores para as propriedades _x e _y do campo de texto. 200).my_txt. 0. Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript.text = "Hello world".width . Crie um novo arquivo FLA e salve-o como positionText. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para ver o campo de texto centralizado no Stage._height) / 2._width) / 2. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields. No Macintosh. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. ■ No Windows. consulte as seguintes seções: ■ ■ “Alterando a posição de um campo de texto” na página 412 “Alterando as dimensões de um campo de texto durante a execução” na página 413 Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript.fla e encontram-se na pasta Samples.fla.fla e textfieldsB. como mostra o seguinte exemplo.my_txt.fla e encontram-se na pasta Samples. my_txt._x = (Stage. 3.height . my_txt. No Macintosh. ■ 412 Trabalhando com texto e seqüências de caracteres . Os arquivos de origem são chamados textfieldsA._y = (Stage. 300.Para ver exemplos de manipulação de campos de texto. no seu disco rígido.border = true.createTextField("my_txt". my_txt. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. ■ Alterando a posição de um campo de texto É possível alterar a posição de um campo de texto no Stage (Palco) durante a execução.fla e textfieldsB. my_txt.

my_txt.border = true.autoSize() para redimensionar o campo de texto após seu preenchimento com texto.text = "Hello world". 10._y = (Stage. my_txt. my_txt. my_txt. 10. Crie um novo documento do Flash e salve-o como resizeTextAuto.multiline = true.fla. essa técnica poderá não ser adequada às suas necessidades. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: this. 0. 3. my_txt. 2. my_txt. O exemplo a seguir demonstra como usar a propriedade TextField.fla.my_txt. my_txt. 100. porém. O próximo exemplo cria um campo de texto na linha de tempo principal e define suas dimensões iniciais como 100 pixels de largura por 21 pixels de altura.autoSize(). 21). my_txt. 2. 0. o campo de texto é redimensionado para 300 pixels de largura por 200 pixels de altura e é reposicionado no centro do Stage (Palco). Sobre campos de texto 413 . my_txt. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. em vez de no ambiente de criação._height) / 2. O Flash inclui a propriedade TextField. Posteriormente.my_txt. 160._height = 200.createTextField("my_txt".autoSize = "left".width .wordWrap = true._x = (Stage. que permite redimensionar automaticamente um campo de texto para acomodar o seu conteúdo._width) / 2._width = 300.multiline = true. my_txt. Para redimensionar um campo de texto com o ActionScript: 1.createTextField("my_txt". 10.border = true. quando você carrega conteúdo de um site externo e não sabe exatamente qual o volume de conteúdo que será retornado. 10. Para redimensionar automaticamente campos de texto com base no conteúdo: 1. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para ver os resultados no ambiente de criação. O exemplo anterior redimensionou um campo de texto criado dinamicamente para 300 pixels por 200 pixels durante a execução. 120). Crie um novo documento do Flash e salve-o como resizeText.height .Alterando as dimensões de um campo de texto durante a execução Você poderá precisar obter ou definir as dimensões de um campo de texto dinamicamente durante a execução. my_txt.

ative Hidden Characters (Caracteres ocultos) no menu popup do painel Actions e depois remova os caracteres de quebra de linha na seqüência de caracteres de texto longa. my_txt. no seu disco rígido. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para exibir o documento do Flash no ambiente de criação. use o código a seguir. Os arquivos de origem são chamados textfieldsA. Ut enim ad minim veniam.fla e encontram-se na pasta Samples._height > 160) { my_txt. é possível que encontre quebras de linha na seqüência de caracteres de texto longa.autoSize = "none". sunt in culpa qui officia deserunt mollit anim id est laborum.my_txt. No Macintosh.wordWrap como false. Caso encontre essa situação. esse método é adequado ao testar esse código. } Adicione alguma funcionalidade de rolagem. Excepteur sint occaecat cupidatat non proident. consectetur adipisicing elit. Nesse caso. if (my_txt. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. o código não será compilado. como uma barra de rolagem. ■ No Windows. Uma alternativa é mover o ponteiro do mouse sobre o texto. o campo será redimensionado horizontalmente para acomodar o texto. N OT A Se você colar esse código diretamente no painel Actions (Ações) de algumas versões da Ajuda do Flash. my_txt. a fim de permitir que os usuários visualizem o restante do texto.".fla e textfieldsB.wordWrap = true. Se você definir a propriedade my_txt. a fim de que a sua altura não exceda os limites do Stage (Palco). sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. O Flash redimensionará o campo de texto verticalmente para que todo o conteúdo possa ser exibido sem ser cortado pelos limites do campo. Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript._height = 160. 3. Para impor uma altura máxima no campo de texto dimensionado automaticamente. geralmente. ■ 414 Trabalhando com texto e seqüências de caracteres . navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\TextFields. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/TextFields.text = "Lorem ipsum dolor sit amet.

Cada método de carregamento e/ou envio de dados para/de um arquivo SWF oferece vantagens e desvantagens. mas também são as mais difíceis de se aprender. que pode carregar grandes blocos de texto ou uma série de variáveis codificadas em URL a partir de um arquivo de texto. Para obter informações sobre segurança. no seu disco rígido. Uma outra maneira fácil de carregar texto ou variáveis em um documento do Flash é usar a classe LoadVars. como demonstrado em “Usando FlashVars para carregar e exibir texto” na página 416 e “Usando LoadVars para carregar e exibir texto” na página 417. “Noções básicas de segurança.fla e formattedText. você pode observar que algumas formas de carregar texto em um arquivo SWF são mais simples do que outras. “Trabalhando com dados externos.” Para obter mais informações o carregamento de dados externos. se você publicar dados de sites externos. Talvez o método mais simples de passar texto para um documento do Flash seja usar a propriedade FlashVars. consulte o Capítulo 17. é possível que não haja uma opção para o formato dos dados que precisam ser carregados.Sobre o carregamento de texto e variáveis em campos de texto Você pode carregar texto em um documento do Flash de várias maneiras. Com base nos exemplos anteriores desta seção.macromedia. serviços da Web e Flash Remoting são as mais versáteis para carregar dados externos.fla e encontram-se na pasta Samples.” As seguintes seções mostram diversas maneiras de carregar texto e variáveis em documentos: ■ ■ ■ ■ “Usando FlashVars para carregar e exibir texto” na página 416 “Usando LoadVars para carregar e exibir texto” na página 417 “Carregando variáveis ao usar LoadVars” na página 418 “Carregando e exibindo texto de um documento XML” na página 419 Você pode localizar arquivos de origem de exemplo que demonstrem como trabalhar com arquivos de texto usando o ActionScript. As opções FlashVars e LoadVars são bem mais simples. consulte o Capítulo 16. Sobre o carregamento de texto e variáveis em campos de texto 415 . Os arquivos de origem são chamados loadText. que passa seqüências de texto curtas para um documento do Flash por meio das marcas object e embed contidas no código HTML usado para incorporar o SWF a uma página HTML. As opções XML. LoadVars. Entretanto.com/support/ flashremoting. consulte www. XML ou serviços da Web. incluindo (mas certamente não limitado a) FlashVars. Além disso. é preciso seguir restrições de segurança ao enviar e carregar dados. Para obter informações sobre o Flash Remoting. mas podem ser muito mais limitadas em termos dos tipos e dos formatos de dados que podem ser carregados.

navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/LoadText. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/FlashType.■ No Windows. Para usar FlashVars a fim de passar variáveis do documento HTML para o documento do Flash: 1. Salve o documento do Flash e selecione File (Arquivo) > Publish (Publicar) para gerar os arquivos HTML e SWF. Se um documento HTML não for publicado. my_txt. selecione File > Publish Settings (Configurações de publicação) e depois selecione a guia Formats (Formatos). O arquivo de origem de exemplo chamado flashtype.fla e encontra-se na pasta Samples do disco rígido: ■ No Windows. É possível testar o documento do Flash visualizando o documento HTML modificado no navegador da Web. No documento HTML. 21). 100. Certifique-se de selecionar HTML. 3. além de cache de bitmap. modifique o código contido na tag object conforme mostrado a seguir.html em um editor HTML ou de texto. N OT A Os documentos HTML são publicados. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\FlashType. No Macintosh. 10.createTextField("my_txt". 416 Trabalhando com texto e seqüências de caracteres . 5. Crie um novo documento do Flash e salve-o como flashvars. 10. ■ Usando FlashVars para carregar e exibir texto Embora o uso de FlashVars seja simples. O código a ser adicionado está em negrito. por padrão. no mesmo diretório que os arquivos FLA.text = _level0. Você modifica o código gerado em HTML e inclui as propriedades FlashVars nas marcas object e embed. ■ Também é possível localizar um arquivo de origem que carrega texto e aplica formatação sem serrilhado.fla. Abra o documento flashvars. No Macintosh. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\LoadText. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this.username. você precisará publicar seus arquivos SWF junto com documentos HTML. 2. 4. 10.

7.swf" FlashVars="username=Thomas" quality="high" bgcolor="#ffffff" width="550" height="400" name="flashvars" align="middle" allowScriptAccess="sameDomain" type="application/xshockwave-flash" pluginspage="http://www. Para usar LoadVars para preencher um campo de texto com texto externo: 1.com/pub/shockwave/cabs/flash/ swflash.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload. 2. 100). lorem_lv. 10.macromedia.0" width="550" height="400" id="flashvars" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="flashvars. 320.0.swf" /> <param name="FlashVars" value="username=Thomas" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="flashvars. “Noções básicas de segurança.” Usando LoadVars para carregar e exibir texto Você também pode usar a classe LoadVars para carregar conteúdo em um arquivo SWF. que carrega texto ou variáveis de um arquivo externo no mesmo servidor ou até mesmo conteúdo de outro servidor.cab#version=8.wordWrap = true.".text = "Unable to load external file. } else { my_txt. Salve as alterações no documento HTML.onData = function (src:String):Void { if (src != undefined) { my_txt. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this.autoSize = "left". Para obter informações sobre segurança.border = true. consulte o Capítulo 17. my_txt. O arquivo SWF exibe o nome “Thomas” no campo de texto criado dinamicamente no Stage (Palco). my_txt. var lorem_lv:LoadVars = new LoadVars(). Abra o documento HTML modificado em um navegador da Web. 10. my_txt. my_txt.com/go/ getflashplayer" /> </object> 6.multiline = true.macromedia. 10. O exemplo a seguir demonstra como criar dinamicamente um campo de texto e preenchê-lo com o conteúdo de um arquivo de texto remoto.fla. Sobre o carregamento de texto e variáveis em campos de texto 417 .0.createTextField("my_txt". Crie um novo documento do Flash e salve-o como loadvarsText.text = src.

. de maneira semelhante a quando você passa variáveis na seqüência de caracteres de consulta em um navegador da Web . Crie um novo documento do Flash e salve-o como loadvarsVariables. 10. Para obter informações sobre segurança.border = true..multiline = true. 3. lorem_lv.February. O exemplo a seguir demonstra como carregar um arquivo de texto remoto em um arquivo SWF e exibir suas variáveis.com/flash/lorem.txt"). } else { my_txt.load("http://www.autoSize = "left".txt) de um servidor Web remoto e exibe o seu conteúdo no campo de texto my_txt criado anteriormente. my_txt. my_txt.fla.text = "dayNames: " + lorem_lv.createTextField("my_txt". o Flash exibirá o conteúdo do arquivo remoto no campo de texto no Stage.dayNames + "\n\n".text += "monthNames: " + lorem_lv. my_txt. 418 Trabalhando com texto e seqüências de caracteres .text = "Unable to load external file. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. O segundo bloco de código define um novo objeto LoadVars que é usado para carregar um arquivo de texto (lorem.Monday. } } /* contents of params.” Carregando variáveis ao usar LoadVars A classe LoadVars também permite carregar variáveis em um formato codificado em URL. 100). 10. Após um pequeno intervalo. my_txt. “Noções básicas de segurança. 2... monthNames e dayNames. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this. O primeiro bloco de código do trecho anterior cria um novo campo de texto no Stage (Palco) e ativa os recursos de quebra automática de texto e várias linhas.&dayNames=Sunday. my_txt.".wordWrap = true.monthNames. var lorem_lv:LoadVars = new LoadVars()...onLoad = function (success:Boolean):Void { if (success) { my_txt.} } lorem_lv. consulte o Capítulo 17.txt: &monthNames=January.helpexamples. 320. 10. Para carregar variáveis de um arquivo de texto com LoadVars: 1.

firstChild. em parte porque esse é um padrão amplamente aceito para a organização e a análise de dados. consulte o Capítulo 17. reviews_xml.createTextField("my_txt".xml"). Crie um novo documento do Flash e salve-o como xmlReviews. 3.txt"). 10.com/flash/params.childNodes. monthNames e dayNames.autoSize = "left". Para obter informações sobre segurança. 10. O arquivo de texto externo contém duas variáveis.load("http://www.border = true. Como você está usando o método LoadVars. for (var i:Number = 0.fla. my_txt. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) no menu principal.wordWrap = true.text += childItems[i]. sendo que ambas contêm seqüências de caracteres. Para carregar texto no Flash a partir de um documento XML externo: 1. var reviews_xml:XML = new XML().onData(). reviews_xml. o XML é uma excelente opção para o envio e o recebimento de dados do Flash. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): this.onLoad() em vez de LoadVars.firstChild. “Noções básicas de segurança. my_txt. entretanto.helpexamples. } } reviews_xml. 10.length.onLoad = function (success:Boolean):Void { if (success) { var childItems:Array = reviews_xml. Portanto.". 2.text = "Unable to load external file.load("http://www.helpexamples.multiline = true.firstChild. i < childItems.nodeValue + "\n". i++) { my_txt. } } else { my_txt. ele é de aprendizado um pouco mais difícil do que a utilização de LoadVars e FlashVars para carregar dados e exibir texto. 320. 100).” Carregando e exibindo texto de um documento XML Os dados XML são uma forma popular de distribuir conteúdo na Internet. my_txt. my_txt.ignoreWhite = true.com/flash/xml/reviews. o Flash analisa as variáveis e cria variáveis na instância do objeto LoadVars. Sobre o carregamento de texto e variáveis em campos de texto 419 .*/ lorem_lv.

Depois que a data é totalmente carregada e analisada pelo Flash. consulte as seguintes seções: ■ ■ ■ ■ ■ “Incorporando caracteres” na página 421 “Incorporando fontes” na página 423 “Criando conjuntos de caracteres personalizados” na página 425 “Usando métodos TextField com fontes incorporadas” na página 427 “Sobre o compartilhamento de fontes” na página 429 O exemplo a seguir mostra como adicionar e remover caracteres e conjuntos de caracteres incorporados a um documento do Flash. Esse campo é usado para exibir várias partes do documento XML que será carregado posteriormente. 2. consulte o Capítulo 17. Salve o documento do Flash e selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. O Flash exibe a seguinte saída no campo de texto no Stage: Item 1 Item 2 . fontes compartilhadas. Para obter mais informações sobre fontes..fla. estilo e tamanho semelhantes. além de outras técnicas para se trabalhar com fontes no Flash 8. Não importa o que você crie com o Flash Basic 8 ou o Flash Professional 8: seus aplicativos provavelmente usarão texto com pelo menos uma ou duas fontes. Item 8 Para obter informações sobre segurança. Crie um novo documento do Flash e salve-o como embedding. Se você criar animações e não tiver certeza de que os usuários finais terão uma fonte específica instalada em seus sistemas. “Noções básicas de segurança. é importante ter noções básicas sobre a incorporação de fontes.” Usando fontes As fontes são conjuntos de caracteres com tipo de fonte. 420 Trabalhando com texto e seqüências de caracteres .O primeiro bloco de código do trecho anterior cria um novo campo de texto no Stage (Palco).. O segundo bloco de código cria um objeto XML que será usado para carregar o conteúdo XML. o manipulador de eventos XML. 3.onLoad() é chamado e exibe o conteúdo do pacote XML no campo de texto. Para adicionar e remover caracteres e conjuntos de caracteres: 1. fontes inteiras. Crie um campo de texto dinâmico no Stage (Palco) usando a ferramenta Text (Texto). As seções a seguir mostram como incorporar caracteres.

Ao usar a tecla Shift. pressione e mantenha pressionada a tecla Shift e clique em um novo conjunto de caracteres. A T E N ÇÃ O 6. Clique no botão Embed (Incorporar) para iniciar a caixa de diálogo Character Embedding (Incorporação de caracteres). 5. em vez de incluir contornos de fontes adicionais não utilizadas. Para selecionar vários conjuntos de caracteres não seqüenciais. selecione um conjunto de caracteres com o ponteiro do mouse.3. incorporando apenas os caracteres necessários. Usando fontes 421 . pressione e mantenha pressionada a tecla Control e desmarque o conjunto de caracteres ao clicar nele. Para selecionar um bloco de conjuntos de caracteres. clicando nele com o ponteiro do mouse. clique em Don’t Embed (Não incorporar). A opção Don’t Embed limpa quaisquer caracteres individuais ou conjuntos de caracteres previamente definidos. mantendo o botão do mouse pressionado. Ao clicar em Don’t Embed na caixa de diálogo Character Embedding (Incorporação de caracteres). Para remover um conjunto de caracteres específico adicionado anteriormente. Para selecionar vários conjuntos de caracteres. Para incorporar determinados caracteres em um campo de texto sem incorporar um conjunto de caracteres inteiro. poderá reduzir o tamanho do arquivo. pressione e mantenha pressionada a tecla Control enquanto seleciona os conjuntos de caracteres. use a caixa de diálogo Character Embedding (Incorporação de caracteres) para especificar quais caracteres específicos você deseja incorporar. Incorporando caracteres Se você estiver trabalhando com fontes incorporadas e souber exatamente de quais caracteres necessita. arrastar o mouse passando sobre vários conjuntos de caracteres. serão selecionados todos os conjuntos de caracteres que estiverem entre os dois conjuntos escolhidos. Para remover todos os caracteres selecionados e qualquer caractere especificado no campo de entrada de texto Include These Characters (Incluir esses caracteres). use a tecla Shift ou Control enquanto seleciona os itens com o ponteiro do mouse. Selecione um conjunto de caracteres específico para incorporar. Também é possível selecionar rapidamente vários conjuntos de caracteres ao selecionar um conjunto de caracteres com o mouse e. 4. serão removidos quaisquer caracteres e conjuntos de caracteres incorporados especificados que foram selecionados previamente sem sua confirmação.

ele pode determinar para você quais são os caracteres exclusivos do campo de texto especificado. Você verá a seqüência de caracteres “olá mund”. 2. Clique no botão Embed no inspetor Properties para abrir a caixa de diálogo Character Embedding novamente. A caixa de diálogo indica que serão incorporados 8 glifos no total para este campo de texto. 5. Com a ferramenta Text (Texto). 422 Trabalhando com texto e seqüências de caracteres . Com o campo de texto ainda selecionado no Stage. Clique em Auto Fill (Preenchimento automático) para preencher automaticamente a caixa O Flash poderá determinar que os caracteres sejam incorporados automaticamente apenas se o campo de texto contiver texto no Stage. 8. Não é preciso informar ao Flash quais caracteres devem ser incluídos. Defina o tipo de texto do campo como dinâmico no inspetor Property. clique em Embed (Incorporar) no inspetor Property (Propriedades) para abrir a caixa de diálogo Character Embedding. Com a ferramenta Text (Texto). defina o tipo de texto como dinâmico ou de entrada. 3. Digite a seqüência de caracteres olá mundo no campo de texto no Stage. especifique quais caracteres devem ser incorporados ao campo de texto. 11. no campo de texto. Clique em OK para aplicar as alterações e retornar ao documento. e não várias vezes. A caixa de diálogo Character Embedding permite definir quais conjuntos de caracteres serão incorporados no documento do Flash (bem como quantos glifos por conjunto de caracteres) e determinar caracteres específicos a serem incorporados. como o Flash só incorpora glifos exclusivos. Clique em OK. Se o campo de texto for preenchido usando o ActionScript. Apesar de a seqüência de caracteres “olá mundo” conter 9 caracteres. DICA 10. 9. crie um campo de texto no Stage (Palco) e. além de informar o número total de glifos que estão sendo incorporados para este campo de texto.Para incorporar caracteres específicos para uso em um campo de texto: 1. 6. 4. a letra 'o' é incorporada apenas uma vez. 7. Crie um novo documento do Flash e salve-o como charembed. crie um campo de texto novo no Stage (Palco). Digite a seqüência de caracteres olá mundo na caixa de texto Include these characters (Incluir esses caracteres). de texto Include These Characters (Incluir esses caracteres).fla.

Agora sua fonte é exibida na biblioteca do documento atual. b. Digite um nome para o símbolo de fonte na caixa de texto Name (Nome) da caixa de diálogo Font Symbol Properties (Propriedades do símbolo de fonte). Italic (Itálico) ou Alias (Serrilhado) para aplicar um estilo à fonte. Selecione texto Bold (Negrito). 4. Para campos de texto estáticos. Selecione New Font (Nova fonte) no menu pop-up da biblioteca (no canto superior direito do painel Library). 5. Selecione Window (Janela) > Library (Biblioteca) para abrir a biblioteca do arquivo FLA atual. Selecione o campo de texto e abra o inspetor Properties (Propriedades). Abra a biblioteca à qual deseja adicionar um símbolo de fonte. 3. 6. a. Digite o tamanho da fonte a ser incorporada e clique em OK para aplicar as alterações e retornar ao documento. 2. o Flash armazena todas as informações sobre as fontes no arquivo SWF para que elas sejam exibidas corretamente mesmo que não estejam instaladas no computador do usuário. 4. Depois de incorporar uma fonte à biblioteca.Incorporando fontes Quando você incorpora fontes. não será necessário incorporar a fonte. 3. Digite um texto no campo de texto. Selecione uma fonte no menu Font (Fonte) ou digite o nome de uma fonte na caixa de texto Font. Use a ferramenta Text (Texto) para criar um campo de texto no Stage (Palco). Para usar um símbolo de fonte incorporado no documento do Flash: 1. o Flash Player selecionará automaticamente outra fonte para ser usada em seu lugar. 2. Usando fontes 423 . NO T A Você só precisará incorporar uma fonte se estiver usando campos de texto dinâmico ou de entrada. Para incorporar um símbolo de fonte: 1. Defina o campo de texto para que tenha uma só linha. você poderá usá-la com um campo de texto no Stage (Palco). Sigas as etapas indicadas no procedimento que se encontra em “Incorporando fontes” na página 423 para incorporar uma fonte em sua biblioteca. Selecione o nome da fonte incorporada usando o menu suspenso Font (Fonte). Se você usar em seu arquivo FLA uma fonte que não esteja instalada no sistema do usuário e não incorporá-la no arquivo SWF.

Numerais [0-9]. Pontuação [!@#%. Você também pode definir as propriedades TextField. Para testar de forma adequada se a fonte está incorporada. Selecione Control > Test Movie novamente para exibir as alterações no ambiente de criação... Adicione 11. font_txt. Na caixa de diálogo Character Embedding. Para especificar quais caracteres devem ser incorporados. 8. b. pois essas propriedades funcionam somente com essas fontes (consulte as etapas a seguir). é exibido um asterisco (*). 7.] e conjuntos de caracteres de diversos idiomas. Se não souber exatamente quais caracteres serão necessários (por exemplo._rotation = 45. 5. Minúsculas [a-z]. 424 Trabalhando com texto e seqüências de caracteres . 9. se o texto for carregado de um arquivo externo ou de um serviço da Web). N OT A Cada conjunto de caracteres selecionado aumenta o tamanho final do arquivo SWF porque o Flash precisa armazenar todas as informações de fonte para cada conjunto usado._alpha ou TextField. Selecione o campo de texto no Stage e abra o inspetor Properties. a. A fonte incorporada é exibida no campo de texto no Stage. convém fazer o teste em um computador separado que não tenha a fonte incorporada instalada. Feche o arquivo SWF e retorne à ferramenta de criação. Digite font_txt na caixa de texto Instance Name (Nome da instância). como Maiúsculas [A-Z].Após o nome das fontes incorporadas. o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): 10. Clique no botão Embed (Incorporar) no inspetor Properties (Propriedades) para iniciar a caixa de diálogo Character Embedding (Incorporação de caracteres). você poderá selecionar conjuntos inteiros de caracteres para serem incorporados. digite-os na caixa de texto da caixa de diálogo ou clique em Auto Fill (Preenchimento automático) para preencher automaticamente o campo de texto com os caracteres exclusivos contidos no campo de texto no momento. é possível selecionar os caracteres individuais ou os conjuntos de caracteres a serem incorporados no campo de texto selecionado. Selecione os caracteres individuais ou os conjuntos de caracteres que deseja incorporar e clique em OK para aplicar as alterações e retornar ao documento. 6. Defina o tipo de texto do campo como Dynamic Text (Texto dinâmico). Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash no ambiente de criação._rotation para o campo de texto com fontes incorporadas.

a fim de suportar vários caracteres acentuados. ou um intervalo de caracteres.A fonte incorporada gira 45 graus no sentido horário. a propriedade TextField. talvez você não precise de numerais e de pontuação ou talvez precise apenas de caracteres maiúsculos. e que o nó id. visto no trecho anterior. Em vez de incorporar conjuntos de caracteres inteiros. Criando conjuntos de caracteres personalizados Além de usar os conjuntos de caracteres padrão do Flash. é possível criar um conjunto de caracteres personalizado que contenha apenas os caracteres de que precisa. e não o nome da fonte substituída. Para criar um conjunto de caracteres personalizado. se estiver usando uma fonte incorporada chamada Times e desejar colocar uma palavra em itálico. Por exemplo. A T E NÇ Ã O NO TA Se você não incorporar uma fonte no documento do Flash. Para incorporar apenas um caractere. Um intervalo pode ser um único caractere. Se você usa fontes incorporadas com uma variedade de estilos nos campos de texto. Antes de criar um conjunto de caracteres personalizado. e o Flash Player escolher automaticamente uma fonte substituta no computador do usuário. talvez seja necessário permitir que alguns campos incluam Latim Estendido. o texto não aparecerá no campo de texto. é preciso compreender a estrutura XML necessária. você também pode criar seus próprios conjuntos de caracteres e adicioná-los na caixa de diálogo Character Embedding (Incorporação de caracteres).Z] " id="1" > <range min="0x0020" max ="0x0020" /> <range min="0x0041" max ="0x005A" /> </glyphRange> Observe que o nó glyphRange inclui name e Uppercase [A.. Os seguintes nós XML definem o conjunto de caracteres Maiúsculas [A-Z]: <glyphRange name="Uppercase [A.font retornará a fonte original usada no FLA. Usando fontes 425 .Z]. localizado no diretório C:\Program Files\Macromedia\Flash 8\<idioma>\First Run\FontEmbedding\. A glyphRange pode ter quantos nós filhos range (intervalo) você precisar. Por exemplo. como 0x0020 (caractere de espaço). Desse modo. edite o arquivo UnicodeTable. certifique-se de incorporar os contornos de caracteres normais e itálicos. Esse arquivo define os conjuntos de caracteres padrão e os intervalos de caracteres e caracteres que eles contêm. deve incorporar o estilo que deseja usar. defina os valores min e max para o mesmo valor de caractere Unicode. e você ainda pode ver o texto porque ele está incorporado ao arquivo SWF.. Entretanto. Caso contrário. é possível reduzir ao máximo o tamanho do arquivo SWF porque não são armazenadas informações sobre fontes extras para os caracteres dos quais você não precisa.xml. como o segundo nó filho range.

3.9] " id="3" > <range min="0x0030" max ="0x0039" /> <range min="0x002E" max ="0x002E" /> </glyphRange> Esse intervalo de caracteres inclui os valores Unicode de 0x0030 (zero) até 0x0039 (9).0. 426 A TE N Ç Ã O A Macromedia recomenda que você não modifique os conjuntos de caracteres existentes instalados com o Flash e que. crie seus próprios conjuntos de caracteres personalizados com os caracteres e a pontuação necessários.). N OT A Lembre-se de salvar uma cópia backup desse documento. como Bloco de notas ou TextEdit. Antes da criação de um conjunto de caracteres personalizado. Role o documento XML até o final e adicione o seguinte código XML imediatamente antes do nó de fechamento </fontEmbeddingTable>: <glyphRange name="Uppercase and Numerals [A...org.9] " id="100" > <range min="0x0020" max ="0x0020" /> <range min="0x002E" max ="0x002E" /> <range min="0x0030" max ="0x0039" /> <range min="0x0041" max ="0x005A" /> </glyphRange> Salve as alterações em UnicodeTable. reinicie o aplicativo para poder usar o novo conjunto de caracteres. 2. Para criar e usar um conjunto de caracteres personalizado: 1. O melhor local para encontrar os valores Unicode é o site de Padrões Unicode na Web.Z. Abra o documento UnicodeTable.. www.. é preciso conhecer os caracteres e seus respectivos valores Unicode. para o caso de precisar voltar a usar o arquivo original que é instalado com o Flash. bem como 0x002E (. localizado em <diretório de instalação do Flash>\<idioma>\First Run\FontEmbedding\. deve-se fazer uma cópia backup para o caso de precisar voltar a usar a tabela Unicode original.Um outro exemplo de nó glyphRange XML é o nó Numerals [0. A T E NÇ Ã O Para adicionar conjuntos de caracteres personalizados. usando um editor XML ou de texto. em vez disso. Se o Flash estiver aberto.unicode. Trabalhando com texto e seqüências de caracteres .xml.9] : <glyphRange name="Numerals [0. que contém o gráfico Unicode Character Code (Código de caracteres Unicode) para dezenas de idiomas. é preciso editar um arquivo XML na pasta de instalação do Flash.xml. Antes de editar esse arquivo.

fla. DICA 7. Maiúsculas e Numerais [A-Z.09]. você pode controlar a espessura de um campo de texto usando o ActionScript como demonstrado no exemplo a seguir. inclusive os conjuntos de caracteres personalizados. 6. Crie um novo documento do Flash e salve-o como textfieldThickness. bem como o conjunto de caracteres padrão Maiúsculas [A-Z] ou Numerais [0-9]. e o Flash não inclui caracteres duplicados. Adicione uma nova instância TextField no Stage (Palco) usando a ferramenta Text (Texto). Por exemplo. movendo os pacotes <glyphRange> no arquivo XML. A posição de um conjunto de caracteres na caixa de diálogo Character Embedding é determinada pela sua localização no documento XML. Isso ocorre porque todos os caracteres maiúsculos são incluídos no conjunto de caracteres personalizado. que inclui 52 glifos. Maiúsculas e Numerais [A-Z.0-9] (38 glifos). Se você selecionar o conjunto de caracteres personalizado. Isso ocorre porque dois caracteres coincidentes — o espaço e o ponto — já foram incluídos no conjunto de caracteres personalizado. Selecione quaisquer outros conjuntos de caracteres e clique em OK. em vez de 90. É possível reordenar os conjuntos de caracteres. bem como o conjunto de caracteres personalizado. Abra o painel Library (Biblioteca) e selecione New Font (Nova fonte) no menu pop-up (no canto superior direito do painel Library). Para definir a espessura de um campo de texto com o ActionScript: 1. Se você selecionar o conjunto de caracteres Pontuação. Role a caixa de diálogo Character Embedding até o final e selecione o novo conjunto de caracteres personalizados. que inclui 38 glifos. Usando métodos TextField com fontes incorporadas Os métodos da classe TextField oferecem uma funcionalidade útil para os seus aplicativos.4. 2. observe que o número de glifos incorporados não muda. o Flash só armazenará informações de 88 glifos. 8. o que mantém o tamanho do arquivo o menor possível. 5. Usando fontes 427 . Defina o tipo Text da instância TextField como Dynamic (Dinâmico) no inspetor Property (Propriedades) e depois clique em Embed Character Options (Opções de incorporação de caracteres) para abrir a caixa de diálogo Character Embedding (Incorporação de caracteres). Abra ou reinicie o Flash e depois crie um novo documento do Flash.

b. 0. Insira o nome de fonte Times (embedded) Clique em OK. this. // 2 var style_fmt:TextFormat = new TextFormat(). sunt in culpa qui officia deserunt mollit anim id est laborum. e. 20. 22). Excepteur sint occaecat cupidatat non proident. lorem_txt. Selecione a fonte Times New Roman no menu suspenso Font. a. consectetur adipisicing elit. Na biblioteca.size = 30. Verifique se desmarcou as opções Bold (Negrito) e Italic (Itálico).autoSize = "left".antiAliasType = "advanced". 0). O Flash abrirá a caixa de diálogo Linkage Properties (Propriedades de vinculação). Ut enim ad minim veniam.text = "Lorem ipsum dolor sit amet.A caixa de diálogo Font Symbol Properties (Propriedades do símbolo de fonte) é aberta.width. 20. se houver um campo de texto selecionado no Stage (Palco).embedFonts = true. lorem_txt. lorem_txt. 0. clique com o botão direito do mouse no símbolo de fonte e selecione Linkage (Vinculação) no menu de contexto. Essa caixa permite selecionar uma fonte para ser incorporada no arquivo SWF (incluindo um estilo e um tamanho de fonte). Selecione as opções Export for ActionScript (Exportar para ActionScript) e Export in first frame (Exportar no primeiro quadro) e clique em OK. lorem_txt. Stage. 0. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.width.". style_fmt.wordWrap = true. sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. lorem_txt. 428 Trabalhando com texto e seqüências de caracteres . 3.setTextFormat(style_fmt).createTextField("lorem_txt". 10. lorem_txt. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo): // 1 this.createTextField("thickness_txt". 5. 4. Você também poderá atribuir um nome de fonte exibido na biblioteca do documento e no menu suspenso Font (Fonte) no inspetor Properties (Propriedades). Stage. c. style_fmt. Defina o tamanho como 30 pixels.font = "Times (embedded)". d.

thickness_txt. Usando fontes 429 . Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. 7. 6. é possível vincular à fonte e usá-la em um aplicativo Flash sem que ela seja armazenada no arquivo FLA. Ao mover o ponteiro do mouse para o lado esquerdo do Stage. mouseListener.text = "TextField.thickness é alterada para um valor entre -200 e +200.200). Ao mover o ponteiro do mouse para o lado direito do Stage. Mouse. dependendo do valor atual de _xmouse.addListener(mouseListener).thickness = Math. O primeiro bloco de código cria dois campos de texto. e posiciona-os no Stage. crie um símbolo de fonte no painel Library (Biblioteca) e atribua os seguintes atributos ao símbolo de fonte: ■ ■ Uma seqüência de caracteres de identificação O URL onde o documento que contém o símbolo de fonte será postado Dessa maneira.width) . Sobre o compartilhamento de fontes Para usar uma fonte como um item de uma biblioteca compartilhada.thickness.// 3 var mouseListener:Object = new Object().thickness = " + lorem_txt. a propriedade TextField. lorem_txt. a espessura da fonte diminui.onMouseMove = function():Void { // Os valores de TextField.thickness podem variar de -200 a +200. thickness_txt e lorem_txt. O campo de texto lorem_txt define sua propriedade embedFonts como true e preenche o campo com um bloco de texto. onMouseMove. O terceiro e último bloco de código define e atribui um ouvinte de mouse para o evento Quando o ponteiro do mouse é movido horizontalmente no Stage. Salve as alterações no arquivo FLA. O segundo bloco de código define um formato de texto com o tipo de fonte Times New Roman.round(_xmouse * (400 / Stage. a espessura da fonte aumenta. }. define o tamanho da fonte como 30 pixels e aplica o formato de texto ao campo lorem_txt.

os quais só estão disponíveis para publicação de arquivos SWF no Flash Player 8.Você pode aplicar esse recurso a cada campo de texto do aplicativo. como quando se aplica eliminação de serrilhado avançada a campos de texto. dinâmicos e de entrada. dinâmico e estático. O Flash 8 oferece cinco métodos de renderização de fontes. 430 Trabalhando com texto e seqüências de caracteres . O recurso de eliminação de serrilhado poderá ser usado com texto de entrada. O recurso de eliminação de serrilhado permite suavizar o texto de modo que as bordas dos caracteres exibidos na tela pareçam menos dentadas. em vez de aplicá-lo a caracteres individuais. O FlashType utiliza tecnologia avançada de renderização para ajudar a tornar o texto mais legível e nítido com tamanhos de fontes pequenos ou médios. Os recursos aprimorados permitem que o texto incorporado apareça no mesmo nível de qualidade que o texto de dispositivo e que as fontes tenham a mesma aparência em plataformas diferentes. A tecnologia avançada de renderização de fontes usada no Flash Player 8 se chama FlashType. somente a opção Anti-Alias for Animation (Sem serrilhado para animação) estará disponível para uso com os campos de texto. alinhando contornos de texto ao longo dos limites dos pixels. O Flash Basic 8 e o Flash Professional 8 contêm um recurso bem avançado de rasterização e renderização de fontes. para se trabalhar com fontes sem serrilhado. esse recurso só poderá ser usado com texto estático. e é muito eficiente para a renderização mais nítida de fontes de tamanho pequeno. Se o usuário tiver uma versão anterior do Flash Player. A tecnologia do FlashType permite renderizar tipos de fontes com saída de alta qualidade em tamanhos pequenos e com um controle maior. O FlashType é uma tecnologia de renderização de fontes de alta qualidade que pode ser ativada com o uso da ferramenta de criação do Flash 8 ou do ActionScript. ou seja. como ele é renderizado (ou desenhado) durante a execução. chamado FlashType. É possível aplicar o FlashType à renderização de fontes incorporadas para campos de texto estáticos. se o usuário tiver o Flash Player 7 ou versão posterior. Essa tecnologia será analisada com mais detalhes mais adiante nesta seção. Se estiver publicando arquivos para uso com o Flash Player 7 ou versões anteriores. A opção Anti-Alias (Sem serrilhado) torna os caracteres mais legíveis. isso poderá ser útil principalmente para exibir texto em tamanho pequeno.Sobre a renderização de fontes e texto sem serrilhado A renderização de fontes no Flash controla a maneira como o texto aparece em um arquivo SWF. Opções avançadas de eliminação de serrilhado estão disponíveis para o Flash Player 8.

sem a eliminação de serrilhado). é preciso selecionar campos de texto individuais e alterar manualmente as configurações de eliminação de serrilhado para tirar proveito da tecnologia de renderização do FlashType. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/FlashType. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\FlashType. Para obter mais informações sobre essas opções. Sobre a renderização de fontes e texto sem serrilhado 431 . que permite definir um valor personalizado para espessura e definição. encontra-se na pasta Samples do disco rígido.fla. Um arquivo de exemplo no seu disco rígido mostra como aplicar e manipular texto sem serrilhado em um aplicativo.Os métodos de renderização de fontes disponíveis para o Flash Player 8 são Device Fonts (Fontes de dispositivo). N OT A ■ ■ ■ ■ ■ ■ ■ Quando você abre arquivos FLA no Flash 8. o Flash Player desativa a opção avançada de eliminação de serrilhado para melhorar a aparência do texto à medida que ele se move. Use a tecnologia de renderização do FlashType para criar um pequeno texto que seja extremamente legível. a opção de eliminação de serrilhado é novamente ativada. No Windows. seu texto não é atualizado automaticamente para a opção Anti-Alias for Readability (Sem serrilhado para legibilidade). consulte “Opções de renderização de fontes do Flash” na página 432. flashtype. Quando a animação termina. Anti-Alias for Readability (Sem serrilhado para legibilidade) e Custom Anti-Alias (Eliminação de serrilhado personalizada). No Macintosh. negrito ou itálico) com tamanho de até 255 pontos Exportação de arquivos para a maioria dos formatos (como JPEG ou GIF). Flash Player 7 ou versões anteriores Texto inclinado ou invertido Impressão Exportação de arquivos para o formato PNG. Bitmap Text (no anti-alias) (Texto em bitmap . Esse exemplo também demonstra como os campos de texto podem ser rolados de forma rápida e suave com a utilização da propriedade cacheAsBitmap. N OT A Os recursos de eliminação de serrilhado avançada e personalizada não oferecem suporte a: Quando o texto é animado. Anti-Alias for Animation (Sem serrilhado para animação). O arquivo de origem de exemplo. Os recursos de eliminação de serrilhado avançada e personalizada oferecem suporte a: Texto dimensionado e girado Todas as fontes (simples.

Opções de renderização de fontes do Flash
Há cinco opções de renderização de fontes disponíveis no Flash 8. Para escolher uma opção, selecione o campo de texto e abra o inspetor Properties (Propriedades). Selecione uma opção no menu pop-up de métodos de renderização de fontes.
Device Fonts (Fontes de dispositivo) Produz um tamanho de arquivo SWF menor. A opção renderiza as fontes instaladas no computador do usuário final. Bitmap Text (no anti-alias) (Texto em bitmap – sem a eliminação de serrilhado) Produz bordas de texto com ângulo agudo, sem usar o recurso de eliminação de serrilhado. Esta opção produz um tamanho de arquivo SWF maior, pois os contornos das fontes são incluídos nesse arquivo. Anti-alias for Animation (Sem serrilhado para animação)

Produz texto sem serrilhado que é animado gradativamente. O texto também é animado mais rápido em algumas situações, pois os recursos de alinhamento e de eliminação de serrilhado não são aplicados durante a animação. Não se observa aumento de desempenho quando são usadas fontes grandes com muitas letras ou fontes dimensionadas. Esta opção produz um tamanho de arquivo SWF maior, pois os contornos das fontes são incluídos nesse arquivo.

Anti-Alias for Readability (Sem serrilhado para legibilidade) Usa o mecanismo avançado de eliminação de serrilhado, bem como oferece texto com qualidade e legibilidade máximas. Ela também produz o maior tamanho de arquivo SWF, pois os contornos das fontes e informações especiais sobre o recurso de eliminação de serrilhado são incluídos no arquivo. Custom Anti-alias

(Eliminação de serrilhado personalizada) É igual à Anti-Alias for Readability, mas permite manipular visualmente os parâmetros de eliminação de serrilhado para produzir uma aparência específica. Ela é útil quando se deseja produzir a melhor aparência possível para fontes novas ou não convencionais. Para obter um exemplo de como usar a opção sem serrilhado com o ActionScript, consulte “Definindo a opção sem serrilhado com o ActionScript” na página 433.

432

Trabalhando com texto e seqüências de caracteres

Sobre a modulação de traço contínua
A tecnologia de renderização de fontes do FlashType explora as propriedades inerentes dos campos de distância para fornecer CSM (Continuous Stroke Modulation, Modulação de traço contínua); por exemplo, a modulação contínua da espessura do traço e da definição da borda do texto. A CSM utiliza dois parâmetros de renderização para controlar o mapeamento de distâncias ADF (Adaptively Sampled Distance Field, Campo de distância de exemplo de forma adaptável) para valores de densidade de glifos. Os valores ideais para esses parâmetros são extremamente subjetivos; podem depender das preferências do usuário, condições de luminosidade, propriedades de exibição, tipo da fonte, cores de primeiro plano e de fundo e tamanho do ponto. A função que mapeia as distâncias ADF para valores de densidade possui um limite externo, abaixo do qual os valores são definidos com 0, e um limite interno, acima do qual os valores são definidos com um valor de densidade máxima, como 255.

Definindo a opção sem serrilhado com o ActionScript
O Flash 8 oferece dois tipos de eliminação de serrilhado: normal e avançada. A eliminação de serrilhado avançada encontra-se disponível apenas no Flash Player 8 e versões posteriores, e só poderá ser usada se você incorporar a fonte na biblioteca e definir a propriedade embedFonts do campo de texto como true. No Flash Player 8, a configuração padrão para campos de texto criados com o ActionScript é normal. Para definir valores para a propriedade TextField.antiAliasType, use os seguintes valores de seqüência de caracteres:
normal

Aplica a eliminação de serrilhado de texto regular. Corresponde ao tipo de eliminação de serrilhado que o Flash Player usava na versão 7 ou em versões anteriores.

avançado Aplica eliminação de serrilhado avançada para melhorar a legibilidade do texto, que se encontra disponível no Flash Player 8. A eliminação de serrilhado avançada permite que os tipos de fontes sejam renderizados com alta qualidade e em tamanhos menores. Apresenta melhor utilização com aplicativos que têm muito texto de tamanho pequeno.
DICA

A Macromedia não recomenda a eliminação de serrilhado avançada para fontes com mais de 48 pontos.

Para usar o ActionScript com o intuito de definir texto sem serrilhado, veja o exemplo a seguir.
Para usar eliminação de serrilhado avançada:
1. 2.

Crie um novo documento do Flash e salve-o como antialiastype.fla. Crie dois clipes de filme no Stage (Palco) e atribua a eles os nomes de instâncias normal_mc e avançado_mc.

Sobre a renderização de fontes e texto sem serrilhado

433

Use esses clipes de filme para alternar entre os dois tipos de eliminação de serrilhado: normal e avançada.
3.

Abra o painel Library (Biblioteca) e selecione New Font (Nova fonte) no menu pop-up no canto superior direito do painel Library. A caixa de diálogo Font Symbol Properties (Propriedades do símbolo de fonte) é aberta e permite selecionar uma fonte para ser incorporada no arquivo SWF (incluindo um estilo e um tamanho de fonte). Você também poderá atribuir um nome de fonte exibido na biblioteca do documento e no menu suspenso Font (Fonte) no inspetor Properties (Propriedades), se houver um campo de texto selecionado no Stage (Palco).
a. b. c. d. e.

Selecione a fonte Arial no menu suspenso Font. Certifique-se de que as opções Bold (Negrito) e Italic (Itálico) não estão selecionadas. Defina o tamanho como 10 pixels. Insira o nome de fonte Arial-10 (embedded). Clique em OK.

4.

Na biblioteca, clique com o botão direito do mouse no símbolo de fonte e selecione Linkage (Vinculação) no menu de contexto. A caixa de diálogo Linkage Properties é exibida. Selecione as opções Export for ActionScript (Exportar para ActionScript) e Export in First Frame (Exportar no primeiro quadro), digite o identificador de vinculação Arial-10 e clique em OK. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal:
var text_fmt:TextFormat = new TextFormat(); text_fmt.font = "Arial-10"; text_fmt.size = 10; this.createTextField("my_txt", 10, 20, 20, 320, 240); my_txt.autoSize = "left"; my_txt.embedFonts = true; my_txt.selectable = false; my_txt.setNewTextFormat(text_fmt); my_txt.multiline = true; my_txt.wordWrap = true; var lorem_lv:LoadVars = new LoadVars(); lorem_lv.onData = function(src:String) { if (src != undefined) { my_txt.text = src; } else { my_txt.text = "unable to load text file."; }

5.

6.

434

Trabalhando com texto e seqüências de caracteres

}; lorem_lv.load("http://www.helpexamples.com/flash/lorem.txt"); normal_mc.onRelease = function() { my_txt.antiAliasType = "normal"; }; advanced_mc.onRelease = function() { my_txt.antiAliasType = "advanced"; };

O código anterior é dividido em quatro áreas-chave. O primeiro bloco de código cria um novo objeto TextFormat, que especifica uma fonte e um tamanho de fonte a serem usados em um campo de texto que será criado em breve. A fonte especificada, Arial-10, é o identificador de vinculação do símbolo de fonte incorporado em uma etapa anterior. O segundo bloco de código cria um novo campo de texto com o nome de instância my_txt. A fim de que a fonte seja incorporada de forma adequada, defina embedFonts como true para a instância de campo de texto. O código também define a formatação de texto do novo campo de texto do objeto TextFormat criado anteriormente. O terceiro bloco de código define uma instância LoadVars que preenche o campo de texto no Stage (Palco) com o conteúdo de um arquivo de texto externo. Depois que o documento está totalmente carregado (mas não analisado), o conteúdo inteiro do arquivo é copiado para a propriedade my_txt.text, a fim de ser exibido no Stage. O quarto e último bloco de código define manipuladores de eventos onRelease para os clipes de filme normal_mc e avançado_mc. Quando o usuário clica e libera uma dessas opções, o tipo de eliminação de serrilhado do campo de texto no Stage muda.
7. 8.

Salve as alterações no arquivo FLA. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Clique no clipe de filme avançado_mc no Stage. Quando você clica no clipe de filme, o tipo de eliminação de serrilhado alterna de normal (padrão) para avançado. Quando se trata de campos de texto com um tamanho de fonte menor, a definição da eliminação de serrilhado como avançada pode melhorar consideravelmente a legibilidade do texto.
DICA

9.

A eliminação de serrilhado avançada permite que os tipos de fontes sejam renderizados com alta qualidade e em tamanhos menores. Sua utilização é melhor com aplicativos que têm muito texto de tamanho pequeno. A Macromedia não recomenda a eliminação de serrilhado avançada para fontes com mais de 48 pontos.

Sobre a renderização de fontes e texto sem serrilhado

435

Para obter mais informações sobre a formatação de texto sem serrilhado, consulte “Usando um tipo de ajuste à grade” na página 442 e “Sobre a formatação de texto sem serrilhado” na página 440. Um arquivo de exemplo no seu disco rígido mostra como aplicar e manipular texto sem serrilhado em um aplicativo. Use a tecnologia de renderização do FlashType para criar um pequeno texto que seja extremamente legível. Esse exemplo também demonstra como os campos de texto podem ser rolados de forma rápida e suave com a utilização da propriedade cacheAsBitmap. O arquivo de origem de exemplo, flashtype.fla, encontra-se na pasta Samples do disco rígido. No Windows, navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\FlashType. No Macintosh, navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/FlashType.

Definindo tabelas para fontes
Se você criar fontes para usar com arquivos SWF ou para distribuição a desenvolvedores de Flash, talvez seja necessário definir tabelas para fontes, a fim de controlar como elas são renderizadas no Stage (Palco). A eliminação de serrilhado avançada usa ADFs (Adaptively Sampled Distance Field, Campos de distância de exemplo de forma adaptável) para representar os contornos que determinam um glifo (um caractere). O Flash utiliza dois valores:
■ ■

Um valor de limite externo, abaixo do qual as densidades são definidas como 0. Um valor de limite interno, acima do qual as densidades são definidas com um valor de densidade máxima, como 255.

Entre esses dois valores-limite, a função de mapeamento é uma curva linear variando de 0 no limite externo até a densidade máxima no limite interno. O ajuste dos valores-limite externo e interno afeta a espessura do traço e a definição da borda. O espaçamento entre esses dois parâmetros é comparável ao dobro do raio do filtro dos métodos clássicos de eliminação de serrilhado; um espaçamento menor proporciona uma borda mais nítida, enquanto que um espaçamento maior fornece uma borda mais suave e filtrada. Quando o espaçamento é igual a 0, a imagem da densidade resultante é um bitmap de dois níveis. Quando o espaçamento é muito largo, a imagem da densidade resultante tem uma borda semelhante a uma aquarela. Geralmente, os usuários preferem bordas bem definidas e com grande contraste em tamanhos de pontos pequenos e bordas mais suaves para texto animado e pontos de tamanho maior.

436

Trabalhando com texto e seqüências de caracteres

O limite externo geralmente tem um valor negativo, o limite interno tem um valor positivo, e seu ponto médio fica próximo ao 0. O ajuste desses parâmetros para deslocar o ponto médio para o infinito negativo aumenta a espessura do traço; o deslocamento do ponto médio para o infinito positivo diminui a espessura do traço.
N OT A

O limite externo deve ser sempre inferior ou igual ao limite interno.

O Flash Player inclui configurações avançadas de eliminação de serrilhado para dez fontes básicas. Para essas fontes, são fornecidas configurações avançadas de eliminação de serrilhado apenas para os tamanhos de fonte de 6 a 20. Nessas fontes, os tamanhos abaixo de 6 utilizam as configurações do tamanho 6, e os tamanhos acima de 20 utilizam as configurações do 20. As demais fontes são mapeadas para os dados das fontes fornecidas. O método setAdvancedAntialiasingTable() permite definir dados de eliminação de serrilhado personalizada para outras fontes e tamanhos de fontes ou substituir as configurações padrão para as fontes fornecidas. Para obter mais informações sobre a criação de uma tabela de eliminação de serrilhado, veja o seguinte exemplo:
Para criar uma tabela de eliminação de serrilhado avançada para uma fonte incorporada:
1. 2. 3.

Crie um novo documento do Flash e salve-o como advancedaatable.fla. Selecione New Font (Nova fonte) no menu pop-up do painel Library (Biblioteca). Selecione Arial no menu pop-up Font (Fonte) e depois defina o tamanho da fonte com 32 pontos. Selecione as opções Bold (Negrito) e Italics (Itálico). Digite o nome da fonte Arial (embedded) na caixa de texto Name (Nome) e clique em OK. Clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) no símbolo de fonte na biblioteca e selecione Linkage (Vinculação). Na caixa de diálogo Linkage Properties (Propriedades de vinculação):
a. b.

4. 5. 6.

7.

Digite Arial-embedded na caixa de texto Identifier (Identificador). Selecione Export for ActionScript (Exportar para ActionScript) e Export in First Frame (Exportar no primeiro quadro). Clique em OK.

c. 8.

Selecione o Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal e adicione o seguinte ActionScript ao painel Actions (Ações):
import flash.text.TextRenderer; var arialTable:Array = new Array();

Sobre a renderização de fontes e texto sem serrilhado

437

arialTable.push({fontSize:16.0, insideCutoff:0.516, outsideCutoff:0.416}); arialTable.push({fontSize:32.0, insideCutoff:2.8, outsideCutoff:-2.8}); TextRenderer.setAdvancedAntialiasingTable("Arial", "bolditalic", "dark", arialTable); var my_fmt:TextFormat = new TextFormat(); my_fmt.align = "justify"; my_fmt.font = "Arial-embedded"; my_fmt.size = 32; this.createTextField("my_txt", 999, 10, 10, Stage.width-20, Stage.height-20); my_txt.antiAliasType = "advanced"; my_txt.embedFonts = true; my_txt.multiline = true; my_txt.setNewTextFormat(my_fmt); my_txt.sharpness = 0; my_txt.thickness = 0; my_txt.wordWrap = true; var lorem_lv:LoadVars = new LoadVars(); lorem_lv.onData = function(src:String):Void { if (src != undefined) { my_txt.text = src + "\n\n" + src; } else { trace("error downloading text file"); } }; lorem_lv.load("http://www.helpexamples.com/flash/lorem.txt");

O código anterior é dividido em quatro seções. A primeira seção de código importa a classe TextRenderer e define uma nova tabela de eliminação de serrilhado para dois tamanhos diferentes da fonte Arial. A segunda seção de código define um novo objeto TextFormat, utilizado para aplicar formatação de texto ao campo de texto (criado na próxima seção de código). A próxima seção de código cria um novo campo de texto com um nome de instância my_txt, ativa a eliminação de serrilhado avançada, aplica o objeto de formato de texto (criado anteriormente) e ativa os recursos de quebra automática de texto e várias linhas. O último bloco de código define um objeto LoadVars utilizado para carregar texto de um arquivo de texto externo e preencher o campo de texto no Stage (Palco).
9.

Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash.

438

Trabalhando com texto e seqüências de caracteres

Depois que o texto é carregado do servidor remoto, o Flash exibe algum texto no campo de texto, e é possível ver as propriedades da tabela de eliminação de serrilhada avançada aplicadas ao campo de texto. A fonte incorporada no Stage deve aparecer como se tivesse um leve efeito de embaçamento, por causa dos atuais valores insideCutoff e outsideCutoff.

Sobre o layout e a formatação de texto
Você pode controlar o layout e a formatação do texto com o ActionScript. A classe TextFormat fornece um grande controle sobre o modo como o texto aparece durante a execução, além de outras formas de formatação como folhas de estilos (consulte “Formatando texto com estilos CSS” na página 447) e texto HTML (consulte “Usando texto em formato HTML” na página 461). Também é possível controlar o modo como os caracteres se ajustam à grade, usando o ActionScript ao utilizar texto sem serrilhado em um arquivo SWF. Isso ajuda a controlar a aparência dos caracteres durante a execução. Para obter um exemplo de como usar um tipo de ajuste à grade nos aplicativos, consulte “Usando um tipo de ajuste à grade” na página 442. Para obter informações gerais sobre campos de texto, consulte “Sobre campos de texto” na página 405. Para obter informações sobre formatação de texto, consulte “Sobre a formatação de texto sem serrilhado” na página 440. Para obter mais informações sobre a classe TextFormat, consulte “Usando a classe TextFormat” na página 444 e %{TextFormat}% em ActionScript 2.0 Language Reference. Para obter mais informações sobre layout e formatação de texto usando a classe TextFormat, consulte as seguintes seções:
■ ■ ■ ■

“Sobre a formatação de texto sem serrilhado” na página 440 “Usando um tipo de ajuste à grade” na página 442 “Usando a classe TextFormat” na página 444 “Propriedades padrão dos novos campos de texto” na página 446

Sobre o layout e a formatação de texto

439

Sobre a formatação de texto sem serrilhado
O Flash 8 introduz duas novas propriedades que podem ser usadas ao formatar campos de texto com a eliminação de serrilhado avançada: sharpness (definição) e thickness (espessura). A definição refere-se à quantidade de serrilhado aplicado à instância do campo de texto. Uma definição com valor alto faz com que a borda da fonte incorporada pareça dentada e nítida. Uma definição com um valor mais baixo faz com que a fonte pareça mais suave, mais embaçada. A definição da espessura de uma fonte é semelhante à ativação da formatação de negrito para um campo de texto. Quanto maior a espessura, mais forte aparecerá o negrito da fonte. O exemplo a seguir carrega um arquivo de texto de forma dinâmica e exibe texto no Stage (Palco). Ao mover o ponteiro do mouse ao longo do eixo x, a definição é estabelecida entre 400 e 400. Ao mover o ponteiro do mouse ao longo do eixo y, a espessura é definida entre 200 e 200.
Para modificar a definição e a espessura de um campo de texto:
1. 2.

Crie um novo documento do Flash e salve-o como sharpness.fla. Selecione New Font (Nova fonte) no menu pop-up no canto superior direito do painel Library (Biblioteca). Selecione Arial no menu suspenso Font (Fonte) e depois defina o tamanho da fonte com 24 pontos. Digite o nome da fonte Arial-24 (embedded) na caixa de texto Name (Nome) e clique em OK. Clique com o botão direito do mouse no símbolo de fonte na biblioteca e selecione Linkage (Vinculação) para abrir a caixa de diálogo Linkage Properties (Propriedades de vinculação). Defina o identificador de vinculação com Arial-24, marque as caixas de seleção Export for ActionScript (Exportar para ActionScript) e Export in First Frame (Exportar no primeiro quadro) e clique em OK. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal:
var my_fmt:TextFormat = new TextFormat(); my_fmt.size = 24; my_fmt.font = "Arial-24"; this.createTextField("lorem_txt", 10, 0, 20, Stage.width, (Stage.height - 20)); lorem_txt.setNewTextFormat(my_fmt); lorem_txt.text = "loading..."; lorem_txt.wordWrap = true; lorem_txt.autoSize = "left";

3.

4.

5.

6.

7.

440

Trabalhando com texto e seqüências de caracteres

lorem_txt.embedFonts = true; lorem_txt.antiAliasType = "advanced"; this.createTextField("debug_txt", 100, 0, 0, Stage.width, 20); debug_txt.autoSize = "left"; debug_txt.background = 0xFFFFFF; var lorem_lv:LoadVars = new LoadVars(); lorem_lv.onData = function(src:String) { lorem_txt.text = src; } lorem_lv.load("http://www.helpexamples.com/flash/lorem.txt"); var mouseListener:Object = new Object(); mouseListener.onMouseMove = function():Void { lorem_txt.sharpness = (_xmouse * (800 / Stage.width)) - 400; lorem_txt.thickness = (_ymouse * (400 / Stage.height)) - 200; debug_txt.text = "sharpness=" + Math.round(lorem_txt.sharpness) + ", thickness=" + Math.round(lorem_txt.thickness); }; Mouse.addListener(mouseListener);

Esse código do ActionScript pode ser dividido em cinco seções básicas. A primeira seção de código define uma nova instância TextFormat que será aplicada a um campo de texto criado de forma dinâmica. As duas seções a seguir criam dois novos campos de texto no Stage (Palco). O primeiro campo de texto, lorem_txt, aplica o objeto de formatação de texto personalizado criado anteriormente, ativa fontes incorporadas e define a propriedade antiAliasType como true. O segundo campo de texto, debug_txt,exibe os valores atuais de definição e espessura do campo de texto lorem_txt. A quarta seção de código cria um objeto LoadVars, responsável pelo carregamento do arquivo de texto externo e preenchimento do campo de texto lorem_txt. A quinta e última seção de código define um ouvinte de mouse, chamado sempre que o ponteiro do mouse se movimenta pelo Stage. Os valores atuais de definição e espessura são calculados com base na posição atual do ponteiro do mouse no Stage. As propriedades definição e espessura são definidas para o campo de texto lorem_txt, e os valores atuais são exibidos no campo de texto debug_txt.
8.

Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. Mova o ponteiro do mouse ao longo do eixo x para alterar a definição do campo de texto. Mova o ponteiro do mouse da esquerda para a direita, a fim de que a definição aumente e pareça mais dentada. Mova o ponteiro do mouse ao longo do eixo y, a fim de que a espessura do campo de texto seja alterada.

Sobre o layout e a formatação de texto

441

Para obter mais informações sobre o uso de texto sem serrilhado em um arquivo SWF, consulte “Definindo a opção sem serrilhado com o ActionScript” na página 433, “Opções de renderização de fontes do Flash” na página 432 e “Usando um tipo de ajuste à grade” na página 442. Um arquivo de exemplo no seu disco rígido mostra como aplicar e manipular texto sem serrilhado em um aplicativo. Use a tecnologia de renderização do FlashType para criar um pequeno texto que seja extremamente legível. Esse exemplo também demonstra como os campos de texto podem ser rolados de forma rápida e suave com a utilização da propriedade cacheAsBitmap. O arquivo de origem de exemplo, flashtype.fla, encontra-se na pasta Samples do disco rígido. No Windows, navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\FlashType. No Macintosh, navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/FlashType.

Usando um tipo de ajuste à grade
Quando você utiliza eliminação de serrilhado avançada em um campo de texto, há três tipos de ajuste à grade disponíveis: Não especifica nenhum ajuste à grade. As linhas horizontais e verticais dos glifos não são forçadas na grade de pixels. Essa configuração geralmente é boa para animação e fontes de tamanhos grandes.
none (nenhum) pixel Especifica que as linhas horizontais e verticais fortes são ajustadas à grade de pixels. Essa configuração só funciona para campos de texto alinhados à esquerda. Geralmente, oferece a melhor legibilidade para textos alinhados à esquerda. subpixel

Especifica que as linhas horizontais e verticais fortes são ajustadas à grade de subpixels em um monitor LCD. A configuração de subpixel geralmente é boa para textos dinâmicos alinhados à direita e alinhados ao centro, e às vezes é um equilíbrio útil entre qualidade de texto versus animação. O exemplo a seguir mostra como definir um tipo de ajuste à grade em um campo de texto usando o ActionScript.

Para definir um tipo de ajuste à grade em um campo de texto:
1. 2.

Crie um novo documento do Flash e salve-o como gridfittype.fla. Selecione New Font (Nova fonte) no menu pop-up no canto superior direito do painel Library (Biblioteca).

442

Trabalhando com texto e seqüências de caracteres

3.

Selecione a fonte Arial no menu suspenso Font (Fonte) e depois defina o tamanho da fonte com 10 pontos. Digite o nome da fonte Arial-10 (embedded) na caixa de texto Name (Nome) e clique em OK. Clique com o botão direito do mouse no símbolo de fonte na biblioteca e selecione Linkage (Vinculação) para abrir a caixa de diálogo Linkage Properties (Propriedades de vinculação). Defina o identificador de vinculação com Arial-10 e marque as caixas de seleção Export for ActionScript (Exportar para ActionScript) e Export in First Frame (Exportar no primeiro quadro). Clique em OK. Adicione o seguinte código ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal:
var my_fmt:TextFormat = new TextFormat(); my_fmt.size = 10; my_fmt.font = "Arial-10"; var h:Number = Math.floor(Stage.height / 3); this.createTextField("none_txt", 10, 0, 0, Stage.width, h); none_txt.antiAliasType = "advanced"; none_txt.embedFonts = true; none_txt.gridFitType = "none"; none_txt.multiline = true; none_txt.setNewTextFormat(my_fmt); none_txt.text = "loading..."; none_txt.wordWrap = true; this.createTextField("pixel_txt", 20, 0, h, Stage.width, h); pixel_txt.antiAliasType = "advanced"; pixel_txt.embedFonts = true; pixel_txt.gridFitType = "pixel"; pixel_txt.multiline = true; pixel_txt.selectable = false; pixel_txt.setNewTextFormat(my_fmt); pixel_txt.text = "loading..."; pixel_txt.wordWrap = true; this.createTextField("subpixel_txt", 30, 0, h*2, Stage.width, h); subpixel_txt.antiAliasType = "advanced"; subpixel_txt.embedFonts = true; subpixel_txt.gridFitType = "subpixel"; subpixel_txt.multiline = true; subpixel_txt.setNewTextFormat(my_fmt); subpixel_txt.text = "loading..."; subpixel_txt.wordWrap = true;

4.

5.

6.

7. 8.

Sobre o layout e a formatação de texto

443

var lorem_lv:LoadVars = new LoadVars(); lorem_lv.onData = function(src:String):Void { if (src != undefined) { none_txt.text = "[antiAliasType=none]\n" + src; pixel_txt.text = "[antiAliasType=pixel]\n" + src; subpixel_txt.text = "[antiAliasType=subpixel]\n" + src; } else { trace("unable to load text file"); } }; lorem_lv.load("http://www.helpexamples.com/flash/lorem.txt");

O ActionScript anterior pode ser dividido em cinco seções. A primeira seção define um novo objeto de formato de texto que especifica duas propriedades: tamanho e fonte. A propriedade font (fonte) refere-se ao identificador de vinculação do símbolo de fonte que está atualmente na biblioteca de documentos. A segunda, terceira e quarta seções de código criam um novo campo de texto dinâmico no Stage (Palco) e definem algumas propriedades comuns: antiAliasType (que deve ser definido com advanced [avançado]), embedFonts (definido com true [verdadeiro]), multiline e wordWrap. Cada seção também aplica o objeto de formato de texto criado em um seção anterior e define o tipo de ajuste à grade com normal, pixel ou subpixel. A quinta e última seção cria uma instância LoadVars, que carrega o conteúdo de um arquivo de texto externo para cada um dos campos de texto criados com código.
9.

Salve o documento e selecione Control (Controlar) > Test Movie (Testar filme) para testar o arquivo SWF. Cada arquivo de texto deve ser inicializado com o valor “loading...”. Após o carregamento bem-sucedido do arquivo de texto externo, cada campo de texto exibirá um texto de exemplo formatado usando um tipo diferente de ajuste à grade.
DICA

A tecnologia de renderização do FlashType utiliza o ajuste à grade apenas na rotação 0º.

Usando a classe TextFormat
Você pode usar a classe TextFormat para definir as propriedades de formatação de um campo de texto. A classe TextFormat incorpora as informações de formatação de caractere e parágrafo. As informações de formatação de caracteres descrevem a aparência de caracteres individuais: nome da fonte, tamanho do ponto, cor e URL associado. As informações de formatação de parágrafos descrevem a aparência de um parágrafo: margem esquerda, margem direita, recuo da primeira linha e alinhamento à esquerda, à direita ou centralizado.

444

Trabalhando com texto e seqüências de caracteres

Para usar a classe TextFormat, crie primeiro um objeto TextFormat e defina seus estilos de formatação de caractere e parágrafo. Aplique o objeto TextFormat a um campo de texto usando o método TextField.setTextFormat() ou TextField.setNewTextFormat(). O método setTextFormat() altera o formato de texto aplicado a caracteres individuais, a grupos de caracteres ou a todo o corpo de texto em um campo de texto. No entanto, um texto inserido posteriormente, por um usuário ou com o ActionScript, não assume a formatação especificada por uma chamada de setTextFormat(). Para especificar a formatação padrão do texto inserido posteriormente, use TextField.setNewTextFormat(). Para obter mais informações, consulte %{setTextFormat (TextField.setTextFormat method)}% and %{setNewTextFormat (TextField.setNewTextFormat method)}% em ActionScript 2.0 Language Reference.
Para formatar um campo de texto com a classe TextFormat:
1.

Em um novo documento Flash, crie um campo de texto no Stage (Palco) usando a ferramenta Text. Digite algum texto no campo de texto no Stage (Palco), como Texto itálico, em negrito, de 24 pontos.

2.

No inspetor Properties, digite myText_txt na caixa de texto Instance Name (Nome da instância), selecione Dynamic (Dinâmico) no menu pop-up Text Type (Tipo de texto) e selecione Multiline (Várias linhas) no menu pop-up Line Type (Tipo de linha). Selecione Frame 1 (Quadro 1) da Timeline (Linha de tempo) e abra o painel Actions (Ações) (Window [Janela] > Actions). Digite o código a seguir no painel Actions para criar um objeto TextFormat e defina as propriedades bold e italic como true, e a propriedade size como 24:
// Crie um objeto TextFormat. var txt_fmt:TextFormat = new TextFormat(); // Especifique a formatação de parágrafo e caractere. txt_fmt.bold = true; txt_fmt.italic = true; txt_fmt.size = 24;

3.

4.

5.

Aplique o objeto TextFormat ao campo de texto criado na etapa 1, usando TextField.setTextFormat():
myText_txt.setTextFormat(txt_fmt);

Essa versão de setTextFormat() aplica a formatação especificada ao campo de texto inteiro. Duas outras versões desse método permitem a aplicação de formatação a caracteres individuais ou grupos de caracteres. Por exemplo, o código a seguir aplica a formatação negrito, itálico, tamanho 24 aos três primeiros caracteres inseridos no campo de texto:
myText_txt.setTextFormat(0, 3, txt_fmt);

Sobre o layout e a formatação de texto

445

Para obter mais informações, %{setTextFormat (TextField.setTextFormat method)}% em ActionScript 2.0 Language Reference.
6.

Selecione Control (Controlar) > Test Movie (Testar filme) para testar o aplicativo. “Propriedades padrão dos novos campos de texto” na página 446 “Formatando texto com estilos CSS” na página 447

Para obter mais informações sobre o uso da classe TextFormat, consulte os seguintes tópicos:
■ ■

Propriedades padrão dos novos campos de texto
Os campos de texto criados durante a execução com createTextField() recebem um objeto TextFormat padrão com as seguintes propriedades:
align = "left" blockIndent = 0 bold = false bullet = false color = 0x000000 font = "Times New Roman" (default font is Times on Mac OS X) indent = 0 italic = false kerning = false leading = 0 leftMargin = 0 letterSpacing = 0 rightMargin = 0 size = 12 tabStops = [] (empty array) target = "" underline = false url = ""
N OT A 446

A propriedade de fonte padrão no Mac OS X é Times.

Para obter uma lista completa dos métodos TextFormat e de suas descrições, consulte %{TextFormat}% em ActionScript 2.0 Language Reference.

Trabalhando com texto e seqüências de caracteres

Formatando texto com estilos CSS
Os estilos CSSs (Cascading Style Sheets, Folhas de estilos em cascata) permitem trabalhar com estilos de texto que podem ser aplicados a documentos HTML ou XML. Uma folha de estilos é uma coleção de regras de formatação que especifica como formatar elementos HTML ou XML. Cada regra está associada a um nome de estilo, ou seletor, com uma ou mais propriedades de estilo e seus valores. Por exemplo, o estilo a seguir define um seletor chamado bodyText:
.bodyText { text-align: left }

Você pode criar estilos que redefinam marcas de formatação HTML internas utilizadas pelo Flash Player (como <p> e <li>). Também é possível criar classes de estilo que podem ser aplicadas a elementos HTML específicos usando o atributo class da marca <p> ou <span>, ou definir novas marcas. Você usa a classe TextField.StyleSheet para trabalhar com folhas de estilos de texto. Embora a classe TextField possa ser usada com o Flash Player 6, a classe TextField.StyleSheet exige que os arquivos SWF se destinem ao Flash Player 7 ou a versões posteriores. É possível carregar estilos de um arquivo CSS externo ou criá-los de maneira nativa usando o ActionScript. Para aplicar uma folha de estilos a um campo de texto que contém texto em formato HTML ou XML, use a propriedade TextField.styleSheet. Os estilos definidos na folha de estilos são mapeados automaticamente para as marcas definidas no documento HTML ou XML. O uso de folhas de estilos envolve as seguintes três etapas básicas:

Criar um objeto de folha de estilos a partir da classe TextField.StyleSheet (para obter mais informações, consulte %{StyleSheet (TextField.StyleSheet)}% em ActionScript 2.0 Language Reference). Adicionar estilos ao objeto de folha de estilos, carregando-os de um arquivo CSS externo ou criando novos estilos com o ActionScript. Atribuir a folha de estilos a um objeto TextField que contém texto em formato HTML ou XML. “Propriedades CSS suportadas” na página 448 “Criando um objeto de folha de estilos” na página 449 “Carregando arquivos CSS externos” na página 450 “Criando novos estilos com o ActionScript” na página 451 “Aplicando estilos a um objeto TextField” na página 452

Para obter mais informações, consulte os seguintes tópicos:
■ ■ ■ ■ ■

Formatando texto com estilos CSS

447

■ ■ ■ ■ ■ ■ ■

“Aplicando uma folha de estilos a um componente TextArea” na página 452 “Combinando estilos” na página 453 “Usando classes de estilo” na página 454 “Atribuindo estilo a marcas HTML internas” na página 454 “Um exemplo do uso de estilos com HTML” na página 455 “Usando estilos para definir novas marcas” na página 458 “Um exemplo do uso de estilos com XML” na página 458

Você pode localizar um arquivo de origem de exemplo, formattedText.fla, na pasta Samples no disco rígido, que mostra como aplicar a formatação CSS ao texto carregado em um arquivo SWF durante a execução. No Windows, navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\LoadText. No Macintosh, navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/LoadText.

Propriedades CSS suportadas
O Flash Player suporta um subconjunto de propriedades na especificação CSS1 original (www.w3.org/TR/REC-CSS1). A tabela a seguir mostra as propriedades e valores CSS suportados, bem como os nomes de suas propriedades correspondentes no ActionScript. (O nome de cada propriedade do ActionScript é derivado do nome da propriedade CSS correspondente; o hífen é omitido e o caractere seguinte fica em letra maiúscula.)
Propriedade CSS
text-align font-size

Propriedade do ActionScript
textAlign fontSize

Uso e valores suportados
Os valores reconhecidos são left, center, right e justify. Apenas a parte numérica do valor é usada. As unidades (px, pt) não são analisadas; pixels e pontos são equivalentes. Os valores reconhecidos são none e underline. Apenas a parte numérica do valor é usada. As unidades (px, pt) não são analisadas; pixels e pontos são equivalentes. Apenas a parte numérica do valor é usada. As unidades (px, pt) não são analisadas; pixels e pontos são equivalentes.

text-decoration margin-left

textDecoration marginLeft

margin-right

marginRight

448

Trabalhando com texto e seqüências de caracteres

StyleSheet(). Apenas a parte numérica do valor é usada. text-indent textIndent font-family fontFamily color color Criando um objeto de folha de estilos As folhas de estilos CSS são representadas no ActionScript pela classe TextField. Formatando texto com estilos CSS 449 . Os valores reconhecidos são true e false. Apenas a parte numérica do valor é usada. As seguintes conversões de fonte estão disponíveis: mono é convertida em _typewriter. Qualquer nome de família de fonte pode ser usado. ela será convertida em uma fonte de dispositivo apropriada. Os valores reconhecidos são normal e italic. Consulte “Carregando arquivos CSS externos” na página 450 e “Criando novos estilos com o ActionScript” na página 451. Cores com nome atribuído (como blue) não são suportadas. As unidades (px. pixels e pontos são equivalentes. formattedText. pt) não são analisadas.StyleSheet. em _sans e serif.StyleSheet = new TextField. Você pode localizar um arquivo de origem de exemplo. na pasta Samples no disco rígido. Para adicionar estilos a um objeto de folha de estilos. Essa classe só está disponível para arquivos SWF que se destinam ao Flash Player 7 ou versões posteriores. Uma lista de fontes separadas por vírgulas para usar. pt) não são analisadas. que mostra como aplicar a formatação CSS ao texto carregado em um arquivo SWF durante a execução.fla. pixels e pontos são equivalentes. você pode carregar um arquivo CSS externo no objeto ou definir os estilos no ActionScript. As unidades (px. Para criar um objeto de folha de estilos. Se você especificar um nome de fonte genérica. Apenas valores de cores hexadecimais são suportados.StyleSheet: var newStyle:TextField. em _serif. chame a função construtora da classe TextField. sans-serif. As cores são escritas no seguinte formato: #FF0000. em ordem decrescente de interesse.Propriedade CSS font-weight kerning font-style letterSpacing Propriedade do ActionScript fontWeight kerning fontStyle letterSpacing Uso e valores suportados Os valores reconhecidos são normal e bold.

450 Trabalhando com texto e seqüências de caracteres . Abra o painel Actions (Ações) (Window > Actions). Adicione o seguinte código ao painel Actions: var styles:TextField.headline { font-family: Arial. Para determinar quando o arquivo CSS finalizou a carga.css.getStyleNames() para recuperar os nomes dos estilos carregados. Os estilos definidos no arquivo CSS são adicionados ao objeto de folha de estilos. use o manipulador de eventos onLoad do objeto de folha de estilos.Helvetica. você criará e carregará um arquivo CSS externo e usará o método TextField. Na Timeline (Linha do tempo). navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\LoadText. styles. } else { trace("Error loading CSS file. use o método load() da classe TextField.onLoad = function(success:Boolean):Void { if (success) { // exiba nomes de estilos. selecione Layer 1 (Camada 1). Carregando arquivos CSS externos Você pode definir estilos em um arquivo CSS externo e carregar esse arquivo em um objeto de folha de estilos.sans-serif. No exemplo a seguir. No Macintosh. 7. Crie um novo arquivo no editor de texto ou CSS de sua preferência. 6.No Windows. crie um novo arquivo FLA. Adicione as seguintes definições de estilo ao arquivo: . navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/LoadText.StyleSheet().StyleSheet. font-size: 24px.Helvetica. font-size: 12px. } .StyleSheet = new TextField. } 3.").sans-serif. Para carregar uma folha de estilos externa: 1.bodyText { font-family: Arial.StyleSheet.getStyleNames()). trace(this. Para carregar um arquivo CSS externo. No Flash. em Window (Janela) > Timeline. Salve o arquivo CSS como styles. 2. 4. 5.

fla. navegue até HD do Macintosh/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript/LoadText. No Macintosh. fontSize: '12px'} Formatando texto com estilos CSS 451 . Você deve ver os nomes dos dois estilos exibidos no painel Output (Saída): .bodyText. 8. o código a seguir cria um objeto de folha de estilos chamado styles que define dois estilos idênticos aos já importados (consulte “Carregando arquivos CSS externos” na página 450): var styles:TextField. Você pode localizar um arquivo de origem de exemplo. navegue até a unidade de inicialização\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\LoadText.headline Se a mensagem “Error loading CSS file. styles.) Para obter mais informações sobre o uso de estilos CSS com o Flash. (Consulte “Acesso entre domínios e a subdomínios entre arquivos SWF” na página 729.0 Language Reference. styles.StyleSheet)}% em ActionScript 2. na pasta Samples no disco rígido. Criando novos estilos com o ActionScript Você pode criar novos estilos de texto com o ActionScript usando o método setStyle() da classe TextField. {fontFamily: 'Arial. que mostra como aplicar a formatação CSS ao texto carregado em um arquivo SWF durante a execução. Teste o documento do Flash (Control [Controlar] > Test Movie [Testar filme]).StyleSheet().Helvetica..StyleSheet.css. Este método tem dois parâmetros: o nome do estilo e um objeto que define as propriedades desse estilo. Salve o arquivo FLA no mesmo diretório que contém o arquivo styles. this. Por exemplo.sans-serif'. No Windows.setStyle("bodyText".css").” (Erro ao carregar o arquivo CSS) for exibida no painel Output.StyleSheet = new TextField. NO T A No trecho de código anterior.getStyleNames() refere-se ao objeto styles criado na primeira linha do ActionScript. formattedText.load("styles. consulte %{StyleSheet (TextField. verifique se o arquivo FLA e o arquivo CSS estão no mesmo diretório e se digitou o nome do arquivo CSS corretamente. 9. o arquivo CSS deve ser estar no mesmo domínio que o arquivo SWF que está carregando o arquivo.} }. Como com todos os outros métodos do ActionScript que carregam dados pela rede.

setStyle("headline". textObj_txt. Usando uma folha de estilos com um componente TextArea 1.StyleSheet.styleSheet com a classe TextField. crie um objeto de folha de estilos e atribua a ele estilos HTML usando a classe TextField. Crie um novo documento do Flash e salve-o como textareastyle. Quando você atribui um objeto de folha de estilos a um objeto TextField.StyleSheet. e atribuem a ele a instância do componente myTextArea. styles. atribua esse objeto à propriedade styleSheet do campo de texto. e qualquer variável associada ao campo de texto. NO TA ■ ■ ■ ■ Não confunda a propriedade TextField. O uso de maiúsculas ou minúsculas indica a diferença. Em seguida. sempre contêm o mesmo valor e comportam-se de maneira idêntica. tudo que for escrito em uma dessas propriedades pode ser recuperado na forma original do texto.fla. Qualquer texto atribuído às propriedades text e htmlText do campo de texto ou à variável associada é armazenado literalmente.Helvetica. Aplicando estilos a um objeto TextField Para aplicar um objeto de folha de estilos a um objeto TextField. O campo de texto torna-se somente leitura e não pode ser editado pelo usuário.sans-serif'. atribua a folha de estilos à propriedade styleSheet do componente TextArea. Os métodos setTextFormat() e replaceSel() da classe TextField não funcionam mais com o campo de texto. Os exemplos a seguir criam um objeto de folha de estilos.). ou alterando a variável associada ao campo de texto. A única maneira de alterar o campo é alterando as propriedades text ou htmlText do campo de texto. as seguintes alterações ocorrem no comportamento normal do campo de texto: As propriedades text e htmlText do campo de texto.styleSheet = styles. fontSize: '24px'} ). styles. {fontFamily: 'Arial. 452 Trabalhando com texto e seqüências de caracteres . Aplicando uma folha de estilos a um componente TextArea Para aplicar uma folha de estilos a um componente TextArea.

} }. que são acrescentadas juntas para resultar na formatação final. o objeto de folha de estilos é aplicado ao componente TextArea. {fontFamily:'Arial.setStyle("html".com/flash/myText. styles.StyleSheet = new TextField. var styles:TextField. var myVars:LoadVars = new LoadVars(). Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: // Create a new style sheet object and set styles for it. } else { trace("Unable to load text file. Combinando estilos Os estilos CSS no Flash Player são aditivos.sans-serif'.sans-serif'.{fontFamily:'Arial.load("http://www.text = myStr.htm"). fontSize:'12px'. color:'#0000FF'}). fontSize:'24px'. e a formatação HTML é ativada.setStyle("body". A seguir. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash.Helvetica. ou seja. Formatando texto com estilos CSS 453 . Set html property to true. textDecoration:'underline'}). que define três estilos para as marcas HTML html. myVars.helpexamples. // Define onData handler and load text to be displayed.Helvetica."). styles.2. Arraste um componente TextArea da pasta User Interface do painel Components (Componentes) para o Stage (Palco) e atribua a ele o nome de instância myTextArea. styles. 4. myVars. body e h1. */ myTextArea. set styleSheet property to the style sheet object. cada nível de aninhamento pode contribuir com informações de estilo.styleSheet = styles.StyleSheet(). O restante do ActionScript define um objeto LoadVars que carrega um arquivo HTML externo e preenche a área de texto com o texto carregado. myTextArea. quando os estilos são aninhados. 3. {color:'#00CCFF'.html = true. color:'#006600'}). /* Assign the style sheet object to myTextArea component.StyleSheet.setStyle("h1".onData = function(myStr:String):Void { if (myStr != undefined) { myTextArea. O bloco de código anterior cria uma nova instância TextField.

} 454 Trabalhando com texto e seqüências de caracteres . consulte “Usando texto em formato HTML” na página 461. .Helvetica. font-size: 24px. é possível aplicar esses estilos às marcas <p> e <span>.O exemplo a seguir mostra alguns dados XML atribuídos a um campo de texto: <sectionHeading>This is a section</sectionHeading> <mainBody>This is some main body text.mainBody { font-family: Arial. A palavra enfatizada será formatada usando uma combinação das regras especificadas por mainBody e emphasized. Todas as instâncias dessa marca receberão um estilo da maneira especificada pela regra de estilo. font-size: 12px.</mainBody> Na palavra enfatizada no texto anterior. with one <emphasized>emphatic</emphasized> word. como mostra o seguinte trecho: <p class='mainBody'>This is <span class='emphasis'>really exciting!</ span></p> Atribuindo estilo a marcas HTML internas O Flash Player oferece suporte a um subconjunto de marcas HTML. } .0) que podem ser aplicadas a uma marca <p> ou <span> usando o atributo class da marca. Usando classes de estilo Você pode criar “classes” de estilo (diferentes das classes do ActionScript 2. a folha de estilos a seguir define duas classes de estilos: mainBody e emphasis. Para obter mais informações. Quando aplicado a uma marca <p>. O estilo mainBody contribui com regras de cor.Helvetica. O estilo emphasized adiciona uma regra de espessura de fonte a essas regras. Você pode atribuir um estilo CSS a cada instância de uma marca HTML interna que aparece em um campo de texto.emphasis { color: #666666. font-style: italic.sans-serif. o estilo é aplicado no parágrafo inteiro. Por exemplo. Você também pode usar a marca <span> para atribuir um estilo a um intervalo de texto que use uma classe de estilo. } No texto HTML que você atribui a um campo de texto. Por exemplo. o código a seguir define um estilo para a marca HTML <p> interna. display: inline.sans-serif. o estilo emphasized é aninhado no estilo mainBody. p { font-family: Arial. tamanho de fonte e formatação.

font-size: 12px. Afeta todas as marcas <body>. Aplicado a uma marca de âncora <a> quando o ponteiro do mouse está posicionado sobre o link. Crie um novo arquivo no editor de texto ou CSS de sua preferência. Depois que o botão do mouse é liberado. poderá aplicar essa folha de estilos a um objeto TextField que contém texto em formato HTML. tem precedência sobre o estilobody. se especificado. Adicione a seguinte definição de folha de estilos ao arquivo: p { color: #000000. Este estilo é aplicado após qualquer estilo a. 2. O estilo p .A tabela a seguir mostra as marcas HTML internas que podem receber um estilo e como cada estilo é aplicado: Nome do estilo p body Como o estilo se aplica Afeta todas as marcas <p>. Para formatar um texto HTML com uma folha de estilo: 1. Afeta todas as marcas de âncora <a>. } Formatando texto com estilos CSS 455 . Aplicado a uma marca de âncora <a> quando o usuário clica no link. Em seguida. Este estilo é aplicado após qualquer estilo a e a:link.Helvetica. o estilo a:hover é removido do link. Este estilo é aplicado após qualquer estilo a e a:link. Afeta todas as marcas de bullet <li>. li a a:link a:hover a:active Um exemplo do uso de estilos com HTML Esta seção apresenta um exemplo de uso de estilos com marcas HTML. Quando o ponteiro do mouse sai do link. o estilo a:active é removido do link. Você pode criar uma folha de estilos que atribui um estilo a algumas marcas internas e define algumas classes de estilo.sans-serif. font-family: Arial. display: inline. Afeta todas as marcas de âncora <a>. } a:link { color: #FF0000.

sans-serif. Salve o arquivo como html_styles.com'>Macromedia Flash web site. display: block. remova todas as quebras de linha que possam ter sido adicionadas à seqüência de caracteres de texto. font-weight: bold. 6. Ela também define duas classes de estilos (. Adicione o código a seguir ao arquivo: <p class='headline'>Flash adds FlashType rendering technology!</ p><p><span class='byline'>San Francisco. Crie um novo arquivo de texto em um editor de texto ou HTML e salve o documento como myText. font-family: Arial. 7.createTextField("news_txt". } Essa folha de estilos define estilos para duas marcas HTML internas (<p> e <a>) que serão aplicadas a todas as instâncias dessas marcas.Helvetica. visit the <a href='http:// www. 50. news_txt. 456 Trabalhando com texto e seqüências de caracteres .headline { color: #000000.byline { color: #666600. 50.</a></p> N OT A Se você copiar e colar essa seqüência de caracteres de texto.headline e . 5. 4.byline) que serão aplicadas a parágrafos específicos e intervalos de texto. 450. Selecione o primeiro quadro na Layer 1 da Timeline (Window [Janela] > Timeline).a:hover{ text-decoration: underline.htm. 99.multiline = true. news_txt. news_txt. Crie o novo documento do Flash na ferramenta de criação do Flash.border = true. font-style: italic. most excellent at rendering small text with incredible clarity and consistency across platforms. news_txt. 300). display: inline.macromedia.html = true. Abra o painel Actions (Ações) (Window > Actions) e adicione o seguinte código a ele: this. For more information. announced today a new version of Flash that features a brand new font rendering technology called FlashType. font-weight: bold. CA</span>--Macromedia Inc.css.wordWrap = true. 3. } . } . font-size: 18px.

css". N OT A Nesse ActionScript. myVars_lv. var myVars_lv:LoadVars = new LoadVars().onData = function(src:String):Void { if (src != undefined) { news_txt. Formatando texto com estilos CSS 457 . var txt_url:String = "myText. */ news_txt. 9. news_txt. } }. var styles:TextField. Selecione Control (Controlar) > Test Movie (Testar filme) para ver os estilos aplicados ao texto HTML automaticamente.” 8. você está carregando o texto de um arquivo externo.onLoad = function(success:Boolean):Void { if (success) { /* Se a folha de estilos tiver sido carregada sem erros.StyleSheet = new TextField. consulte o Capítulo 15.load(css_url).fla no mesmo diretório que contém o arquivo CSS criado na etapa 3. // Define onData handler and load text to display. styles. // Location of CSS and text files to load.styleSheet = styles. } else { trace("Unable to load CSS file.htmlText = src. styles.htm"."). myVars_lv.// Create a new style sheet and LoadVars object. som e vídeo.StyleSheet(). atribua-a ao objeto de texto e atribua o texto HTML ao campo de texto. “Trabalhando com imagens. var css_url:String = "html_styles.load(txt_url). } else { trace("Unable to load HTML file").text = storyText. // Define onLoad handler and Load CSS file. Para obter informações sobre como carregar dados externos. Salve o arquivo como news_html. } }.

No Flash. font-size: 12px. de maneira que o texto seja formatado automaticamente usando as regras da folha de estilos. mainBody e emphasized. display: inline } Você pode preencher um campo de texto associado a essa folha de estilos com o seguinte texto em formato XML: <sectionHeading>This is a section</sectionHeading> <mainBody>This is some main body text. Arial. </mainBody> Um exemplo do uso de estilos com XML Nesta seção.mainBody { color: #000099.Usando estilos para definir novas marcas Se você definir um novo estilo em uma folha de estilos. text-decoration: underline. você criará um arquivo FLA com texto em formato XML. a folha de estilos a seguir cria os novos estilos sectionHeading.emphasized { font-weight: bold. você poderá usar <sectionHeading> como elemento em qualquer campo de texto associado à folha de estilos. Por exemplo. display: block } . esse estilo poderá ser usado como marca. display: block } . se uma folha de estilos definir um estilo CSS chamado sectionHeading.sectionHeading { font-family: Verdana. crie um documento FLA. Esse recurso permite atribuir qualquer texto em formato XML diretamente ao campo de texto. Helvetica. . Você criará uma folha de estilos usando o ActionScript. with one <emphasized>emphatic</emphasized> word. 458 Trabalhando com texto e seqüências de caracteres . Por exemplo. da mesma maneira que você usaria uma marca HTML interna. em vez de importando estilos de um arquivo CSS como mostrado em “Um exemplo do uso de estilos com HTML” na página 455 Para formatar XML com uma folha de estilo: 1. sans-serif. font-size: 18px.

No inspetor Properties. fontSize:'12'. crie um campo de texto de aproximadamente 400 pixels de largura por 300 pixels de altura. anteriormente neste capítulo. 5. Abra o inspetor Properties (Propriedades) (Window [Janela] > Properties > Properties) e selecione o campo de texto. abra o painel Actions (Window > Actions) e adicione o seguinte código: var styles:TextField. { color:'#000000'. { color:'#000000'. Usando a ferramenta Text (Texto). styles.setStyle("byline".setStyle("title". { textDecoration:'underline' }). selecione a opção Render Text as HTML e digite news_txt na caixa de texto Instance Name.sans-serif'.Helvetica. fontFamily:'Arial.sans-serif'.StyleSheet(). fontWeight:'bold' }). fontFamily:'Arial.StyleSheet = new TextField. styles. styles. display:'inline' }). display:'block'. 6. selecione Dynamic Text no menu Text Type.Helvetica. Esse código cria um novo objeto de folha de estilos chamado styles que define estilos usando o método setStyle(). fontWeight:'bold'. Formatando texto com estilos CSS 459 . styles. styles. display:'block' }).setStyle("mainBody".setStyle("a:link". fontSize:'18'. 3. selecione Multiline no menu Line Type. selecione o primeiro quadro. { color:'#666600'. Os estilos correspondem exatamente aos criados em um arquivo CSS externo. 4.setStyle("a:hover". { color:'#FF0000' }).2. Na Layer 1 da Timeline (Window > Timeline). fontStyle:'italic'. Para criar o objeto de folha de estilos.

xml").onLoad = function(success:Boolean):Void { if (success) { news_txt. N OT A Você está carregando dados XML de um arquivo externo nesse ActionScript. o arquivo como news_xml.macromedia.xml. my_xml. } }.styleSheet = styles. Selecione Hidden Characters (Caracteres ocultos) no menu pop-up do painel Actions para ver e remover quaisquer quebras de linha extras. No Flash. 460 Trabalhando com texto e seqüências de caracteres .7. abra um editor de texto e digite o seguinte texto em um novo documento: <story><title>Flash now has FlashType</title><mainBody><byline>San Francisco. adicione o código a seguir no painel Actions. my_xml.load("story. de acordo com o código da etapa 6. Salve 11. Para obter informações sobre como carregar dados externos.”. atribui o objeto de folha de estilos à propriedade styleSheet do campo de texto e atribui o texto XML ao campo de texto: var my_xml:XML = new XML(). 9. } else { trace("Error loading XML. Para criar o texto XML a ser atribuído ao campo de texto.ignoreWhite = true. Esse código carrega o documento story. consulte o Capítulo 15. announced today a new version of Flash that features the new FlashType rendering technology. For more information. som e vídeo. CA</byline>--Macromedia Inc. 10. visit the <a href="http:// www.xml. Execute o arquivo SWF (Control [Controlar] > Test Movie [Testar filme]) para ver os estilos aplicados automaticamente ao texto no campo de texto.fla na mesma pasta que story. my_xml. Salve o arquivo de texto como story. “Trabalhando com imagens.text = my_xml. 8. remova todas as quebras de linha que possam ter sido adicionadas à seqüência de caracteres de texto.com">Macromedia Flash website</a></mainBody></story> NO TA Se você copiar e colar essa seqüência de caracteres de texto.xml."). news_txt.

o que permite incorporar arquivos de imagem (JPEG. você deve tornar o campo de texto um campo de várias linhas selecionando a opção Multiline (Várias linhas) no inspetor Properties ou definindo a propriedade multiline do campo como true. você deve definir várias propriedades do campo no inspetor Properties (Propriedades) ou usando o ActionScript: ■ Ative a formatação HTML do campo de texto selecionando a opção Render Text as HTML (Renderizar texto como HTML) no inspetor Properties ou definindo a propriedade html do campo como true.htmlText com a seqüência de caracteres de texto em formato HTML que deseja exibir. que permite a aplicação de estilos de formatação de parágrafo da classe TextFormat em campos de texto ativados por HTML. O Flash Player também oferece suporte à marca <textformat>. No Flash Player 7 e versões posteriores. defina o valor de TextField. que você pode usar para atribuir um estilo a um texto em qualquer campo de texto dinâmico ou de entrada. Para usar marcas HTML. o código a seguir ativa a formatação HTML em um campo de texto chamado headline_txt e atribui um código HTML ao campo de texto: Usando texto em formato HTML 461 . ■ ■ Por exemplo. consulte . PNG). arquivos SWF e clipes de filme em campos de texto” na página 470Para obter mais informações. Para obter mais informações sobre texto em formato HTML. No ActionScript. como <p>. arquivos SWF e clipes de filme nesses campos. como <p> e <li>. <br> e <img>. arquivos SWF e clipes de filme em campos de texto” na página 470 Propriedades e sintaxe necessárias para usar texto em formato HTML Para usar o formato HTML em um campo de texto. de maneira muito parecida com um navegador da Web que envolve o texto em torno de imagens incorporadas em uma página HTML. consulte os seguintes tópicos: ■ ■ ■ ■ “Propriedades e sintaxe necessárias para usar texto em formato HTML” na página 461 “Sobre marcas HTML suportadas” na página 462 “Sobre entidades HTML suportadas” na página 469 “Sobre a incorporação de imagens. “Sobre a incorporação de imagens. O Flash Player envolverá automaticamente o texto em torno das imagens incorporadas nos campos de texto. os campos de texto também oferecem suporte à marca <img>. Para obter mais informações. GIF. consulte “Usando a classe TextFormat” na página 444.Usando texto em formato HTML O Flash Player oferece suporte a um subconjunto de marcas HTML padrão.

htmlText myField_txt. myField_txt.htmlText myField_txt. 10. é necessário usar a sintaxe adequada. Para obter mais informações sobre marcas HTML suportadas. 10.htmlText = "<p align=left>This is left-aligned text</p>". Sobre marcas HTML suportadas Esta seção lista as marcas HTML internas que o Flash Player suporta. deverá acrescentar um caractere de escape para fechar as aspas (\"). consulte os seguintes tópicos: ■ ■ ■ ■ ■ ■ ■ “Marca de âncora” na página 463 “Marca de negrito” na página 463 “Marca de quebra” na página 464 “Marca de fonte” na página 464 “Marca de imagem” na página 465 “Marca de itálico” na página 466 “Marca de item de lista” na página 466 462 Trabalhando com texto e seqüências de caracteres . headline_txt. 500. Você também pode criar novos estilos e marcas usando folhas de estilos CSS. = '<p align=\'left\'>This uses escaped single quotes</ Você não precisará acrescentar um caractere de escape para fechar as aspas duplas se estiver carregando texto de um arquivo externo. o trecho de HTML a seguir não pode ser renderizado adequadamente pelo Flash Player porque o valor atribuído ao atributo align (left) não está entre aspas: this. isso só será necessário se você estiver atribuindo uma seqüência de caracteres de texto no ActionScript.</br>". headline_txt. 10. 200). myField_txt.wordWrap = true. headline_txt.htmlText p>'. como renderização de texto imprópria.htmlText p>". Para renderizar o HTML corretamente. consulte “Formatando texto com estilos CSS” na página 447. myField_txt. headline_txt. = "<p align=\"left\">This uses escaped double quotes</ = '<p align="left">This uses outer single quotes</p>'.html = true. Os valores de atributos sem aspas podem produzir resultados inesperados. 1. Por exemplo.createTextField("myField_txt".</font><br>It's very useful. Os atributos das marcas HTML devem estar entre aspas simples (') ou duplas("). 10.htmlText = "<font face='Times New Roman' size='25'>This is how you assign HTML text to a text field. Se você colocar os valores do atributo entre aspas duplas. 400. Há duas maneiras aceitáveis de fazer isso: myField_txt.html = true. = "<p align='left'>This uses single quotes</p>". 10.multiline = true. 300).this.createTextField("headline_txt".

macromedia. Marca de negrito A marca <b> renderiza o texto como negrito. _blank. As opções incluem _self. target Especifica o nome da janela de destino na qual a página será carregada.0 Language Reference.macromedia. o código HTML a seguir cria o link “Vá para a página inicial”. Para obter mais informações sobre o protocolo asfunction. urlText_txt. A opção _self especifica o quadro atual na janela atual. um exemplo de referência relativa é /index. o Flash os tratará como URLs relativos.htmlText = "He was <b>ready</b> to leave!". Você pode usar o protocolo asfunction especial para fazer com que o link execute uma função do ActionScript em um arquivo SWF. NO T A Os URLs absolutos devem ter o prefixo http://.com em uma nova janela do navegador.com. Um exemplo de referência absoluta a um URL é http:// www.macromedia. como mostra este exemplo: text3_txt.htmlText = "<a href='http://www. consulte %{asfunction protocol}% em ActionScript 2. _parent especifica o pai do quadro atual e _top especifica o quadro de nível superior na janela atual. a:hover e a:active para marcas de âncora usando a folha de estilos. Consulte “Atribuindo estilo a marcas HTML internas” na página 454. _parent e _top.■ ■ ■ ■ “Marca de parágrafo” na página 466 “Marca de intervalo” na página 467 “Marca de formatação de texto” na página 467 “Marca de sublinhado” na página 469 Marca de âncora A marca <a> cria um hiperlink e oferece suporte aos seguintes atributos: ■ href Uma seqüência de até 128 caracteres que especifica o URL da página a ser carregada no navegador.com' target='_blank'>Go home</a>". Um tipo em negrito deve estar disponível para a fonte usada para exibir o texto.html. caso contrário. Você também pode definir os estilos a:link. em vez de abrir um URL. _blank especifica uma nova janela. Usando texto em formato HTML 463 . O URL pode ser absoluto ou relativo ao local do arquivo SWF que está carregando a página. que abre o site www. ■ Por exemplo.

em pixels. 24point text</font>". Por exemplo. 464 Trabalhando com texto e seqüências de caracteres ..0 Language Reference e “Definindo opções de texto dinâmico e de entrada” em Usando o Flash. 1. Para usar essa marca. text1_txt.multiline = true.createTextField("text1_txt". consulte %{embedFonts (TextField. Times New Roman'>Displays as either Times or Times New Roman. como mostra este exemplo: myText_txt. Marca de fonte A marca <font> especifica uma fonte ou lista de fontes para exibir o texto.". ■ face myText_txt.</font>".htmlText = "<font face='Times. text1_txt. como +2 ou -4. 100). ■ size Especifica o tamanho da fonte. Como mostra o exemplo a seguir. Se a fonte especificada não estiver instalada no computador do usuário ou não estiver incorporada no arquivo SWF. No exemplo a seguir. o Flash Player selecionará a primeira fonte disponível: myText_txt. 10. nesse caso. defina o campo de texto como um campo de várias linhas. o Flash Player escolherá uma fonte substituta. Para obter mais informações sobre a incorporação de fontes em aplicativos Flash.html = true. Você também pode usar tamanhos de ponto relativos em vez de um tamanho de pixel. 10.htmlText = "The boy put on his coat.<br />His coat was <font color='#FF0033'>red</font> plaid.Marca de quebra A marca <br> cria uma quebra de linha no campo de texto.htmlText = "<font size='24' color='#0000FF'>This is blue. o código HTML a seguir cria texto vermelho: Especifica o nome da fonte que será usada.htmlText = "<font color='#FF0000'>This is red text</font>".embedFonts property)}% em ActionScript 2. text1_txt. há uma quebra de linha entre as frases: this. 200.. você pode especificar uma lista de nomes de fontes delimitados por vírgula. A marca font oferece suporte aos seguintes atributos: ■ color Apenas valores de cor hexadecimais (#FFFFFF) são suportados.

createTextField method)}%. height ■ Especifica o alinhamento horizontal da imagem incorporada no campo de texto. width ■ A altura da imagem. GIF. um arquivo SWF ou o identificador de vinculação de um símbolo de clipe de filme da biblioteca. GIF. do arquivo SWF ou do clipe de filme que está sendo inserido. com quebra automática de texto. defina as novas propriedades %{multiline (TextField. Todos os outros atributos são opcionais. Para criar um campo de texto de várias linhas com quebra automática de linha. id Especifica o nome da instância de clipe de filme (criada pelo Flash Player) que contém o arquivo de imagem. src. em pixels. no inspetor Properties (Propriedades). o arquivo SWF ou o clipe de filme incorporado. que especifica o caminho para um arquivo de imagem. ■ ■ A largura da imagem. PNG) externos em campos de texto e instâncias do componente TextArea. Os valores válidos são left e right. selecione um campo de texto no Stage (Palco) e.multiline property)}% e %{multiline (TextField. Para um campo de texto criado durante a execução com %{createTextField (MovieClip. Para usar essa marca. PNG e SWF) só serão exibidos após a conclusão do download. Este atributo é obrigatório. O valor padrão é left. selecione Multiline (Várias linhas) no menu pop-up Text Type (Tipo de texto). todos os outros atributos são opcionais.multiline property)}% da instância do campo de texto como true. O valor padrão é 8. É útil para controlar o conteúdo incorporado com o ActionScript. siga um destes procedimentos: ■ No ambiente de criação do Flash. As marcas <img> oferecem suporte aos seguintes atributos: ■ src Especifica o URL para um arquivo de imagem ou SWF ou para o identificador de vinculação de um símbolo de clipe de filme da biblioteca. arquivos SWF e arquivos de imagem (JPEG. em pixels. hspace ■ Especifica a quantidade de espaço vertical em torno da imagem onde nenhum texto aparecerá. ■ A marca <img> tem um atributo obrigatório. vspace Usando texto em formato HTML 465 . align ■ Especifica a quantidade de espaço horizontal em torno da imagem onde nenhum texto aparecerá. do arquivo SWF ou do clipe de filme que está sendo inserido. O valor padrão é 8.Marca de imagem A marca <img> permite incorporar clipes de filme. Os arquivos externos (JPEG. O texto flui automaticamente em torno das imagens incorporadas nos campos de texto ou nos componentes. você deve definir o campo de texto dinâmico ou de entrada como um campo de várias linhas.

466 Trabalhando com texto e seqüências de caracteres . portanto.Para obter mais informações e exemplos do uso da marca <img>. Para usar essa marca. Todos os itens de lista usam marcadores. Um tipo itálico deve estar disponível para a fonte usada. arquivos SWF e clipes de filme em campos de texto” na página 470.StyleSheet. defina o campo de texto como um campo de várias linhas. os valores válidos são left. não modificam o modo como sua lista é renderizada. justify e center. como mostra o seguinte código: That is very <i>interesting</i>. align class ■ Especifica uma classe de estilo CSS definida em um objeto TextField. como mostra o seguinte código: Grocery list: <li>Apples</li> <li>Oranges</li> <li>Lemons</li> Esse exemplo de código seria renderizado da seguinte maneira: Grocery list: ■ ■ ■ Apples Oranges Lemons N OT A As listas ordenadas e não ordenadas (marcas<ol> e <ul>) não são reconhecidas pelo Flash Player e. Esse exemplo de código seria renderizado da seguinte maneira: That is very interesting. Marca de parágrafo A marca <p> cria um novo parágrafo. right. consulte “Sobre a incorporação de imagens. A marca <p> oferece suporte aos seguintes atributos: ■ Especifica o alinhamento do texto no parágrafo. consulte “Usando classes de estilo” na página 454. Marca de itálico A marca <i> exibe o texto marcado em itálico. Marca de item de lista A marca <li> coloca um marcador na frente do texto incluído nela. Para obter mais informações.

</ p>. 0.styleSheet = myStyleSheet.indent property)}% em ActionScript 2. myStyleSheet. Você pode combinar as marcas <textformat> com as marcas HTML internas. test_txt. corresponde a TextFormat. test_txt. 10. (Consulte %{indent (TextFormat.blockIndent. Marca de intervalo A marca <span> está disponível somente para uso com os estilos de texto CSS. fontSize:18}). Para obter mais informações. (Consulte %{blockIndent (TextFormat. Ela oferece suporte ao seguinte atributo: ■ class Especifica uma classe de estilo CSS definida em um objeto TextField. test_txt. 0.". 10. 100).blue".setStyle(". 400.StyleSheet = new TextField. O exemplo a seguir usa o atributo class para atribuir uma classe de estilo de texto a uma marca <p>: var myStyleSheet:TextField. this. Permite usar inteiros negativos. Para obter mais informações sobre a criação de classes de estilo de texto.indent. myText_txt. this.0 Language Reference.htmlText = "<p class='blue'>This is some body-styled text.O exemplo a seguir usa o atributo align para alinhar o texto no lado direito de um campo de texto.StyleSheet(). 300. myText_txt. 1.htmlText = "<p align='right'>This text is aligned on the right side of the text field</p>".createTextField("myText_txt".) blockindent indent Especifica o recuo do primeiro caractere no parágrafo em relação à margem esquerda.StyleSheet. corresponde a TextFormat. margens e interrupções de tabulação. Marca de formatação de texto A marca <textformat> permite usar um subconjunto das propriedades de formatação de parágrafo da classe TextFormat nos campos de texto HTML.html = true. incluindo entrelinhamento.html = true.0 Language Reference. 10. recuo. consulte “Usando classes de estilo” na página 454.multiline = true.blockIndent property)}% em ActionScript 2.) ■ Usando texto em formato HTML 467 . 100). {color:'#99CCFF'. A marca <textformat> tem os seguintes atributos: ■ Especifica o recuo do bloco em pontos. myText_txt. consulte “Formatando texto com estilos CSS” na página 447.createTextField("test_txt".

tabStops. table_txt.htmlText += "</textformat>". Na Timeline.■ Especifica a quantidade de espaço vertical entre as linhas. (Consulte %{tabStops (TextFormat. table_txt.leftMargin. 50. Abra o painel Actions (Ações) (Window (Janela) > Actions) e digite o seguinte código: // Crie um novo campo de texto.) leading TextFormat.multiline = true. var row_2:String = "AJ\t34\tDetective".0 Language Reference. table_txt. 50. corresponde ao TextFormat.leading property)}% em ActionScript 2. // Defina duas interrupções de tabulação nos pontos 50 e 100. table_txt.0 Language Reference. Crie um novo documento do Flash e salve-o como tabstops.htmlText += row_1.htmlText += rowHeaders.tabStops property)}% em ActionScript 2. separados por tabulações.) ■ ■ Esta tabela de dados com cabeçalhos de linha em negrito é o resultado do exemplo de código no procedimento apresentado a seguir: Name Rick AJ Age 33 34 Occupation Detective Detective Para criar uma tabela formatada de dados usando interrupções de tabulação: 1.htmlText += row_2 .) rightmargin TextFormat. (Consulte %{leading (TextFormat. var rowHeaders:String = "<b>Name\tAge\tOccupation</b>".rightMargin property)}% em ActionScript 2.0 Language Reference. (Consulte %{leftMargin (TextFormat. em pontos. formatados em negrito. 450. this. table_txt.htmlText = "<textformat tabstops='[50.) Especifica a margem direita do parágrafo.leftMargin property)}% em ActionScript 2. table_txt. 2.createTextField("table_txt". // Crie linhas com dados. 100). selecione o primeiro quadro na Layer 1. em pontos. var row_1:String = "Rick\t33\tDetective".100]'>". corresponde ao TextFormat. corresponde ao Permite usar inteiros negativos. 468 Trabalhando com texto e seqüências de caracteres . // Crie cabeçalhos de coluna. corresponde ao (Consulte %{rightMargin (TextFormat.0 Language Reference. 99.fla. tabstops Especifica as interrupções de tabulação personalizadas como um array de inteiros não negativos. 3. leftmargin ■ Especifica a margem esquerda do parágrafo.leading.html = true.rightMargin. table_txt.

&apos.createTextField("my_txt". my_txt. o Flash também reconhece outras entidades HTML listadas na tabela apresentada a seguir. 100. &gt. a fim de que não sejam interpretados como HTML. para exibir os caracteres “maior que” e “menor que” em campos de texto em formato HTML. Marca de sublinhado A marca <u> sublinha o texto marcado.b&gt.".htmlText = "The &lt. é necessário substituir esses caracteres por entidades HTML. Durante a execução. Selecione Control (Controlar) > Test Movie (Testar filme) para exibir a tabela formatada. tag makes text appear <b>bold</b>. Por exemplo. my_txt. 100. Descrição < (menor que) > (maior que) E comercial (&) " (aspas duplas) ' (apóstrofo. O ActionScript a seguir cria um campo de texto em formato HTML no Stage (Palco) e usa entidades HTML para exibir a seqüência de caracteres “<b>” sem que o texto apareça em negrito: this. Esse código seria renderizado da seguinte maneira: Sobre entidades HTML suportadas As entidades HTML ajudam a exibir determinados caracteres em campos de texto em formato HTML.O uso da seqüência de escape do caractere de tabulação (\t) adiciona tabulações entre cada coluna da tabela. aspas simples) Usando texto em formato HTML 469 . como mostra o seguinte código: This is <u>underlined</u> text. my_txt. Use o operador += para anexar texto. Entidade &lt. como <img> e <span>. No Flash. 19). &amp. os caracteres “menor que” (<) e “maior que” (>) servem para delimitar as marcas HTML. 4. Além dos símbolos “maior que” e “menor que”. 10.html = true. 100. &quot.autoSize = "left". o código de exemplo anterior do Flash exibe o seguinte texto no Stage: The <b> tag makes text appear bold.

ASCII) e &#x0026.createTextField("my_txt". PNG).) Em geral. especifique o caminho absoluto ou relativo para o arquivo da imagem (GIF. o exemplo a seguir insere um arquivo GIF localizado no mesmo diretório que o arquivo SWF (um endereço relativo. GIF. Entretanto.html = true. (E comercial . my_txt. 470 Trabalhando com texto e seqüências de caracteres . arquivos SWF e clipes de filmes em campos de texto dinâmico e de entrada. Incorporando uma imagem a um campo de texto: 1. 19). my_txt.". Para especificar as dimensões da mídia que está sendo incorporada. consulte “Marca de imagem” na página 465. Incorporando arquivos SWF e de imagem Para incorporar um arquivo de imagem ou SWF em um campo de texto. // tilde (Unicode) Sobre a incorporação de imagens. Crie um novo documento do Flash e salve-o como embedding. 100. my_txt. 10. você pode usar a marca <img> para incorporar arquivos de imagem (JPEG. Por exemplo. a imagem aparece na primeira linha do campo de texto.". O ActionScript a seguir demonstra como usar códigos de caracteres ASCII ou Unicode para incorporar um caractere de til (~): this. JPEG ou PNG) ou SWF no atributo src da marca <img>. 100.O Flash também suporta códigos de caracteres explícitos.) O Flash exibe a mídia incorporada em um campo de texto em seu tamanho total. (E comercial . como &#39.autoSize = "left". uma imagem incorporada em um campo de texto aparece na linha seguinte à marca <img>.Unicode).fla.htmlText += "\t" my_txt. arquivos SWF e clipes de filme em campos de texto No Flash Player 7 e versões posteriores. bem como em instâncias do componente TextArea. (Consulte “Sobre a especificação dos valores de altura e largura” na página 472. (Para obter uma lista completa de atributos da marca <img>.htmlText = "&#126.htmlText += "&#x007E. quando a marca <img> é o primeiro caractere no campo de texto. // tilde (ASCII) my_txt. 100. on-line ou off-line). use os atributos height e width da marca <img>.

) Por exemplo. muito provavelmente.jpg'>".gif'>". Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: this. O código anterior cria um novo campo de texto dinâmico no Stage (Palco). 4. Adicione o seguinte ActionScript abaixo do código adicionado na etapa anterior: this. image2_txt. Usando texto em formato HTML 471 . verifique se o URL tem o prefixo http://. o código a seguir insere um símbolo de clipe de filme com o identificador de vinculação symbol_ID em um campo de texto dinâmico com o nome de instância textField_txt. Salve o documento e selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. 400.gif no diretório atual. O campo de texto inferior deveria ter uma frase e a imagem de uma flor carregada do servidor remoto. informando que o Flash não pôde localizar um arquivo chamado beach. image1_txt.htmlText = "<p>Here's a picture from my vacation:<img src='beach. NO T A Ao usar URLs absolutos. O campo de texto superior deveria ter uma frase e. 3. (Para obter informações sobre a definição de um identificador de vinculação. consulte “Anexando um símbolo de clipe de filme ao Stage” na página 381. Incorporando símbolos de clipe de filme Para incorporar um símbolo do clipe de filme a um campo de texto.helpexamples. 50.html = true.2. 50. renomeie a imagem como beach. Também é possível inserir uma imagem usando um endereço absoluto.html = true.createTextField("image1_txt". image1_txt. 20. 150). 200. especifique o identificador de vinculação do símbolo para o atributo src da marca <img>. 10.gif e selecione Control > Test Movie para testar novamente o documento do Flash. 450.createTextField("image2_txt". image2_txt. O código anterior insere um arquivo JPEG localizado em um diretório em um servidor. ativa a formatação HTML e adiciona um texto ou imagem local ao campo de texto. Copie uma imagem GIF para o mesmo diretório de FLA. 50. uma mensagem de erro no painel Output (Saída). O arquivo SWF que contém esse código pode estar no disco rígido ou em um servidor.com/flash/images/image2.htmlText = "<p>Here's a picture from my garden:<img src='http://www. 150).

3. 5. Para dimensionar a imagem.0). Após o download completo de um arquivo de imagem ou SWF. 0. selecionando-a no Stage e pressionando F8 para abrir a caixa de diálogo Convert to Symbol (Converter em símbolo).fla. 2. 4. 200). Desenhe uma nova forma no Stage (Palco) ou selecione File (Arquivo) > Import (Importar) > Import to Stage (Importar para o palco) e depois selecione uma imagem com mais ou menos 100 pixels de largura por 100 pixels de altura. Converta a forma ou imagem importada na etapa anterior. de acordo com os valores especificados para height e width. 7. Sobre a especificação dos valores de altura e largura Se você especificar os atributos width e height para uma marca <img>.Para incorporar um clipe de filme a um campo de texto: 1. Adicione o seguinte ActionScript ao Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: this.createTextField("textField_txt". textField_txt. 300. Selecione o quadrado superior esquerdo da grade de ponto de registro e clique em Advanced (Avançado) para alternar para o modo avançado. ele aparecerá no espaço reservado. caso ainda não o tenha feito. Marque as caixas de seleção Export for ActionScript (Exportar para ActionScript) e Export in First Frame (Exportar no primeiro quadro). 6.html = true. 10. Defina o comportamento como Movie Clip (Clipe de filme) e digite um nome de símbolo descritivo. o arquivo SWF ou o clipe de filme. o ponto de registro de seu símbolo deve ser no ponto (0. Salve as alterações no documento do Flash. textField_txt. 8. será reservado espaço no campo de texto para o arquivo de imagem. é necessário inserir valores para os atributos height e width . 9. Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento do Flash. Crie um novo documento do Flash e salve-o como embeddedmc. O Flash dimensiona a mídia para cima ou para baixo. Para que um clipe de filme incorporado seja exibido adequada e completamente. 0.htmlText = "<p>Here's a movie clip symbol:<img src='img_id'>". Digite o identificador de vinculação img_id na caixa de texto Identifier (Identificador) e clique em OK. 472 Trabalhando com texto e seqüências de caracteres .

fla. usando o inspetor Properties. Assim.fla. Salve o documento atual como animation. Controlando a mídia incorporada com o ActionScript O Flash cria um novo clipe de filme para cada marca <img> e incorpora esse clipe ao objeto TextField. 10. O clipe de filme criado pelo Flash Player é adicionado como um clipe de filme-filho ao campo de texto que contém a imagem. Crie um novo documento do Flash. 3. 7. e depois mova a forma para o centro do Stage. Selecione Frame 20 (Quadro 20) na Timeline (Linha de tempo) e pressione F7 (Windows ou Macintosh) para inserir um novo quadro-chave em branco. 5. o Flash o insere no campo de texto em seu tamanho total e "quebra" novamente o texto em torno dele. é preciso gerar o arquivo SWF. Crie um novo arquivo FLA e salve-o como animationholder. é recomendável especificar a largura e a altura da imagem original para dispor o texto adequadamente em torno do espaço reservado para a imagem. Salve o arquivo na mesma pasta onde anteriormente foi criado o arquivo animation. Após o download completo de um arquivo de imagem ou SWF. a fim de que você possa carregá-lo em um arquivo FLA separado. Control (Controlar) > Test Movie (Testar filme) para visualizar a animação. 8.Se você não especificar os valores height e width. NO TA Se estiver carregando imagens dinamicamente em um campo de texto que contém texto. 4. Usando texto em formato HTML 473 . Para que este exercício funcione corretamente. Use a ferramenta Oval para desenhar um círculo azul no Stage. 6. Redimensione o tamanho do Stage (Palco) do documento com 100 pixels por 100 pixels. O atributo id da marca <img> permite atribuir um nome de instância ao clipe de filme criado. e depois mova-o para o centro do Stage. O arquivo SWF é criado no mesmo diretório que o arquivo FLA. usando o inspetor Properties (Propriedades). um arquivo SWF é incorporado a um campo de texto. 9. Clique em um quadro em branco entre Frame 1 (Quadro 1) e Frame 20 (Quadro 20) e defina o tipo de interpolação como Shape (Forma) no inspetor Properties. No exemplo a seguir. é possível controlar o clipe de filme com o ActionScript. Redimensione o círculo com 80 pixels por 80 pixels. 2. Use a ferramenta Rectangle (Retângulo) para desenhar um quadrado vermelho no Stage. Redimensione o quadrado com 80 pixels por 80 pixels. Para incorporar um arquivo SWF a um campo de texto: 1.fla. Selecione 11. no Frame 20. nenhum espaço será reservado para a mídia incorporada.

htm'><img src='home.12. Para controlar o arquivo SWF durante sua reprodução em um campo de texto. 0.htmlText = "Click the image to return home<a href='home. Salve as alterações no documento do Flash e selecione Control > Test Movie para visualizar a animação no campo de texto.html = true.jpg'></a>". Adicione o seguinte código ActionScript abaixo do código existente no Frame 1 (Quadro 1) da Timeline (Linha de tempo) principal: stop_btn.animation_mc. Adicione o seguinte código ActionScript ao Frame 1 da Timeline principal: this. o caminho totalmente qualificado para o clipe de filme recém-criado é textField_txt. textField_txt. textField_txt. complete o próximo exercício. Sobre a criação de hiperlinks a partir de uma mídia incorporada Para criar um hiperlink a partir de um arquivo de imagem. Para obter informações sobre como criar mídias incorporadas em um hiperlink. 474 Trabalhando com tex