Guia de referência do ActionScript
Transcrição
Guia de referência do ActionScript
Guia de referência do ActionScript Marcas comerciais Add Life to the Web, Afterburner, Aftershock, Andromedia, Allaire, Animation PowerPack, Aria, Attain, Authorware, Authorware Star, Backstage, Bright Tiger, Clustercats, ColdFusion, Contribute, Design In Motion, Director, Dream Templates, Dreamweaver, Drumbeat 2000, EDJE, EJIPT, Extreme 3D, Fireworks, Flash, Fontographer, FreeHand, Generator, HomeSite, JFusion, JRun, Kawa, Know Your Site, Knowledge Objects, Knowledge Stream, Knowledge Track, LikeMinds, Lingo, Live Effects, MacRecorder Logo and Design, Macromedia, Macromedia Action!, Macromedia Flash, Macromedia M Logo and Design, Macromedia Spectra, Macromedia xRes Logo and Design, MacroModel, Made with Macromedia, Made with Macromedia Logo and Design, MAGIC Logo and Design, Mediamaker, Movie Critic, Open Sesame!, Roundtrip, Roundtrip HTML, Shockwave, Sitespring, SoundEdit, Titlemaker, UltraDev, Web Design 101, what the web can be e Xtra 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. Neste caso, a Macromedia não é responsável pelo conteúdo de nenhum site vinculado. Se você acessar um dos sites da Web de terceiros mencionados neste guia, estará assumindo os riscos inerentes. A Macromedia oferece esses links apenas por questão de conveniência, e a inclusão de um link não significa que a Macromedia apóie ou aceite qualquer responsabilidade pelo conteúdo apresentado em 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. Isenção de responsabilidade da Apple A APPLE COMPUTER, INC. NÃO CONCEDE GARANTIAS, EXPLÍCITAS OU IMPLÍCITAS, RELATIVAS AO PACOTE DE SOFTWARES PARA COMPUTADORES EM ANEXO, BEM COMO À SUA COMERCIALIZAÇÃO OU ADEQUAÇÃO A QUALQUER FINALIDADE ESPECÍFICA. A EXCLUSÃO DE GARANTIAS IMPLÍCITAS NÃO É PERMITIDA EM CERTOS ESTADOS. PORTANTO, A EXCLUSÃO ACIMA TALVEZ NÃO SE APLIQUE AO SEU CASO. ESTA GARANTIA CONCEDE DIREITOS LEGAIS ESPECÍFICOS. VOCÊ PODE TER OUTROS DIREITOS QUE VARIAM CONFORME O ESTADO. Copyright © 2003 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úmero da peça: ZFL70M400PO Agradecimentos Diretor: Erick Vera Gerenciamento de projeto: Stephanie Gowin, Barbara Nelson Redação: Jody Bleyle, Mary Burger, Kim Diezel, Stephanie Gowin, Dan Harris, Barbara Herbert, Barbara Nelson, Shirley Ong, Tim Statler Editor responsável: Rosana Francescato Edição: Mary Ferguson, Mary Kraemer, Noreen Maher, Antonio Padial, Lisa Stanziano, Anne Szabla Gerenciamento de produção: Patrice O’Neill Design de mídia e produção: Adam Barnett, Christopher Basmajian, Aaron Begley, John Francis, Jeff Harmon Localização: Tim Hussey, Seungmin Lee, Masayo Noda, Simone Pux, Yuko Yagi, Heloisa Kinder Primeira edição: Agosto de 2003 Macromedia, Inc. 600 Townsend St. São Francisco, CA 94103 CONTEÚDO INTRODUÇÃO: Guia de introdução ao ActionScript . ....................... 9 Público-alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Requisitos do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Usando a documentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Convenções tipográficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Termos usados neste documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Recursos adicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 PARTE I: Bem-vindo ao ActionScript CAPÍTULO 1: Novidades do ActionScript no Flash MX 2004 . . . . . . . . . . . . . . . 13 Elementos de linguagem novos e alterados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Novo modelo de segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transferindo scripts existentes para o Flash Player 7. . . . . . . . . . . . . . . . . . . . . . . . Alterações do editor do ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alterações de depuração. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Novo modelo de programação orientado a objeto . . . . . . . . . . . . . . . . . . . . . . . . . CAPÍTULO 2: Conceitos básicos do ActionScript 13 15 15 16 18 18 . . . . . . . . . . . . . . . . . . . . . . . . 21 Diferenças entre o ActionScript e o JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Suporte a Unicode para ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Sobre tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Atribuindo tipos de dados a elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Sobre variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Usando operadores para manipular valores em expressões . . . . . . . . . . . . . . . . . . . 41 Especificando o caminho de um objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Usando funções internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Criando funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3 CAPÍTULO 3: Escrevendo e depurando scripts . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Controlando o momento em que o ActionScript é executado . . . . . . . . . . . . . . . . 52 Usando o painel Actions e a janela Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Usando o editor do ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Depurando scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Usando o painel Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Atualizando o Flash Player para teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 PARTE II: Manipulando eventos e criando interação CAPÍTULO 4: Manipulando eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Usando métodos de manipuladores de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Usando ouvintes de eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Usando manipuladores de eventos de botão e clipe de filme . . . . . . . . . . . . . . . . . 82 Criando clipes de filme com estados de botão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Escopo do manipulador de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Escopo da palavra-chave “this”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 CAPÍTULO 5: Criando interação com o ActionScript . . . . . . . . . . . . . . . . . . . . . . 87 Sobre eventos e interação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Controlando a reprodução do SWF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Criando interatividade e efeitos visuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Desconstruindo um script de exemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 PARTE III: Trabalhando com objetos e classes CAPÍTULO 6: Usando as classes internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Sobre classes e instâncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Visão geral das classes internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 CAPÍTULO 7: Trabalhando com clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . 119 Sobre o controle de clipes de filme com o ActionScript . . . . . . . . . . . . . . . . . . . . 120 Chamando vários métodos em um único clipe de filme. . . . . . . . . . . . . . . . . . . . 121 Carregando e descarregando arquivos SWF adicionais . . . . . . . . . . . . . . . . . . . . . 121 Especificando uma Timeline raiz para arquivos SWF carregados . . . . . . . . . . . . . 122 Carregando JPEGs em clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Alterando a posição e a aparência de um clipe de filme . . . . . . . . . . . . . . . . . . . . 123 Arrastando clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Criando clipes de filme durante a execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Adicionando parâmetros aos clipes de filme criados dinamicamente . . . . . . . . . . 127 Gerenciando profundidades do clipe de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Desenhando formas com o ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4 Conteúdo Usando clipes de filme como máscaras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Identificando eventos do clipe de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Atribuindo uma classe a um símbolo de clipe de filme. . . . . . . . . . . . . . . . . . . . . Inicializando as propriedades de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CAPÍTULO 8: Trabalhando com texto . 130 131 131 133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Usando a classe TextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando campo de texto durante a execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usando a classe TextFormat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formatando o texto com Cascading Style Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . Usando o texto em formato HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando texto de rolagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exibindo as propriedades do campo de texto para depuração. . . . . . . . . . . . . . . . CAPÍTULO 9: Criando classes com o ActionScript 2 . 136 137 138 139 148 155 157 . . . . . . . . . . . . . . . . . . . . 159 Princípios da programação orientada a objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . Usando classes: um exemplo simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando e usando classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Membros de instâncias e classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando e usando interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Noções básicas de caminho de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usando pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Importando classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Métodos get/set implícitos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando classes dinâmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Como as classes são compiladas e exportadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 161 165 169 171 173 175 175 177 178 179 PARTE IV: Trabalhando com mídia e dados externos CAPÍTULO 10: Trabalhando com dados externos . . . . . . . . . . . . . . . . . . . . . . . 183 Enviando e carregando variáveis para/de uma origem remota . . . . . . . . . . . . . . . 183 Enviando mensagens para/do Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Recursos de segurança do Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 CAPÍTULO 11: Trabalhando com mídia externa. . . . . . . . . . . . . . . . . . . . . . . . . . 201 Visão geral de carregamento de mídia externa . . . . . . . . . . . . . . . . . . . . . . . . . . . Carregando SWFs e JPEGs externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Carregando arquivos MP3 externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lendo marcas de ID3 em arquivos MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reproduzindo arquivos FLV externos dinamicamente . . . . . . . . . . . . . . . . . . . . . Pré-carregando mídia externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conteúdo 202 202 204 205 206 208 5 PARTE V: Referência CAPÍTULO 12: Dicionário do ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Exemplo de entrada da maioria dos elementos do ActionScript . . . . . . . . . . . . . . 215 Exemplo de entrada de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Conteúdo do dicionário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Classe Accessibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Classe Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Classe Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Classe Boolean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Classe Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Classe Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Classe Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Classe ContextMenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Classe ContextMenuItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Classe CustomActions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Classe Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Classe Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Classe Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Classe key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 Classe LoadVars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Classe LocalConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Classe Math. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Classe Microphone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Classe Mouse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Classe MovieClip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Classe MovieClipLoader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Classe NetConnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Classe NetStream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 Classe Number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 Classe Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 Classe PrintJob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 Classe Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Classe SharedObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 Classe Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 Classe String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 Classe System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 Classe TextField. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 Classe TextFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 Classe Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808 Classe XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 Classe XMLNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 Classe XMLSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842 6 Conteúdo APÊNDICE A: Mensagens de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 APÊNDICE B: Associatividade e precedência de operadores . . . . . . . . . . . . . . 857 APÊNDICE C: Teclas do teclado e valores de códigos de teclas . . . . . . . . . . . . 859 Letras de A a Z e números padrão de 0 a 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Teclas do teclado numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Teclas de função . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outras teclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . APÊNDICE D: Criando Scripts para versões anteriores do Flash Player 859 861 862 862 . . . . . . 865 Sobre a especificação de versões anteriores do Flash Player. . . . . . . . . . . . . . . . . . 865 Usando o Flash MX 2004 para criar conteúdo para o Flash Player 4 . . . . . . . . . . 866 APÊNDICE E: Programação orientada a objeto com o ActionScript 1 . . . . . . . . 869 Sobre o ActionScript 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869 ÍNDICE REMISSIVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879 Conteúdo 7 8 Conteúdo INTRODUÇÃO Guia de introdução ao ActionScript O Macromedia Flash MX 2004 e o Flash MX Professional 2004 são as ferramentas de criação padrão profissionais para a produção de experiências de grande impacto na Web. ActionScript é a linguagem usada para desenvolver um aplicativo em Flash. Para usar o Flash, não é necessário ActionScript mas, se você desejar fornecer interatividade com o usuário, trabalhar com objeto diferentes daqueles contidos no Flash (como botões e clipes de filme) ou transformar de qualquer outro modo um arquivo SWF em uma experiência de usuário mais eficiente, use ActionScript. Público-alvo Este manual pressupõe que o Flash MX 2004 ou Flash MX Professional 2004 esteja instalado e que você saiba como usá-lo. É necessário saber como colocar objeto no Stage (Palco) e manipulálos no ambiente de criação do Flash. Se você já tiver escrito programas anteriormente, o ActionScript parecerá familiar. Caso contrário, não será difícil aprender a usá-lo. É fácil começar com comandos bem simples e aumentar a complexidade à medida que você avança. Requisitos do sistema O ActionScript não tem qualquer requisito de sistema além do Flash MX 2004 ou Flash MX Professional 2004. Entretanto, a documentação pressupõe que você esteja utilizando as configurações de publicação padrão para os arquivos do Flash: Flash Player 7 e ActionScript 2. Se você alterar alguma dessas configurações, as explicações e os exemplos de código mostrados na documentação poderão não funcionar corretamente. Usando a documentação Este documento oferece uma visão geral da sintaxe do ActionScript, informações sobre como usar o ActionScript ao trabalhar com diferentes tipos de objeto e detalhes sobre a sintaxe e o uso de cada elemento da linguagem. Comece aprendendo a terminologia e os conceitos básicos usados no restante do documento (consulte o Capítulo 2, “Conceitos básicos do ActionScript”, na página 21). Em seguida, aprenda o mecanismo para escrever e depurar scripts Flash (consulte o Capítulo 3, “Escrevendo e depurando scripts”, na página 51). Antes de escrever seus próprios scripts, leia as seções “Write Scripts with ActionScript” (Criar scripts com ActionScript) e “Create a Form with Conditional Logic and Send Data” (Criar um formulário com lógica condicional e enviar dados), que oferecem uma introdução prática ao trabalho com ActionScript. Para localizar essas seções, selecione Help (Ajuda) > How Do I (Como) > Quick Tasks (Tarefas rápidas). 9 Depois de entender os conceitos básicos, você estará pronto para usar as informações no restante deste documento que se aplicarem ao efeito específico a ser obtido. Por exemplo, para saber como escrever um script que execute uma certa ação quando o usuário clica com o mouse, consulte o Capítulo 4, “Manipulando eventos”, na página 79. Para localizar informações sobre um certo comando que você deseja usar, procure a respectiva entrada no Capítulo 12, “Dicionário do ActionScript”, na página 215; cada elemento de linguagem está listado ali em ordem alfabética. Convenções tipográficas As seguintes convenções tipográficas são usadas neste manual: • • Fonte de código indica código do ActionScript. indica um elemento, como um parâmetro ou nome de objeto do ActionScript, substituído por um texto específico quando você escreve um script. Fonte de código em itálico 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 Capítulo 2, “Conceitos básicos do ActionScript”, na página 21. Recursos adicionais Há uma documentação específica sobre o Flash e produtos relacionados disponível separadamente. • Para obter informações sobre como trabalhar no ambiente de criação do Flash, consulte • • Usando a Ajuda do Flash. Para obter informações sobre como trabalhar com componentes, consulte Usando a Ajuda de componentes. Para obter informações sobre como criar aplicativos de comunicação com o Flash Communication Server, consulte Developing Communications Applications (Desenvolvendo aplicativos de comunicação) e Managing Flash Communication Server (Gerenciando o Flash Communication Server). Para obter informações sobre como acessar serviços da Web com aplicativos do Flash, consulte Using Flash Remoting (Usando o Flash Remoting). O site Macromedia DevNet na Web (www.macromedia.com/devnet) é atualizado periodicamente com as informações mais recentes sobre o Flash, além de recomendações de usuários experientes, tópicos avançados, exemplos, dicas 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 Centro de Suporte do Macromedia Flash (www.macromedia.com/support/flash) fornece TechNotes, atualizações de documentação e links para recursos adicionais na comunidade Flash. 10 Introdução: Guia de introdução ao ActionScript Esta parte inclui informações básicas sobre a linguagem ActionScript. O Capítulo 1 contém informações sobre as novidades ou as alterações no ActionScript e no Flash Player 7. Se você já tiver usado o ActionScript antes, verifique essas informações com atenção. Se estiver usando o ActionScript pela primeira vez, leia os Capítulos 2 e 3 a fim de obter uma boa base para entender a terminologia e a sintaxe do ActionScript e para aprender a criar e depurar seus scripts. Capítulo 1: Novidades do ActionScript no Flash MX 2004 . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Capítulo 2: Conceitos básicos do ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Capítulo 3: Escrevendo e depurando scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Parte I PARTE I Bem-vindo ao ActionScript CAPÍTULO 1 Novidades do ActionScript no Flash MX 2004 O Macromedia Flash MX 2004 e o Macromedia Flash MX Professional 2004 oferecem vários aperfeiçoamentos que facilitam a criação de scripts mais eficientes com uso da linguagem ActionScript. Esses novos recursos, analisados neste capítulo, incluem novos elementos de linguagem, ferramentas de edição e depuração melhoradas (consulte “Alterações do editor do ActionScript” na página 16 e “Alterações de depuração” na página 18) e a introdução a um modelo de programação mais orientado a objeto (consulte “Novo modelo de programação orientado a objeto” na página 18). Elementos de linguagem novos e alterados Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na guia Help (Ajuda). Esta seção descreve os elementos da linguagem ActionScript novos ou alterados no Flash MX 2004. Para incluir esses elementos em seus scripts, use o Flash Player 7 (o padrão) ao publicar documentos. • Os métodos Array.sort() e Array.sortOn() permitem adicionar parâmetros para • • • • • • especificar opções de classificação adicionais, como ordem crescente e decrescente, distinção entre maiúsculas e minúsculas e assim por diante. As propriedades Button.menu, MovieClip.menu e TextField.menu funcionam com as novas classes ContextMenu e ContextMenuItem para permitir associar itens de menus de contexto a objeto Button, MovieClip ou TextField. A Classe ContextMenu e a Classe ContextMenuItem permitem personalizar o menu de contexto exibido quando um usuário clica com o botão direito do mouse (Microsoft Windows) ou clica e pressiona Control (Macintosh) no Flash Player. A Classe Error e os comandos throw e try..catch..finally permitem implementar uma manipulação de exceções mais eficiente. Os métodos LoadVars.addRequestHeader() e XML.addRequestHeader() adicionam ou alteram cabeçalhos de solicitação HTTP (como Content-Type ou SOAPAction) enviados com ações POST. A função MMExecute() permite emitir comandos de API do Flash JavaScript no ActionScript. (Somente Windows) O ouvinte de eventos Mouse.onMouseWheel é gerado quando o usuário usa a esfera do mouse para rolagem. 13 • O método MovieClip.getNextHighestDepth() permite criar instâncias de MovieClip • • • • • • • • • • • • • • • 14 durante a execução e garantir que seus objeto sejam renderizados na frente dos outros objeto no espaço de ordem z de um clipe de filme pai. O método MovieClip.getInstanceAtDepth() permite acessar dinamicamente instâncias de MovieClip criadas usando a profundidade como índice de pesquisa. O método MovieClip.getSWFVersion() permite determinar qual versão do Flash Player um SWF carregado suporta. O método MovieClip.getTextSnapshot() e o Objeto TextSnapshot permitem trabalhar com texto em campos de texto estáticos de um clipe de filme. A propriedade MovieClip._lockroot permite especificar que um clipe de filme funcione como _root para os clipes de filme carregados nele, ou que o significado de _root em um clipe de filme não seja alterado se o clipe de filme for carregado em outro clipe. A Classe MovieClipLoader permite monitorar o progresso de arquivos conforme eles são carregados em clipes de filme. A Classe NetConnection e a Classe NetStream permitem transmitir em fluxo arquivos de vídeo locais (arquivos FLV). A Classe PrintJob fornece a você (e ao usuário) mais controle sobre a impressão a partir do Flash Player. O manipulador de eventos Sound.onID3 fornece acesso a dados ID3 associados a um objeto Sound que contém um arquivo MP3. A propriedade Sound.ID3 fornece acesso aos metadados que fazem parte de um arquivo MP3. A Classe System tem novos objeto e métodos, e o System.capabilities object tem várias novas propriedades. A propriedade TextField.condenseWhite permite remover o espaço em branco extra de campos de texto HTML renderizados em um navegador. A propriedade TextField.mouseWheelEnabled permite especificar se o conteúdo de um campo de texto deve rolar quando o ponteiro do mouse é posicionado sobre o campo e o usuário rola a esfera do mouse. A classe Classe TextField.StyleSheet permite criar um objeto de folha de estilos com regras de formatação de texto, como tamanho de fonte, cor e outros estilos de formatação. A propriedade TextField.styleSheet permite anexar um objeto de folha de estilos a um campo de texto. O método TextFormat.getTextExtent() aceita um novo parâmetro, e o objeto retornado contém um novo membro. O método XML.addRequestHeader() permite adicionar ou alterar cabeçalhos de solicitação HTTP (como Content-Type ou SOAPAction) enviados com ações POST. Capítulo 1: Novidades do ActionScript no Flash MX 2004 Novo modelo de segurança Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). As regras do Flash Player que determinam se dois domínios são idênticos ou diferentes mudaram no Flash Player 7. Além disso, regras que determinam se e como um arquivo SWF servido de um domínio HTTP pode acessar um SWF ou carregar dados de um domínio HTTPS foram alteradas. Para obter mais informações, consulte “Recursos de segurança do Flash Player” na página 195. Na maioria dos casos, essas alterações não o afetam, a menos que você esteja transferindo arquivos SWF existentes para o Flash Player 7. Entretanto, se você possuir SWFs publicados para o Flash Player 6 ou anterior que carreguem dados de um arquivo armazenado em um servidor, e o SWF chamador for executado no Flash Player 7, o usuário poderá ver uma caixa de diálogo que não havia aparecido antes, perguntando se o acesso deve ser permitido. Para evitar que essa caixa de diálogo apareça, implemente um arquivo de diretivas no site onde os dados estão armazenados. Para obter mais informações, consulte “Sobre compatibilidade com os modelos de segurança anteriores do Flash Player” na página 199. Transferindo scripts existentes para o Flash Player 7 Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na guia Help (Ajuda). Assim como em qualquer nova versão, o Flash Player 7 oferece suporte a mais comandos do ActionScript do que versões anteriores; você pode usar esses comandos para implementar scripts mais eficientes. (Consulte “Elementos de linguagem novos e alterados” na página 13.) Além disso, o comportamento de alguns recursos existentes foi alterado. Se possuir scripts escritos para o Flash Player 6 ou anterior que deseja publicar no Flash Player 7, modifique os scripts para que atendam à implementação do Flash Player 7 e funcionem como determinado. Essas modificações são analisadas nesta seção. Conformidade com ECMA-262 edição 4 Foram implementadas diversas alterações no Flash Player 7 para atender mais exatamente à proposta do padrão ECMA-262 edição 4 (consulte www.mozilla.org/js/language/es4/index.html). Além das técnicas de programação baseadas em classes disponíveis no ActionScript 2 (consulte “Novo modelo de programação orientado a objeto” na página 18), outros recursos foram adicionados e certos comportamentos foram alterados. Além disso, ao publicar no Flash Player 7, você pode declarar o tipo de objeto de uma variável ao criá-la; esse recurso chama-se definição de tipos de dados estritos. Você também pode converter um tipo de objeto em outro. Para obter mais informações, consulte “Atribuição estrita de tipos de dados” na página 35 e “Convertendo objeto” na página 36. Esses recursos não exigem a atualização de scripts existentes; entretanto, você pode usá-los ao publicar seus scripts em Flash Player 7 e, posteriormente, continuar a revisá-los e aperfeiçoá- los. Transferindo scripts existentes para o Flash Player 7 15 Lembre-se de que as alterações a seguir, que também aumentam a conformidade com ECMA, podem fazer com que scripts existentes passem a funcionar de forma diferente. Se tiver usado esses recursos em scripts existentes que deseja publicar no Flash Player 7, revise as alterações feitas para garantir que o código ainda funcione como desejado ou para determinar se é preciso reescrevê-lo. SWF publicado para Flash Player 7 SWF publicado para versões anteriores do Flash Player Suporte para distinção entre maiúsculas e minúsculas (nomes de variáveis que diferem somente no uso de maiúsculas são interpretados como variáveis diferentes). Essa alteração também afeta arquivos carregados com #include e variáveis externas carregadas com LoadVars.load(). Para obter mais informações, consulte “Distinção entre maiúsculas e minúsculas” na página 25. Não há suporte para distinção entre maiúsculas e minúsculas (nomes de variáveis que diferem somente no uso de maiúsculas são interpretados como sendo a mesma variável). Avaliar undefined em um contexto numérico retorna NaN. Avaliar undefined em um contexto numérico retorna 0. O valor de undefined.toString() é undefined. O valor de undefined.toString() é "" (uma seqüência de caracteres vazia). Quando você converter uma seqüência de caracteres em um valor booleano, o resultado será true se a seqüência tiver comprimento superior a zero; o resultado será false para uma seqüência vazia. Quando você converter uma seqüência de caracteres em um valor booleano, a seqüência será convertida primeiro em um número; o resultado será true se o número for diferente de zero; caso contrário, será false. Alterações do editor do ActionScript O editor do ActionScript foi atualizado de várias formas para torná-lo mais eficiente e fácil de usar. Essas alterações são resumidas nesta seção. Quebra automática de linha Você pode usar o menu pop-up Options (Opções) no painel Script, no painel Debugger (Depurador) e no painel Output (Saída) para ativar ou desativar a quebra automática de linha. Pode também alternar a quebra automática de linha usando o menu pop-up no painel Actions (Ações). O atalho de teclado é Control+Shift+W (Windows) ou Command+Shift+W (Macintosh). Exibindo a ajuda contextual Quando o ponteiro é posicionado sobre um elemento da linguagem ActionScript na caixa de ferramentas Actions ou no painel Script, você pode usar o item View Help (Exibir Ajuda) no menu de contexto para exibir uma página de ajuda sobre esse elemento. Quando você seleciona Import Script (Importar script) no menu pop-up no painel Actions, o script importado é copiado para o script no ponto de inserção do arquivo de código. Em versões anteriores do Flash, a importação de um script substituía o conteúdo do script existente. Importando scripts 16 Capítulo 1: Novidades do ActionScript no Flash MX 2004 Pontos de interrupção de clique único Para adicionar um ponto de interrupção de depuração antes de uma linha de código no painel Debugger ou no painel Script do painel Actions, clique na margem esquerda. Nas versões anteriores do Flash, clicar na margem esquerda selecionava uma linha de código. A nova forma de selecionar uma linha de código é clicar e pressionar Control (Windows) ou clicar e pressionar Command (Macintosh). Em versões anteriores do Flash, você podia trabalhar no painel Actions no modo normal, em que preenchia as opções e os parâmetros para criar o código, ou no modo especialista, em que adicionava comandos diretamente ao painel Script. No Flash MX 2004 e no Flash MX Professional 2004, você só pode trabalhar no painel Actions adicionando comandos diretamente ao painel Script. Você ainda pode arrastar comandos da caixa de ferramentas Actions para o painel Script ou usar o botão Add (+) (Adicionar) acima do painel Script para adicionar comandos a um script. Os modos normal e especialista não estão mais no painel Actions Prendendo vários scripts Você pode prender vários scripts em um arquivo FLA ao longo da parte inferior do painel Script no painel Actions. Em versões anteriores do Flash, só era possível prender um script por vez. Navegador Script (somente Flash Professional) O lado esquerdo do painel Actions agora contém dois painéis: a caixa de ferramentas Actions e um novo navegador Script. O navegador Script é uma representação visual da estrutura do arquivo FLA; você pode navegar pelo arquivo FLA aqui para localizar código ActionScript. Janela Script integrada para editar arquivos externos (somente Flash Professional) Você pode usar o editor do ActionScript em uma janela Script (separada do painel Actions) para escrever e editar arquivos de script externos. Na janela Script, há suporte para a sinalização da sintaxe por cores, referências de código e outras preferências; a caixa de ferramentas Actions também está disponível. Para exibir a janela Script, use File (Arquivo) > New (Novo) e selecione o tipo de arquivo externo a ser editado. É possível abrir vários arquivos externos ao mesmo tempo; os nomes dos arquivo são exibidos em guias na parte superior da janela Script. (As guias aparecem somente no Windows.) Alterações do editor do ActionScript 17 Alterações de depuração Esta seção descreve as alterações que melhoram a depuração de scripts. Janela Output alterada para painel Output Agora você pode mover e acoplar o painel Output da mesma forma que qualquer outro painel do Flash. Relatório de erros aperfeiçoado no tempo de compilação Além de fornecer uma manipulação de exceções mais eficiente, o ActionScript 2 exibe diversos novos erros durante a compilação. Para obter mais informações, consulte Apêndice A, “Mensagens de erro”, na página 851. Manipulação de exceções melhorada A classe Error e os comandos throw e try..catch..finally permitem implementar uma manipulação de exceções mais eficiente. Novo modelo de programação orientado a objeto A linguagem ActionScript cresceu e desenvolveu-se desde sua introdução, há vários anos. Com cada nova versão do Flash, mais palavras-chave, objeto, métodos e outros elementos são adicionados à linguagem. Entretanto, ao contrário de versões anteriores do Flash, o Flash MX 2004 e o Flash MX Professional 2004 apresentam diversos novos elementos de linguagem que implementam a programação orientada a objeto de uma forma mais padronizada do que antes. Como esses elementos de linguagem representam um aperfeiçoamento significativo da linguagem ActionScript básica, eles representam uma nova versão do próprio ActionScript 2. O ActionScript 2 não é uma nova linguagem. Em vez disso, ele abrange um conjunto básico de elementos de linguagem que facilitam desenvolver programas orientados a objeto. Com a introdução de palavras-chave como class, interface, extends e implements, agora é mais fácil para os programadores familiarizados com outras linguagens aprender a sintaxe do ActionScript. Novos programadores aprendem uma terminologia mais padronizada que podem aplicar a outras linguagens orientadas a objeto que venham a estudar no futuro. O ActionScript 2 oferece suporte a todos os elementos padrão da linguagem ActionScript; ele simplesmente permite escrever scripts que atendam melhor aos padrões usados em outras linguagens orientadas a objeto, como JavaScript e Java. O ActionScript 2 deve interessar principalmente a desenvolvedores de Flash intermediários ou avançados que criem aplicativos que precisam da implementação de classes e subclasses. O ActionScript 2 também permite declarar o tipo de objeto de uma variável quando você a cria (consulte “Atribuição estrita de tipos de dados” na página 35) e fornece erros de compilador bem aprimorados (consulte Apêndice A, “Mensagens de erro”, na página 851). 18 Capítulo 1: Novidades do ActionScript no Flash MX 2004 Os novos elementos de linguagem do ActionScript 2 estão listados abaixo. • • • • • • • • • • • class extends implements interface dynamic static public private get set import As principais considerações sobre o ActionScript 2 incluem os seguintes pontos: • Os scripts que usam elementos de linguagem do ActionScript 2 devem ser armazenados como • • arquivos de script externos, com uma única classe definida em cada script; ou seja, o painel Actions não oferece suporte para a terminologia do ActionScript 2. (A única exceção é o comando import, que é suportado no painel Actions.) Você pode importar arquivos de classes individuais implicitamente (armazenando-os em um local especificado por caminhos de pesquisa globais ou específicos de documentos) ou explicitamente (usando o comando import); é possível importar (coleções de arquivos de classe em um diretório) usando caracteres curingas. Os aplicativos desenvolvidos com o ActionScript 2 são suportados pelo Flash Player 6 e versões posteriores. Entretanto, os arquivos que usam o ActionScript 2 e especificam o Flash Player 6 implementam a distinção entre maiúsculas e minúsculas durante a compilação, mas não durante a execução; isso pode causar conflitos de tempo de execução, cujo diagnóstico pode ser difícil. Para obter mais informações, consulte “ActionScript 2, Flash Player 6 e distinção entre maiúsculas e minúsculas” na página 26. Para obter mais informações sobre como usar o ActionScript 2 para escrever programas orientados a objeto no Flash, consulte o Capítulo 9, “Criando classes com o ActionScript 2”, na página 159. Novo modelo de programação orientado a objeto 19 20 Capítulo 1: Novidades do ActionScript no Flash MX 2004 CAPÍTULO 2 Conceitos básicos do ActionScript O ActionScript possui regras de gramática e pontuação que determinam quais caracteres e palavras são usados para criar significado e em que ordem eles podem ser escritos. Por exemplo, no inglês, um ponto encerra uma frase. No ActionScript, um ponto-e-vírgula encerra um comando. As regras gerais a seguir aplicam-se a todo o ActionScript. A maioria dos termos do ActionScript também tem requisitos individuais; para ver as regras de um termo específico, consulte sua entrada no Capítulo 12, “Dicionário do ActionScript”, na página 215. Diferenças entre o ActionScript e o JavaScript Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Suporte a Unicode para ActionScript O Macromedia Flash MX 2004 e o Macromedia Flash MX Professional 2004 oferecem suporte à codificação de texto Unicode para o ActionScript. Isso significa que é possível incluir texto em diferentes idiomas em um arquivo do ActionScript. Por exemplo, você pode incluir texto em inglês, japonês e francês no mesmo arquivo. 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. Selecione UTF-8 ou Default Encoding (Codificação padrão). UTF-8 é o formato Unicode de 8 bits; Default Encoding é a forma de codificação suportada pelo idioma que seu sistema utiliza, chamada também página de código tradicional. Em geral, ao importar ou exportar arquivos do ActionScript em formato UTF-8, use a preferência UTF-8. Se importar ou exportar arquivos na página de código tradicional do sistema, use a preferência Default Encoding. Se o texto dos scripts não tiver a aparência esperada quando você abrir ou importar um arquivo, altere a preferência de codificação de importação. Se receber uma mensagem de aviso ao exportar arquivos do ActionScript, altere a preferência de codificação de exportação ou desative o aviso nas preferências do ActionScript. 21 Para selecionar opções de codificação de texto para importação ou exportação de arquivos do ActionScript: 1 Na caixa de diálogo Preferences (Preferências), em Edit (Editar) > Preferences, clique na guia ActionScript. 2 Em Editing Options (Opções de edição), siga uma ou ambas as instruções: ■ ■ Em Open/Import (Abrir/importar), selecione UTF-8 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 do seu sistema. Em Save/Export (Salvar/exportar), selecione UTF-8 para salvar ou exportar usando a codificação Unicode, ou selecione Default Encoding para salvar ou exportar usando a forma de codificação do idioma do seu sistema. Para ativar ou desativar o aviso de codificação de exportação: 1 Na caixa de diálogo Preferences, em Edit > Preferences, clique na guia Warnings (Avisos). 2 Selecione ou cancele a seleção de Warn on Encoding Conflicts When Exporting .as Files (Avisar em conflitos de codificação ao exportar arquivos .as). Terminologia Como em toda linguagem de script, o ActionScript usa sua própria terminologia. A lista a seguir fornece uma introdução aos termos importantes do ActionScript. são comandos que instruem um arquivo SWF a fazer algo enquanto é reproduzido. Por exemplo, gotoAndStop() envia a reprodução para um quadro ou identificador específico. Neste manual, os termos ação e comando são equivalentes. Ações Booleano é um valor true (verdadeiro) ou false (falso). Classes são tipos de dados que podem ser criados para definir um novo tipo de objeto. Para definir uma classe, use a palavra-chave class em um arquivo de script externo, não em um script escrito no painel Actions (Ações). Constantes são elementos que não se alteram. Por exemplo, a constante Key.TAB sempre tem o mesmo significado: ela indica a tecla Tab em um teclado. Constantes são úteis para comparar valores. são funções usadas para definir as propriedades e os métodos de uma classe. Por definição, construtores são funções em uma definição de classe que têm o mesmo nome que a classe. Por exemplo, o código abaixo define uma classe Circle (Círculo) e implementa uma função construtora : Construtores // arquivo Circle.as class Circle { private var radius:Number private var circumference:Number // construtor function Circle(radius:Number) { circumference = 2 * Math.PI * radius; } } 22 Capítulo 2: Conceitos básicos do ActionScript O termo construtor também é usado quando você cria (instancia) um objeto baseado em uma classe específica. Os comandos abaixo são construtores para a classe Array interna e a classe Circle personalizada: my_array:Array = new Array(); my_circle:Circle = new Circle(); Tipos de dados descrevem que tipos de informações um elemento do ActionScript ou variável pode conter. Os tipos de dados do ActionScript são String (Seqüência de caracteres), Number (Número), Boolean (Booleano), Object (Objeto), MovieClip (Clipe de filme), Function (Função), null (nulo) e undefined (indefinido). Para obter mais informações, consulte “Sobre tipos de dados” na página 31. Eventos são ações que ocorrem enquanto um arquivo SWF é reproduzido. Por exemplo, são gerados eventos diferentes quando um clipe de filme é carregado, quando a reprodução entra em um quadro, quando o usuário clica em um botão ou clipe de filme, ou quando digita no teclado. Manipuladores de eventos são ações especiais que gerenciam eventos como mouseDown ou load. Existem dois tipos de manipuladores de eventos do ActionScript: métodos de manipulador de eventos e ouvintes de eventos. (Existem também dois manipuladores de eventos, on() e onClipEvent(), que você pode atribuir diretamente a botões e clipes de filme.) Na caixa de ferramentas Actions, cada objeto do ActionScript com métodos de manipulador de eventos ou ouvintes de eventos tem uma subcategoria chamada Events (Eventos) ou Listeners (Ouvintes). Alguns comandos podem ser usados como manipuladores de eventos e como ouvintes de eventos e são incluídos nas duas subcategorias. Expressões são combinações legais de símbolos do ActionScript que representam um valor. Uma expressão consiste em operadores e operandos. Por exemplo, na expressão x + 2, x e 2 são operandos e + é um operador. Funções são blocos de código reutilizáveis que podem receber parâmetros e retornar um valor. Para obter mais informações, consulte “Criando funções” na página 48. são nomes usados para indicar uma variável, uma propriedade, um objeto, uma função ou um método. O primeiro caractere deve ser uma letra, um sublinhado (_) ou um cifrão ($). Cada caractere seguinte deve ser uma letra, um número, um sublinhado ou um cifrão. Por exemplo, firstName é o nome de uma variável. Identificadores Instâncias são objeto que pertencem a certas classes. Cada instância de uma classe contém todas as propriedades e métodos dessa classe. Por exemplo, todos os clipes de filme são instâncias da classe MovieClip, portanto você pode usar qualquer método ou propriedade da classe MovieClip com qualquer instância de clipe de filme. Nomes de instância são nomes exclusivos que permitem fazer referência a instâncias de botões e clipes de filme em scripts. Use o inspetor Property (Propriedades) para atribuir nomes a instâncias no Stage (Palco). Por exemplo, um símbolo principal na biblioteca pode ser chamado de counter e as duas instâncias desse símbolo no arquivo SWF podem ter os nomes de instância scorePlayer1_mc e scorePlayer2_mc. O seguinte código define uma variável denominada score em cada instância de clipe de filme por meio de nomes de instâncias: _root.scorePlayer1_mc.score += 1; _root.scorePlayer2_mc.score -= 1; Você pode usar sufixos especiais ao nomear instâncias para que referências de código (consulte “Usando referências de código” na página 60) apareçam à medida que você digita o código. Para obter mais informações, consulte “Usando sufixos para ativar referências de código” na página 58. Terminologia 23 Palavras-chave são palavras reservadas que têm significado especial. Por exemplo, var é uma palavra-chave usada para declarar variáveis locais. Não é possível usar uma palavra-chave como um identificador. Por exemplo, var não é um nome de variável legal. Métodos são funções associadas a uma classe. Por exemplo, getBytesLoaded() é um método interno associado à classe MovieClip. Você também pode criar funções que funcionem como métodos, para objeto baseados em classes internas ou objeto baseados nas classes criadas por você. Por exemplo, no código abaixo, clear() torna-se um método de um objeto controller que você já definiu: function reset(){ this.x_pos = 0; this.x_pos = 0; } controller.clear = reset; controller.clear(); são coleções de propriedades e métodos; cada objeto tem seu próprio nome e é uma instância de uma classe específica. Objeto internos são predefinidos na linguagem ActionScript. Por exemplo, o objeto interno Date fornece informações sobre o relógio do sistema. Objeto Operadores são termos que calculam um novo valor de um ou mais valores. Por exemplo, o operador de adição (+) adiciona dois ou mais valores para produzir um novo valor. Os valores manipulados pelos operadores são denominados operandos. Parâmetros (também denominados argumentos) são espaços reservados que permitem passar valores para funções. Por exemplo, a seguinte função welcome() usa dois valores que recebe nos parâmetros firstName e hobby: function welcome(firstName, hobby) { welcomeText = "Hello, " + firstName + "I see you enjoy " + hobby; } Propriedades são atributos que definem um objeto. Por exemplo, _visible é uma propriedade de todos os clipes de filme que define se eles estão visíveis ou ocultos. são endereços hierárquicos de nomes de instâncias de clipes de filme, variáveis e objeto em um SWF. Você pode dar um nome a uma instância de clipe de filme no inspetor Property do clipe de filme. (A Timeline (Linha de tempo) principal sempre tem o nome _root.) Você pode usar um caminho de destino para direcionar uma ação em um clipe de filme, ou para obter ou definir o valor de uma variável. Por exemplo, o seguinte comando é o caminho de destino da variável volume dentro do clipe de filme stereoControl: Caminhos de destino _root.stereoControl.volume Para obter mais informações sobre caminhos de destino, consulte “Absolute and relative target paths” (Caminhos de destino absolutos e relativos) em Usando a Ajuda do Flash. As variáveis são identificadores que contêm valores de qualquer tipo de dado. É possível criar, alterar e atualizar variáveis. Os valores que elas armazenam podem ser recuperados para uso em scripts. No exemplo a seguir, os identificadores no lado esquerdo dos sinais de igual são variáveis: var x = 5; var name = "Lolo"; var c_color = new Color(mcinstanceName); Para obter mais informações sobre variáveis, consulte “Sobre variáveis” na página 36. 24 Capítulo 2: Conceitos básicos do ActionScript Sintaxe Como em qualquer linguagem, o ActionScript tem regras de sintaxe a serem seguidas para criar scripts que possam ser compilados e executados corretamente. Esta seção descreve os elementos que compõem a sintaxe do ActionScript. Distinção entre maiúsculas e minúsculas Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Em uma linguagem de programação que distingue maiúsculas e minúsculas, nomes de variáveis que diferem somente em sua primeira letra (book e Book) são considerados diferentes. No Flash, a distinção entre maiúsculas e minúsculas é implementada de forma um pouco diferente, dependendo da versão do Flash Player especificada e da sua versão do ActionScript. Assim, independentemente do Flash Player especificado, é recomendável seguir convenções de maiúsculas e minúsculas consistentes, como as usadas neste manual, para facilitar a identificação de nomes de funções e variáveis no código do ActionScript. Quando Syntax coloring (Sinalização da sintaxe por cores) estiver ativada, os elementos de linguagem escritos corretamente em maiúsculas ou minúsculas ficarão azuis por padrão. Para obter mais informações, consulte “Palavras-chave” na página 30 e “Realce de sintaxe” na página 57. Flash Player 7 ou posterior e distinção entre maiúsculas e minúsculas Quando você publica arquivos para Flash Player 7 ou posterior, o Flash implementa a distinção entre maiúsculas e minúsculas durante a compilação e a execução, independentemente do uso do ActionScript 1 ou ActionScript 2. Isso significa que palavras-chave, nomes de classes, variáveis, nomes de métodos e outros distinguem maiúsculas e minúsculas. Por exemplo: // Em arquivo que especifique o Flash Player 7 // e o ActionScript 1 ou o ActionScript 2 // // Define propriedades de dois objeto diferentes cat.hilite = true; CAT.hilite = true; // Cria três variáveis diferentes var myVar=10; var myvar=10; var mYvAr=10; // Não gera um erro var array = new Array(); var date = new Date(); Sintaxe 25 Além disso, a distinção entre maiúsculas e minúsculas é implementada durante a compilação e a execução para scripts externos, como arquivos de classe do ActionScript 2 ou scripts que você importa com o comando #include. Assim, se você fizer upgrade do Flash MX ou anterior para o Flash MX 2004 e já tiver criado arquivos externos adicionados aos scripts com o comando #include, será necessário revisar cada arquivo e confirmar o uso consistente de maiúsculas ou minúsculas em todos eles. Uma forma de fazer isso é abrir o arquivo na janela Script (somente Flash Professional) ou, em um novo arquivo FLA, definir as configurações de publicação para o Flash Player 7 e copiar o conteúdo do arquivo para o painel Actions. Em seguida, use o botão Check Syntax (Verificar sintaxe) (consulte “Verificando sintaxe e pontuação” na página 63) ou publique o arquivo; os erros causados por conflitos de nomeação aparecerão no painel Output (Saída). ActionScript 2, Flash Player 6 e distinção entre maiúsculas e minúsculas Quando você especifica ActionScript 2 e Flash Player 6 na caixa de diálogo Publish Settings (Configurações de publicação), a distinção entre maiúsculas e minúsculas de variáveis (mas não de palavras-chave) é implementada durante a compilação, mas não durante a execução. Na prática, essa implementação significa que erros de distinção entre maiúsculas e minúsculas, que podem impedir os programas de funcionarem corretamente durante a execução, não aparecem durante a compilação. Por exemplo, não serão exibidos erros durante a compilação em função da existência de duas variáveis score e Score em um script, embora elas possam estar em conflito e causar a falha silenciosa do script durante a execução. Como o conflito não é aparente durante a compilação, você deverá diagnosticar esse tipo de problema sozinho. // Em arquivo que especifica o Flash Player 6 // e usa o ActionScript 2 // // Define propriedades de dois objeto diferentes durante a compilação // mas trata os dois como o mesmo objeto durante a execução cat.hilite = true; CAT.hilite = true; // Cria três variáveis diferentes // mas trata as três como a mesma variável durante a execução var myVar=10; var myvar=10; var mYvAr=10; // Gera erros durante a compilação var array = new Array(); var date = new Date(); 26 Capítulo 2: Conceitos básicos do ActionScript ActionScript 1, Flash Player 6 ou anterior e distinção entre maiúsculas e minúsculas Se você usar o ActionScript 1 e especificar o Flash Player 6 ou anterior, a distinção entre maiúsculas e minúsculas não será implementada. Os nomes de variáveis que diferirem somente quanto ao uso de maiúsculas ou minúsculas serão considerados idênticos. Além disso, nomes de variáveis não poderão ser iguais a palavras-chave, mesmo se houver distinção entre maiúsculas e minúsculas. // Em arquivo que especifica o Flash Player 6 ou anterior // e usa o ActionScript 1 // // Define propriedades de um único objeto cat.hilite = true; CAT.hilite = true; // Cria uma variável var myVar=10; var myvar=10; var mYvAr=10; // Gera erros durante a compilação var array = new Array(); var date = new Date(); Sintaxe de ponto No ActionScript, um ponto (.) é usado para indicar as propriedades ou os métodos relacionados a um objeto ou clipe de filme. O ponto também é usado para identificar o caminho de destino até um clipe de filme, uma variável, uma função ou um objeto. Uma expressão de 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. Por exemplo, a propriedade _x do clipe de filme indica a posição no eixo x desse clipe no Stage. A expressão ballMC._x se refere à propriedade _x da instância ballMC do clipe de filme. Outro exemplo: submit é uma variável definida no clipe de filme form, que é aninhado no clipe de filme shoppingCart. A expressão shoppingCart.form.submit = true define a variável submit da instância form como true. A expressão do método de um objeto ou clipe de filme segue o mesmo padrão. Por exemplo, o método play() da instância de clipe de filme ball_mc move a reprodução na Timeline de ball_mc, como mostrado no comando abaixo: ball_mc.play(); A sintaxe de ponto também usa dois aliases especiais, _root e _parent. O alias _root refere-se à Timeline principal. Você pode usar o alias _root para criar um caminho de destino absoluto. Por exemplo, o seguinte comando chama a função buildGameBoard() no clipe de filme functions na Timeline principal: _root.functions.buildGameBoard(); Você pode usar o alias _parent para se referir a um clipe de filme no qual o objeto atual esteja aninhado. Pode também usar _parent para criar um caminho de destino relativo. Por exemplo, se o clipe de filme dog_mc estiver aninhado no clipe de filme animal_mc, o seguinte comando na instância dog_mc informará que animal_mc deve parar: _parent.stop(); Sintaxe 27 Chaves No ActionScript, manipuladores de eventos, definições de classes e funções são agrupados em blocos com chaves ({}). A chave inicial pode ser colocada na mesma linha que a declaração ou na próxima linha, como mostrado nos exemplos a seguir. Para tornar o código mais legível, é recomendável escolher um formato e usá-lo de forma consistente. // Manipulador de eventos on (release) { myDate = new Date(); currentMonth = myDate.getMonth(); } on(release) { myDate = new Date(); currentMonth = myDate.getMonth(); } // Classe class Circle(radius) { } class Square(side) { } // Função circleArea = function(radius) { return radius * radius * MATH.PI; } squareArea = function(side) { return side * side; } Você pode verificar a existência de chaves correspondentes nos scripts; consulte “Verificando sintaxe e pontuação” na página 63. Pontos-e-vírgulas Um comando do ActionScript é terminado por um ponto-e-vírgula (;), como mostrado nestes exemplos: var column = passedDate.getDay(); var row = 0; Se o ponto-e-vírgula de terminação for omitido, o Flash ainda assim compilará o script com êxito. Porém, o uso do ponto-e-vírgula é uma prática recomendável na criação de scripts. 28 Capítulo 2: Conceitos básicos do ActionScript Parênteses Ao definir uma função, coloque os parâmetros entre parênteses: function myFunction (name, age, reader){ // Insira seu código aqui } Ao chamar uma função, inclua os parâmetros passados para ela entre parênteses da seguinte forma: myFunction (“Steve”, 10, true); Também é possível usar parênteses para substituir a ordem de precedência do ActionScript ou para facilitar a leitura dos comandos do ActionScript. (Consulte “Associatividade e precedência de operadores” na página 41.) Use parênteses também para avaliar uma expressão à esquerda de um ponto em uma sintaxe de ponto. Por exemplo, no seguinte comando, os parênteses fazem com que new Color(this) avalie e crie um novo objeto Color: onClipEvent (enterFrame){ (new Color(this)).setRGB(0xffffff); } Se você não usar parênteses, adicione um comando para avaliar a expressão: onClipEvent (enterFrame){ myColor = new Color(this); myColor.setRGB(0xffffff); } Você pode verificar a existência de parênteses correspondentes nos scripts; consulte “Verificando sintaxe e pontuação” na página 63. Comentários É bastante recomendável usar comentários para adicionar observações a scripts. Os comentários são úteis para registrar as suas intenções e passar informações para outros desenvolvedores, caso você esteja trabalhando em um ambiente de colaboração ou fornecendo amostras. Será muito mais fácil entender um script, por mais simples que ele seja, se você fizer observações ao criá-lo: Para indicar que uma linha ou parte de uma linha é um comentário, anteceda o comentário com duas barras (//): on (release) { // cria um novo objeto Date myDate = new Date(); currentMonth = myDate.getMonth(); // converte o número do mês no nome do mês monthName = calcMonth(currentMonth); year = myDate.getFullYear(); currentDate = myDate.getDate(); } Quando Syntax coloring estiver ativada (consulte “Realce de sintaxe” na página 57), os comentários ficarão em cinza por padrão. 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. Sintaxe 29 Para “comentar” uma parte inteira do script, coloque o comentário em bloco, em vez de adicionar // ao início de cada linha. Essa técnica é mais fácil e útil quando você deseja testar somente partes de um script comentando grandes seções dele. Para criar um bloco de comentário, coloque /* no início das linhas comentadas e */ no fim. Por exemplo, quando o seguinte script é executado, a parte do código contida no bloco não é executada: // O código abaixo é executado var x:Number = 15; var y:Number = 20; // O código abaixo não é executado /* on (release) { // cria um novo objeto Date myDate = new Date(); currentMonth = myDate.getMonth(); // converte o número do mês no nome do mês monthName = calcMonth(currentMonth); year = myDate.getFullYear(); currentDate = myDate.getDate(); } */ // O código abaixo é executado var name:String = “My name is”; var age:Number = 20; Palavras-chave O ActionScript reserva palavras para uso específico na linguagem, portanto você não pode usá-las como identificadores, como nomes de variáveis, funções ou rótulos. A tabela seguinte lista todas as palavras-chave do ActionScript: break case class continue default delete dynamic else extends for function get if implements import in instanceof interface new private public return set static switch this typeof var void while with Constantes Uma constante é uma propriedade cujo valor nunca é alterado. Por exemplo, as constantes BACKSPACE, ENTER, QUOTE, RETURN, SPACE e TAB são propriedades do objeto Key e se referem às teclas do teclado. Para testar se o usuário está pressionando a tecla Enter, você pode usar o seguinte comando: if(Key.getCode() == Key.ENTER) { alert = "Are you ready to play?"; controlMC.gotoAndStop(5); } 30 Capítulo 2: Conceitos básicos do ActionScript Sobre tipos de dados Os tipos de dados descrevem que tipos de informações um elemento do ActionScript ou variável pode conter. Existem dois tipos de dados internos no Flash: primitivo e referência. Os dados do tipo primitivo — String, Number e Boolean — têm um valor constante e, portanto, podem manter o valor real do elemento que representam. Os de referência — MovieClip e Object — têm valores que podem ser alterados e, portanto, contêm referências ao valor real do elemento. Em determinadas situações, as variáveis que contêm tipos de dados primitivos comportam-se de maneira diferente das que contêm tipos de dados de referência. (Consulte “Usando variáveis em um programa” na página 39.) Existem também dois tipos de dados especiais: null e undefined. No Flash, qualquer objeto interno que não seja do tipo de dado primitivo ou de clipe de filme, como Array ou Math (Matemática), será do tipo de dado Object. Cada tipo de dado possui suas próprias regras e é descrito nos seguintes tópicos: • • • • • • • “String” na página 31 “Number” na página 32 “Boolean” na página 32 “Object” na página 33 “MovieClip” na página 33 “Null” na página 33 “Undefined” na página 33 Ao depurar scripts, talvez você precise determinar os tipos de dados de uma expressão ou variável para entender seu comportamento. Isso pode ser feito com o operador typeof (consulte “Determinando o tipo de dados de um item” na página 34). Você pode converter um tipo de dado em outro usando uma das seguintes funções de conversão: Array(), Boolean(), Number(), Object(), String(). String Uma seqüência de caracteres é uma seqüência de letras, números e sinais de pontuação. Insira seqüências de caracteres em comandos do ActionScript colocando-as entre aspas simples ou duplas. As seqüências de caracteres são tratadas como caracteres e não como variáveis. Por exemplo, no seguinte comando, "L7" é uma seqüência de caracteres: favoriteBand = "L7"; Você pode usar o operador de adição (+) para concatenar, ou unir, duas seqüências de caracteres. O ActionScript trata os espaços no começo ou no final de uma seqüência de caracteres como uma parte literal dessa seqüência. A seguinte expressão inclui um espaço depois da vírgula: greeting = "Welcome," + firstName; Sobre tipos de dados 31 Para incluir aspas em uma seqüência de caracteres, coloque uma barra invertida (\) antes dessas aspas. Isso é chamado de caractere de “escape”. Há outros caracteres que só podem ser representados no ActionScript por seqüências de escape especiais. A tabela seguinte fornece todos os caracteres de escape do ActionScript: Seqüência de escape Caractere \b Caractere Backspace (ASCII 8) \f Caractere de alimentação de formulário (ASCII 12) \n Caractere de alimentação de linha (ASCII 10) \r Caractere de retorno de carro (ASCII 13) \t Caractere Tab (ASCII 9) \" Aspas duplas \' Aspas simples \\ Barra invertida \000 - \377 Um byte especificado em octal \x00 - \xFF Um byte especificado em hexadecimal \u0000 - \uFFFF Um caractere Unicode de 16 bits especificado em hexadecimal Number O tipo de dados number é um número de dupla precisão e ponto flutuante. É possível manipular números usando os operadores aritméticos de adição (+), subtração (-), multiplicação (*), divisão (/), módulo (%), incremento (++) e decremento (--). Também é possível usar métodos das classes internas Math e Number para manipular números. O seguinte exemplo usa o método sqrt() (square root - raiz quadrada) para retornar a raiz quadrada do número 100: Math.sqrt(100); Para obter mais informações, consulte “Operadores numéricos” na página 42. Boolean Um valor booleano é true ou false. O ActionScript também converte os valores true e false em 1 e 0 quando apropriado. Os valores booleanos são freqüentemente usados com operadores lógicos em comandos do ActionScript que fazem comparações para controlar o fluxo de um script. Por exemplo, no seguinte script, o SWF será reproduzido se a variável password for true: onClipEvent (enterFrame){ if (userName == true && password == true){ play(); } } Consulte “Usando funções internas” na página 47 e “Operadores lógicos” na página 43. 32 Capítulo 2: Conceitos básicos do ActionScript Object Um objeto é uma coleção de propriedades. Cada propriedade possui um nome e um valor. O valor de uma propriedade pode ser qualquer tipo de dado do Flash, até mesmo um tipo de dado de objeto. Isso permite aninhar os objeto, ou seja, organizá-los uns dentro dos outros. Para especificar os objeto e suas propriedades, use o operador ponto (.). Por exemplo, no seguinte código, hoursWorked é uma propriedade de weeklyStats, que por sua vez é uma propriedade de employee: employee.weeklyStats.hoursWorked É possível usar os objeto internos do ActionScript para acessar e manipular tipos específicos de informações. Por exemplo, o objeto Math possui métodos que executam operações matemáticas com números passados para eles. Este exemplo usa o método sqrt(): squareRoot = Math.sqrt(100); O objeto MovieClip do ActionScript possui métodos que permitem controlar instâncias de símbolos de clipes de filme no Stage. Este exemplo usa os métodos play() e nextFrame(): mcInstanceName.play(); mc2InstanceName.nextFrame(); Você também pode criar objeto personalizados para organizar informações em seu aplicativo Flash. Para adicionar interatividade a um aplicativo com ActionScript, você precisará de muitas informações diferentes: por exemplo, o nome de um usuário, a velocidade de uma bola, os nomes dos itens de um carrinho de compras, o número de quadros carregados, o CEP do usuário ou a última tecla pressionada. A criação de objeto personalizados permite que você organize essas informações em grupos, simplifique e reutilize os scripts. MovieClip Clipes de filme são símbolos que podem reproduzir animações em um aplicativo Flash. O tipo de dado MovieClipe é o único que faz referência a elementos gráficos. Ele permite controlar símbolos de clipes de filme com os métodos da classe MovieClip. Chame os métodos usando o operador ponto (.), conforme o exemplo a seguir: my_mc.startDrag(true); parent_mc.getURL("http://www.macromedia.com/support/" + product); Null O tipo de dado null só possui um valor: null. Esse valor significa “não há valor” — ou seja, uma falta de dados. É possível usar o valor null em diversas situações. Veja a seguir alguns exemplos: • Para indicar que uma variável ainda não recebeu um valor • Para indicar que uma variável não contém mais um valor • Como valor de retorno de uma função, para indicar que não havia valor disponível a ser retornado pela função • Como parâmetro de uma função, para indicar a omissão de um parâmetro Undefined O tipo de dado undefined tem um valor, undefined, e é usado para uma variável que não recebeu atribuição de valor. Sobre tipos de dados 33 Determinando o tipo de dados de um item Ao testar e depurar seus programas, você pode descobrir problemas que parecem estar relacionados aos tipos de dados de itens diferentes. Nesses casos, você pode determinar o tipo de dado de um item. Para isso, use o operador typeof, como mostrado neste exemplo: trace(typeof(variableName)); Para obter mais informações sobre testes e depuração, consulte Capítulo 3, “Escrevendo e depurando scripts”, na página 51. Atribuindo tipos de dados a elementos O Flash atribui automaticamente tipos de dados aos seguintes tipos de elementos de linguagem, como analisado na seção a seguir, “Atribuindo tipos de dados automaticamente”. • • • • Variáveis Parâmetros passados a uma função, método ou classe Valores retornados de uma função ou método Objeto criados como subclasses de classes existentes Entretanto, você também pode atribuir explicitamente tipos de dados a itens, o que pode ajudar a evitar ou diagnosticar certos erros nos scripts. Para obter mais informações, consulte “Atribuição estrita de tipos de dados” na página 35. Atribuindo tipos de dados automaticamente No Flash, não é preciso definir explicitamente um item que tenha um tipo de dados number, string ou outro. O Flash determina o tipo de dados de um item quando ele é atribuído: var x = 3; Na expressão var x = 3, o Flash avalia o elemento à direita do operador e determina que ele é do tipo de dado number. Uma atribuição posterior pode alterar o tipo de x; por exemplo, o comando x = "hello" altera o tipo de x para string. Uma variável à qual não tenha sido atribuído um valor tem o tipo undefined. O ActionScript converte tipos de dados automaticamente sempre que uma expressão exige. Por exemplo, quando você passa um valor para a ação trace(), trace() converte automaticamente o valor em uma seqüência de caracteres e o envia para o painel Output. Em expressões com operadores, o ActionScript converte tipos de dados conforme a necessidade; por exemplo, quando usado com uma seqüência de caracteres, o operador + prevê que o outro operando seja uma seqüência de caracteres: "Next in line, number " + 7 O ActionScript converte o número 7 na seqüência de caracteres "7" e o adiciona ao final da primeira seqüência de caracteres, o que resulta na seguinte seqüência de caracteres: "Next in line, number 7" 34 Capítulo 2: Conceitos básicos do ActionScript Atribuição estrita de tipos de dados O ActionScript 2 permite declarar explicitamente o tipo de objeto de uma variável quando você a cria; isso se chama Atribuição estrita de tipos de dados. Como erros de tipos de dados causam erros do compilador, a Atribuição estrita de tipos de dados ajuda a evitar atribuir o tipo de dados errado a uma variável existente. Para atribuir um tipo de dados específico a um item, defina seu tipo usando a sintaxe pós-dois-pontos: // atribuição de tipo de dados estrita de variável var x:Number = 7; // atribuição de tipo de dados estrita de parâmetro function welcome(firstName:String, age:Number){ } // atribuição de tipo de dados de parâmetro estrita e valor de retorno function square(x:Number):Number { var squared = x*x; return squared; } // atribuição de tipo de dados estrita de objeto var my_date:Date = new Date(); Você pode declarar o tipo de dado de objeto baseado em classes internas (Button, Date, MovieClip etc) e em classes e interfaces criadas por você. Por exemplo, se houver um arquivo Student.as no qual você define a classe Student (Aluno), você poderá especificar que os objeto que criar sejam do tipo Student: var student:Student = new Student(); Você também poderá especificar que os objeto sejam do tipo Function. Usar a atribuição de tipo estrita ajuda a garantir que você não atribua inadvertidamente um tipo incorreto de valor a um objeto. O Flash verifica erros de tipo de dados incorreto durante a compilação. Por exemplo, suponha que você defina o seguinte código: // na definição do constutor para a classe Student var status:Boolean; // propriedade de objeto Student // em um script var studentMaryLago:Student = new Student(); studentMaryLago.status = "enrolled"; Quando o Flash compila esse script, é gerado um erro “Type mismatch” (Erro de tipo). Outra vantagem da atribuição de tipo de dados estrita é que o Flash MX 2004 exibe automaticamente referências de código para objeto internos quando o tipo de dados é atribuído a eles estritamente. Para obter mais informações, consulte “Atribuindo tipo a objeto estritamente para ativar referências de código” na página 58. O ActionScript 1 não oferece suporte para a atribuição de tipo de dados estrita. Embora um script com comandos de atribuição de tipo de dados estrita possa parecer ser compilado corretamente no ActionScript 1, o SWF talvez não funcione como desejado. Além disso, quando você usa o ActionScript 2 e especifica Flash Player 6, o suporte durante a execução para a atribuição de tipo de dados estrita não está presente. O resultado pode ser a atribuição de um objeto a uma variável do tipo incorreto, fazendo com que o compilador permita que chamadas de método ilegais e referências de propriedade não definidas sejam passadas sem serem relatadas. Atribuindo tipos de dados a elementos 35 Convertendo objeto O operador de conversão usado pelo Flash tem a forma de uma chamada de função e é simultâneo à “coerção explícita”, conforme especificado na proposta ECMA-262 edição 4. Ele permite afirmar que um objeto seja de um certo tipo, para que, quando a verificação de tipo ocorrer, o compilador possa ver o objeto com um conjunto de propriedades que o tipo inicial não contém. Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Sobre variáveis Uma variável é um recipiente que contém informações. O recipiente é sempre o mesmo, mas o conteúdo pode mudar. Ao alterar o valor de uma variável quando o SWF estiver sendo reproduzido, você poderá registrar e salvar informações sobre as atividades do usuário, gravar valores que mudam à medida que o SWF é reproduzido ou avaliar se uma condição é true ou false. É recomendável atribuir sempre um valor conhecido a uma variável na primeira vez que você defini-la. Esse procedimento é conhecido como inicializar uma variável e é geralmente feito no primeiro quadro do SWF. A inicialização de variáveis facilita o controle e a comparação do valor da variável durante a reprodução do SWF. Variáveis podem armazenar qualquer tipo de dados (consulte “Sobre tipos de dados” na página 31). Os tipos de dados que uma variável contém afetam a forma como o valor da variável é alterado quando atribuído em um script. Os tipos mais comuns de informações que você pode armazenar em uma variável são um URL, um nome de usuário, o resultado de uma operação matemática, o número de vezes que um evento ocorreu ou se um botão foi clicado. Cada SWF e instância de clipe de filme tem um conjunto de variáveis, no qual cada variável tem um valor independentemente das variáveis em outros SWFs ou clipes de filme. Para testar o valor de uma variável, use a ação trace() a fim de enviar o valor para o painel Output. Por exemplo, trace(hoursWorked) envia o valor da variável hoursWorked para o painel Output no modo de teste. Também é possível verificar e definir os valores da variável no Debugger (Depurador) no modo de teste. Para obter mais informações, consulte “Usando o comando trace” na página 75 e “Exibindo e modificando variáveis” na página 68. 36 Capítulo 2: Conceitos básicos do ActionScript Nomeando uma variável O nome de uma variável deve seguir estas regras: • Ele deve ser um identificador (consulte “Terminologia” na página 22). • Não pode ser uma palavra-chave nem um literal do ActionScript como true, false, null ou undefined. • Ele deve ser exclusivo em seu escopo (consulte “Atribuindo um escopo e declarando variáveis” na página 37). Além disso, não use qualquer elemento na linguagem ActionScript como um nome de variável; isso pode causar erros de sintaxe ou resultados inesperados. Por exemplo, se você nomear uma variável String e depois tentar criar um objeto String usando new String(), o novo objeto será indefinido. hello_str = new String(); trace(hello_str.length); // retorna 0 String = "hello"; // Fornecendo a uma variável o mesmo nome que uma classe interna hello_str = new String(); trace(hello_str.length); // retorna indefinido O editor do ActionScript oferece suporte a referências de código para classes internas e variáveis que se baseiem nessas classes. 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, você poderá definir estritamente a variável ou nomeá-la usando um sufixo específico. Por exemplo, suponha que você defina o seguinte código: var members:Array = new Array(); members. Assim que você digita o ponto (.), o Flash exibe uma lista de métodos e propriedades disponíveis para objeto Array. Para obter mais informações, consulte “Escrevendo código para ativar referências de código” na página 57. Atribuindo um escopo e declarando variáveis O escopo de uma variável refere-se à área na qual a variável é conhecida e na qual pode ser referenciada. Há três tipos de escopo de variável no ActionScript: • Variáveis locais estão disponíveis no corpo da função em que são declaradas (delineado por • • chaves). Variáveis de Timeline estão disponíveis para qualquer script nessa Timeline. Variáveis globais e funções estão disponíveis para cada Timeline e escopo do documento. Observação: As classes do ActionScript 2 criadas por você oferecem suporte para escopos públicos, particulares e estáticos de variáveis. Para obter mais informações, consulte “Controlando o acesso de membros” na página 168 e “Criando membros de classe” na página 169. Sobre variáveis 37 Variáveis locais Para declarar variáveis locais, use o comando var dentro do corpo de uma função. O escopo de uma variável local é o bloco e expira ao final desse bloco. Uma variável local não declarada dentro de um bloco expira ao final de seu script. Por exemplo, as variáveis i e j são usadas com freqüência para contagem de repetições. No exemplo seguinte, i é usado como uma variável local; ela só existe dentro da função makeDays(): function makeDays() { var i; for( i = 0; i < monthArray[month]; i++ ) { _root.Days.attachMovie( "DayDisplay", i, i + 2000 ); _root.Days[i].num = i + 1; _root.Days[i]._x = column * _root.Days[i]._width; _root.Days[i]._y = row * _root.Days[i]._height; column = column + 1; if (column == 7 ) { column = 0; row = row + 1; } } } As variáveis locais também ajudam a impedir conflitos de nomes, que podem causar erros no aplicativo. Por exemplo, se usar name como uma variável local, você poderá usá-la para armazenar o nome de um usuário em um contexto e o nome de uma instância de clipe de filme em outro; como essas variáveis são executadas em escopos separados, não há conflitos. É bom usar variáveis locais no corpo de uma função para que a função possa atuar como um código independente. Uma variável local só pode ser alterada no seu próprio bloco de código. Se uma expressão em uma função usar uma variável global, algum fator fora da função poderá alterar seu valor, o que irá alterar a função. Variáveis de Timeline Variáveis de Timeline estão disponíveis para qualquer script nessa Timeline. Para declarar variáveis de Timeline, inicialize-as em qualquer quadro da Timeline. Certifique-se de inicializar a variável antes de acessá-la em um script. Por exemplo, se você colocar o código var x = 10; no quadro 20, um script anexado a qualquer quadro antes do Quadro 20 não poderá acessar essa variável. 38 Capítulo 2: Conceitos básicos do ActionScript Variáveis globais Variáveis globais e funções estão disponíveis para cada Timeline e escopo do documento. Para criar uma variável com escopo global, use o identificador _global antes do nome da variável e não use a sintaxe var =. Por exemplo, o código a seguir cria a variável global myName: var _global.myName = "George"; // erro de sintaxe _global.myName = "George"; Entretanto, se você inicializar uma variável local com o mesmo nome de uma variável global, não terá acesso à variável global enquanto estiver no escopo da variável local: _global.counter = 100; counter++; trace(counter); // exibe 101 function count(){ for( var counter = 0; counter <= 10 ; counter++ ) { trace(counter); // exibe de 0 a 10 } } count(); counter++; trace(counter); // exibe 102 Usando variáveis em um programa Você deve declarar uma variável em um script antes de usá-la em uma expressão. Se você usar uma variável não declarada, como mostrado no exemplo a seguir, o valor da variável será NaN ou undefined, e o script poderá produzir resultados indesejados: var squared = x*x; trace(squared); // NaN var x = 6; No exemplo a seguir, o comando que declara a variável x deve vir primeiro, para que squared possa ser substituído por um valor: var x = 6; var squared = x*x; trace(squared); // 36 Ocorre um comportamento semelhante quando você passa uma variável indefinida para um método ou função: getURL(myWebSite); // nenhuma ação var myWebSite = "http://www.macromedia.com"; var myWebSite = "http://www.macromedia.com"; getURL(myWebSite); // o navegador exibe www.macromedia.com Você pode alterar o valor de uma variável muitas vezes em um script. O tipo de dados que a variável contém afeta como e quando a variável será alterada. Tipos de dados primitivos, como seqüências de caracteres e números, são passados por valor. Isso significa que o conteúdo real da variável é passado para a variável. No exemplo a seguir, x é definido como 15 e esse valor é copiado para y. Quando x é alterado para 30 na linha 3, o valor de y continua a ser 15, porque y não procura seu valor em x; ele contém o valor de x que recebeu na linha 2. var x = 15; var y = x; var x = 30; Sobre variáveis 39 Outro exemplo: a variável inValue contém um valor primitivo 3; sendo assim, o valor real é passado para a função sqrt() e o valor retornado é 9: function sqrt(x){ return x * x; } var inValue = 3; var out = sqrt(inValue); O valor da variável inValue não é alterado. O tipo de dados de objeto pode conter informações tão numerosas e complexas que uma variável com esse tipo não armazenará o valor real, mas uma referência a esse valor. Essa referência é como um alias que aponta para o conteúdo da variável. Quando a variável precisa saber seu valor, a referência solicita o conteúdo e responde sem transferir o valor para a variável. O exemplo seguinte mostra como passar por referência: var myArray = ["tom", "josie"]; var newArray = myArray; myArray[1] = "jack"; trace(newArray); O código acima cria um objeto Array chamado myArray com dois elementos. A variável newArray é criada e passa uma referência para myArray. Quando o segundo elemento de myArray é alterado, todas as variáveis com uma referência a ele são afetadas. A ação trace() envia tom, jack para o painel Output. No exemplo abaixo, myArray contém um objeto Array, portanto, ela é passada para a função por referência. A função zeroArray() altera o conteúdo do array em myArray. zeroArray() function zeroArray (theArray){ var i; for (i=0; i < theArray.length; i++) { theArray[i] = 0; } } var myArray = new Array(); myArray[0] = 1; myArray[1] = 2; myArray[2] = 3; zeroArray(myArray); A função zeroArray() aceita um objeto Array como um parâmetro e define todos os elementos desse array como 0. Ela pode modificar o array porque é passada por referência. 40 Capítulo 2: Conceitos básicos do ActionScript Usando operadores para manipular valores em expressões Uma expressão é qualquer comando que o Flash possa avaliar e que retorne um valor. Você pode criar uma expressão combinando operadores e valores ou chamando uma função. Os operadores são caracteres que especificam como combinar, comparar ou modificar os valores de uma expressão. Os elementos aos quais o operador é aplicado são chamados operandos. Por exemplo, no comando a seguir, o operador + adiciona o valor de um literal numérico ao valor da variável foo; foo e 3 são os operandos: foo + 3 Esta seção descreve regras gerais sobre tipos comuns, precedência e associatividade de operadores. Para obter informações detalhadas sobre cada operador mencionado aqui, bem como sobre operadores especiais que não constam dessas categorias, consulte as entradas em Capítulo 12, “Dicionário do ActionScript”, na página 215. Associatividade e precedência de operadores Quando dois ou mais operadores são usados no mesmo comando, alguns operadores têm precedência sobre outros. O ActionScript segue uma hierarquia precisa para determinar que operadores devem ser executados primeiro. Por exemplo, a multiplicação é sempre executada antes da adição; no entanto, itens entre parênteses têm precedência sobre a multiplicação. Portanto, como não há parênteses, o ActionScript executa a multiplicação primeiro no exemplo seguinte: total = 2 + 4 * 3; O resultado é 14. Porém, quando a operação de adição está entre parênteses, o ActionScript executa a adição primeiro: total = (2 + 4) * 3; O resultado é 18. Quando dois ou mais operadores compartilham a mesma precedência, sua associatividade determina a ordem na qual serão executados. A associatividade pode ser da esquerda para a direita ou da direita para a esquerda. Por exemplo, o operador de multiplicação possui uma associatividade da esquerda para a direita, portanto, os dois comandos a seguir são equivalentes: total = 2 * 3 * 4; total = (2 * 3) * 4; Para obter uma tabela de todos os operadores e respectivas precedência e associatividade, consulte Apêndice B, “Associatividade e precedência de operadores”, na página 857. Usando operadores para manipular valores em expressões 41 Operadores numéricos Os operadores numéricos adicionam, subtraem, multiplicam, dividem e executam outras operações aritméticas. O uso mais comum do operador de incremento é i++, em vez do mais extenso i = i+1. É possível usar esse operador antes ou depois de um operando. No exemplo a seguir, age recebe primeiro um incremento e, a seguir, é testado em relação ao número 30: if (++age >= 30) No exemplo a seguir, age recebe o incremento depois que o teste é realizado: if (age++ >= 30) A tabela a seguir lista os operadores numéricos do ActionScript: Operador Operação executada + Adição * Multiplicação / Divisão % Módulo (resto da divisão) - Subtração ++ Incremento -- Decremento Operadores de comparação Os operadores de comparação comparam os valores de expressões e retornam um valor booleano (true ou false). Esses operadores são mais usados em repetições e em comandos condicionais. No exemplo a seguir, se a variável score for 100, um determinado SWF será carregado; caso contrário, será carregado outro SWF : if (score > 100){ loadMovieNum("winner.swf", 5); else { loadMovieNum("loser.swf", 5); } A tabela a seguir lista os operadores de comparação do ActionScript: 42 Operador Operação executada < Menor que > Maior que <= Menor que ou igual a >= Maior que ou igual a Capítulo 2: Conceitos básicos do ActionScript Operadores de seqüência de caracteres O operador + tem um efeito especial quando opera em seqüências de caracteres: ele concatena os dois operandos de seqüências de caracteres. Por exemplo, o comando a seguir adiciona "Congratulations," a "Donna!": "Congratulations, " + "Donna!" O resultado é "Congratulations, Donna!" Se apenas um dos operandos do operador + for uma seqüência de caracteres, o Flash converterá o outro operando em uma seqüência de caracteres. Os operadores de comparação >, >=, < e <= também têm um efeito especial quando operam em seqüências de caracteres. Esses operadores comparam duas seqüências de caracteres para determinar o que vem primeiro em ordem alfabética. Os operadores de comparação só compararão seqüências de caracteres se os dois operandos forem seqüências de caracteres. Se apenas um dos operandos for uma seqüência de caracteres, o ActionScript converterá os dois operandos em números e executará uma comparação numérica. Operadores lógicos Os operadores lógicos comparam valores booleanos (true e false) e retornam um terceiro valor booleano. Por exemplo, se os dois operandos forem avaliados como true, o operador AND lógico (&&) retornará true. Se um ou ambos os operandos forem avaliados como true, o operador lógico OR (||) retornará true. Os operadores lógicos são freqüentemente usados com os operadores de comparação para determinar a condição de uma ação if. Por exemplo, no script seguinte, se as duas expressões forem verdadeiras, a ação if será executada: if (i > 10 && _framesloaded > 50){ play(); } A tabela a seguir lista os operadores lógicos do ActionScript: Operador Operação executada && AND lógico || OR lógico ! NOT lógico Usando operadores para manipular valores em expressões 43 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. A operação exata realizada depende do operador, 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. A tabela a seguir lista os operadores bit a bit do ActionScript: Operador Operação executada & AND bit a bit | OR bit a bit ^ XOR bit a bit ~ NOT bit a bit << Desloca para a esquerda >> Desloca para a direita >>> Desloca para a direita sem preenchimento Operadores de igualdade Você pode usar o operador de igualdade (==) para determinar se os valores ou as identidades de dois operandos são iguais. Essa comparação retorna um valor booleano (true ou false). Se os operandos forem seqüências de caracteres, números ou valores booleanos, eles serão comparados por valor. Se os operandos forem objeto ou arrays, serão comparados por referência. É um erro comum usar o operador de atribuição para verificar se há igualdade. Por exemplo, o código a seguir compara x a 2: if (x == 2) No mesmo exemplo, a expressão x = 2 é incorreta porque não compara os operandos, ela atribui o valor 2 à variável x. O operador de igualdade estrita (===) é como o operador de igualdade, com uma diferença importante: o operador de igualdade estrita não executa a conversão de tipo. Se os dois operandos forem de tipos diferentes, o operador de igualdade estrita retornará false. O operador de diferença estrita (!==) retorna o inverso do operador de igualdade estrita. A tabela a seguir lista os operadores de igualdade do ActionScript: 44 Operador Operação executada == Igualdade === Igualdade estrita != Diferença !== Diferença estrita Capítulo 2: Conceitos básicos do ActionScript Operadores de atribuição Você pode usar o operador de atribuição (=) para atribuir um valor a uma variável, como mostrado neste exemplo: var password = "Sk8tEr"; Você também pode usar o operador de atribuição para atribuir diversas variáveis na mesma expressão. No comando a seguir, o valor de a é atribuído às variáveis b, c e d: a = b = c = d; Você também pode usar operadores de atribuição compostos para combinar operações. Operadores compostos são executados nos dois operandos e depois atribuem o novo valor ao primeiro operando. Por exemplo, os dois comandos a seguir são equivalentes: x += 15; x = x + 15; Também é possível usar o operador de atribuição no meio de uma expressão, como mostrado no exemplo a seguir: // Se o valor não for vanilla, enviará uma mensagem. if ((flavor = getIceCreamFlavor()) != "vanilla") { trace ("Flavor was " + flavor + ", not vanilla."); } Esse código equivale ao seguinte código ligeiramente mais extenso: flavor = getIceCreamFlavor(); if (flavor != "vanilla") { trace ("Flavor was " + flavor + ", not vanilla."); } A tabela a seguir lista os operadores de atribuição do ActionScript: Operador Operação executada = Atribuição += Adição e atribuição -= Subtração e atribuição *= Multiplicação e atribuição %= Módulo e atribuição /= Divisão e atribuição <<= Deslocamento para a esquerda bit a bit e atribuição >>= Deslocamento para a direita bit a bit e atribuição >>>= Deslocamento para a direita sem preenchimento e atribuição ^= XOR bit a bit e atribuição |= OR bit a bit e atribuição &= AND bit a bit e atribuição Usando operadores para manipular valores em expressões 45 Operadores ponto e de acesso de array É possível usar o operador ponto (.) e o operador de acesso de array ([]) para acessar propriedades de objeto internas ou personalizadas do ActionScript, incluindo as de um clipe de filme. O operador ponto usa o nome de um objeto à sua esquerda e o nome de uma propriedade ou variável à sua direita. O nome da propriedade ou variável não pode ser uma seqüência de caracteres ou uma variável avaliada como uma seqüência de caracteres; ele deve ser um identificador. Os exemplos a seguir usam o operador ponto: year.month = "June"; year.month.day = 9; O operador ponto e o operador de acesso de array executam a mesma função, só que o operador ponto usa um identificador como sua propriedade, enquanto o operador de acesso de array avalia seu conteúdo em relação a um nome e, em seguida, acessa o valor dessa propriedade nomeada. Por exemplo, as expressões a seguir acessam a mesma variável velocity no clipe de filme rocket: rocket.velocity; rocket["velocity"]; Você pode usar o operador de acesso de array para definir e recuperar variáveis e nomes de instância dinamicamente. Por exemplo, no código seguinte, a expressão dentro do operador [] é avaliada, e o resultado da avaliação é usado como o nome da variável a ser recuperada do name do clipe de filme: name["mc" + i] Você também pode usar a função eval(), conforme o exemplo a seguir: eval("mc" + i) Também é possível usar o operador de acesso de array à esquerda de um comando de atribuição. Isso permite que você defina dinamicamente nomes de objeto, variáveis e instâncias, conforme mostrado no exemplo seguinte: name[index] = "Gary"; Crie arrays multidimensionais no ActionScript construindo um array cujos elementos também são arrays. Para acessar elementos de um array multidimensional, você pode aninhar o operador de acesso de array nele mesmo, como mostrado no seguinte exemplo: var chessboard = new Array(); for (var i=0; i<8; i++) { chessboard.push(new Array(8)); } function getContentsOfSquare(row, column){ chessboard[row][column]; } Você pode verificar operadores [] correspondentes em seus scripts; consulte “Verificando sintaxe e pontuação” na página 63. 46 Capítulo 2: Conceitos básicos do ActionScript Especificando o caminho de um objeto Para usar uma ação para controlar um clipe de filme ou um arquivo SWF carregado, você deve especificar seu nome e endereço, o que é chamado de caminho de destino. No ActionScript, um clipe de filme é identificado por seu nome de instância. Por exemplo, no comando seguinte, a propriedade _alpha do clipe de filme chamado star é definida com visibilidade de 50%: star._alpha = 50; Para atribuir um nome de instância a um clipe de filme: 1 Selecione o clipe de filme no Stage. 2 Insira um nome de instância no inspetor Property. Para identificar um arquivo SWF carregado: • Use _levelX, onde X é o número do nível especificado na ação loadMovie() que carregou o arquivo SWF. Por exemplo, um SWF carregado no nível 5 possui o caminho de destino _level5. No exemplo a seguir, um SWF é carregado no nível 5 e sua visibilidade é definida como false: onClipEvent(load){ loadMovieNum("myMovie.swf", 5); } onClipEvent (enterFrame){ _level5._visible = false; } Para inserir o caminho de destino de um arquivo SWF: • No painel Actions, em Window (Janela) >Development (Desenvolvimento) >Actions, clique no botão Insert Target Path (Inserir caminho de destino) e selecione um clipe de filme na lista exibida. Para obter mais informações sobre caminhos de destino, consulte “Absolute and relative target paths” (Caminhos de destino absolutos e relativos) em Usando a Ajuda do Flash. Usando funções internas Uma função é um bloco de código do ActionScript que pode ser reutilizado em qualquer lugar de um arquivo SWF. Se você passar valores como parâmetros para uma função, a função operará com esses valores. Uma função também pode retornar valores. O Flash tem funções internas que permitem acessar certas informações e executar certas tarefas, como obter o número de versão do Flash Player que hospeda o arquivo SWF (getVersion()). As funções que pertencem a um objeto são denominadas métodos. As funções que não pertencem a um objeto são denominadas funções de alto nível e são encontradas na categoria Functions (Funções) do painel Actions. Usando funções internas 47 Cada função tem suas próprias características e algumas exigem a passagem de determinados valores. Se forem passados mais parâmetros do que o exigido pela função, os valores extras serão ignorados. Se algum parâmetro obrigatório não for passado, o tipo de dado undefined será atribuído aos parâmetros vazios, o que poderá gerar erros na exportação do script. Para chamar uma função, ela deve estar em um quadro que já tenha sido reproduzido. Para chamar uma função, basta usar o nome da função e passar os parâmetros necessários: isNaN(someVar); getTimer(); eval("someVar"); Para obter mais informações sobre cada função, consulte sua entrada em Capítulo 12, “Dicionário do ActionScript”, na página 215. Criando funções Você pode definir funções para executar uma série de comandos sobre valores passados. Suas funções também podem retornar valores. Depois que uma função for definida, ela poderá ser chamada de qualquer Timeline, incluindo aquela de um arquivo SWF carregado. Uma função bem escrita pode ser considerada uma “caixa-preta”. Se ela tiver comentários cuidadosamente inseridos a respeito de sua entrada, saída e objetivo, um usuário da função não precisará compreender exatamente como ela funciona internamente. Definindo uma função As funções, assim como as variáveis, são anexadas à Timeline do clipe de filme que as define, e você deve usar um caminho de destino para chamá-las. Como ocorre com as variáveis, você pode usar o identificador _global para declarar uma função global disponível a todas as Timelines sem usar um caminho de destino. Para definir uma função global, preceda o nome da função com o identificador _global, como no exemplo a seguir: _global.myFunction = function (x) { return (x*2)+3; } Para definir uma função de Timeline, use a ação function seguida do nome da função, dos parâmetros a serem passados para a função e dos comandos do ActionScript que indicam o que a função faz. O exemplo a seguir é uma função denominada areaOfCircle com o parâmetro radius: function areaOfCircle(radius) { return Math.PI * radius * radius; } Também é possível definir uma função criando um literal de função — uma função sem nome declarada em uma expressão e não em um comando. Você pode usar um literal de função para definir uma função, retornar seu valor e atribuí-la a uma variável em uma expressão, como mostrado no exemplo seguinte: area = (function() {return Math.PI * radius *radius;})(5); Quando uma função é redefinida, a nova definição substitui a antiga. 48 Capítulo 2: Conceitos básicos do ActionScript Passando parâmetros para uma função Os parâmetros são os elementos sobre os quais uma função executa seu código. (Neste manual, os termos parâmetro e argumento são equivalentes.) Por exemplo, a seguinte função usa os parâmetros initials e finalScore: function fillOutScorecard(initials, finalScore) { scorecard.display = initials; scorecard.score = finalScore; } Quando a função é chamada, os parâmetros necessários devem ser passados para ela. A função substitui os valores passados para os parâmetros na definição da função. Neste exemplo, scorecard é o nome da instância de um clipe de filme; display e score são campos de texto editáveis na instância. A chamada de função a seguir atribui o valor "JEB" à variável display e o valor 45000 à variável score: fillOutScorecard("JEB", 45000); O parâmetro initials na função fillOutScorecard() é semelhante a uma variável local; ele existe enquanto a função é chamada e desaparece quando a função é encerrada. Se forem omitidos parâmetros durante uma chamada de função, os parâmetros omitidos serão passados como undefined. Se uma chamada de função contiver parâmetros adicionais não exigidos pela declaração da função, eles serão ignorados. Usando variáveis em uma função As variáveis locais são ferramentas valiosas para organizar códigos e facilitar sua compreensão. Quando uma função usa variáveis locais, ela pode ocultar suas variáveis de todos os outros scripts no arquivo SWF; os escopos das variáveis locais encontram-se no corpo da função e deixam de existir quando a função é encerrada. Os parâmetros passados a uma função também são tratados como variáveis locais. Também é possível usar variáveis globais e comuns em uma função. Porém, se as variáveis globais ou comuns forem modificadas, é recomendável usar comentários de script para documentar essas modificações. Retornando valores de uma função Use a ação return para retornar valores de funções. A ação return interrompe a função e a substitui pelo valor da ação return. Se o Flash não encontrar uma ação return antes do término de uma função, uma seqüência de caracteres vazia será retornada. Por exemplo, a função a seguir retorna o quadrado do parâmetro x: function sqr(x) { return x * x; } Algumas funções executam uma série de tarefas sem retornar um valor. Por exemplo, a função seguinte inicializa uma série de variáveis globais: function initialize() { boat_x = _global.boat._x; boat_y = _global.boat._y; car_x = _global.car._x; car_y = _global.car._y; } Criando funções 49 Chamando uma função definida pelo usuário Você pode usar um caminho de destino para chamar uma função em qualquer Timeline a partir de qualquer outra Timeline, inclusive daquela de um arquivo SWF carregado. Se uma função tiver sido declarada por meio do identificador _global, não será preciso usar um caminho de destino para chamá-la. Para chamar uma função, digite o caminho de destino para o nome da função, se for preciso, e passe os parâmetros necessários entre parênteses. Por exemplo, o comando a seguir chama a função sqr() no clipe de filme MathLib na Timeline principal, passa para ela o parâmetro 3 e armazena o resultado na variável temp: var temp = _root.MathLib.sqr(3); O exemplo a seguir usa um caminho absoluto para chamar a função initialize() que foi definida na Timeline principal e não requer parâmetro algum: _root.initialize(); O exemplo a seguir usa um caminho relativo para chamar a função list() definida no clipe de filme functionsClip: _parent.functionsClip.list(6); 50 Capítulo 2: Conceitos básicos do ActionScript CAPÍTULO 3 Escrevendo e depurando scripts No Macromedia Flash MX 2004 e no Macromedia Flash MX Professional 2004, você pode escrever scripts que são incorporados ao arquivo FLA ou armazenados externamente no computador. (Se escrever arquivos de classe do ActionScript 2, armazene cada classe como um arquivo externo com o mesmo nome da classe.) Para escrever scripts incorporados, use o painel Actions (Ações) e anexe a ação a um botão ou clipe de filme ou a um quadro na Timeline (Linha de tempo) (consulte “Controlando o momento em que o ActionScript é executado” na página 52). Para escrever arquivos de script externos, use qualquer editor de texto ou de código. No Flash MX Professional, também é possível usar a janela Script interna. Para obter mais informações, consulte “Usando o painel Actions e a janela Script” na página 54. Ao usar o editor do ActionScript, você também pode verificar erros na sintaxe, formatar códigos automaticamente e usar referências de código para ajudar a completar a sintaxe. Além disso, o recurso de distribuição de pontuação faz com que os parênteses, chaves ou colchetes sejam sempre inseridos em pares. Para obter mais informações, consulte “Usando o editor do ActionScript” na página 57. À medida que trabalha em um documento, teste-o diversas vezes para garantir a melhor reprodução na forma desejada. Use o Bandwidth Profiler (Perfil de largura de banda) para simular a aparência do documento em diferentes velocidades de conexão. Consulte “Testing document download performance” (“Testando o desempenho de download de documentos”) em Usando a Ajuda do Flash. Para testar os scripts, use uma versão de depuração especial do Flash Player que ajuda a solucionar problemas. O uso de técnicas de criação corretas no ActionScript facilitará a solução de problemas com os scripts quando algo inesperado ocorrer. Para obter mais informações, consulte “Depurando scripts” na página 64. 51 Controlando o momento em que o ActionScript é executado Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na guia Help (Ajuda). Ao escrever um script, use o painel Actions (Ações) para anexar o script a um quadro em uma Timeline ou a um botão ou clipe de filme no Stage (Palco). Os scripts anexados a um quadro são executados quando a reprodução entra no quadro. Porém, os scripts anexados ao primeiro quadro de um arquivo SWF podem se comportar de forma diferente daqueles anexados aos quadros subseqüentes, porque o primeiro quadro em um SWF é renderizado de forma incremental — os objeto são desenhados no Stage à medida que o Flash Player faz o download — e isso pode afetar a execução das ações. Todos os quadros subseqüentes são renderizados de uma vez, quando todos os objeto do quadro estão disponíveis. Os scripts anexados a clipes de filmes ou botões são executados quando ocorre um evento. Um evento é uma ocorrência no SWF, como um movimento de mouse, um pressionamento de tecla ou o carregamento de um clipe de filme. É possível usar o ActionScript para descobrir quando ocorrem esses eventos e executar scripts específicos dependendo do evento. Para obter mais informações, consulte Capítulo 4, “Manipulando eventos”, na página 79. Para executar uma ação, dependendo da existência de uma condição, ou para repetir uma ação, use os comandos if, else, else if, for, while, do while, for..in ou switch, que são descritos rapidamente no restante desta seção. Verificando uma condição Os comandos que verificam se uma condição é true ou false começam com o termo if. Se a condição existir, o ActionScript executará o comando seguinte. Se a condição não existir, o ActionScript passará para o próximo comando fora do bloco de código. Para otimizar o desempenho do código, verifique as condições mais prováveis primeiro. Os comandos seguintes testam três condições. O termo else if especifica testes alternativos que poderão ser executados se as condições anteriores forem falsas. if (password == null || email == null) { gotoAndStop("reject"); } else if (password == userID){ gotoAndPlay("startMovie"); } Para verificar uma dentre diversas condições, use o comando switch em vez de vários comandos else if. Repetindo uma ação O ActionScript pode repetir uma ação um número especificado de vezes ou enquanto uma condição específica existir. Use as ações while, do..while, for e for..in para criar repetições. Para repetir uma ação enquanto uma condição existir: • Use o comando while. Uma repetição while avalia uma expressão e executa o código no corpo da repetição se a expressão for true. Depois que cada comando do corpo for executado, a expressão será avaliada novamente. No exemplo seguinte, a repetição é executada quatro vezes: 52 Capítulo 3: Escrevendo e depurando scripts i = 4; while (var i > 0) { my_mc.duplicateMovieClip("newMC" + i, i ); i--; } Você pode usar o comando do...while para criar uma repetição do mesmo tipo de while. Em uma repetição do...while, a expressão é avaliada na parte inferior do bloco de código para que a repetição seja sempre executada pelo menos uma vez, como no exemplo a seguir: i = 4; do { my_mc.duplicateMovieClip("newMC" +i, i ); i--; } while (var i > 0); Para repetir uma ação usando um contador interno: • Use o comando for. A maioria das repetições usa algum tipo de contador para controlar o número de execuções. Cada execução de uma repetição é denominada iteração. Você pode declarar uma variável e escrever um comando que aumente ou diminua a variável sempre que a repetição for executada. Na ação for, o contador e o comando que aumenta a contagem fazem parte da ação. No exemplo a seguir, a primeira expressão (var i = 4) é a expressão inicial que é avaliada antes da primeira iteração. A segunda expressão ( i > 0) é a condição que é verificada sempre antes da execução da repetição. A terceira expressão (i--) é denominada expressão final e é avaliada sempre após a execução da repetição. for (var i = 4; i > 0; i--){ myMC.duplicateMovieClip("newMC" + i, i + 10); } Para criar uma repetição nos filhos de um clipe de filme ou objeto: • Use o comando for..in. Os filhos são outros clipes de filme, funções, objeto e variáveis. O exemplo a seguir usa o comando trace para imprimir seus resultados no painel Output (Saída): myObject = { name:'Joe', age:25, city:'San Francisco' }; for (propertyName in myObject) { trace("myObject has the property: " + propertyName + ", with the value: " + myObject[propertyName]); } Esse exemplo produz os seguintes resultados no painel Output: myObject has the property: name, with the value: Joe myObject has the property: age, with the value: 25 myObject has the property: city, with the value: San Francisco O script pode iterar em um determinado tipo de filho; por exemplo, apenas em filhos de clipes de filme. Isso pode ser feito usando for...in com o operador typeof. for (name in myMovieClip) { if (typeof (myMovieClip[name]) == "movieclip") { trace("I have a movie clip child named " + name); } } Para obter mais informações sobre cada ação, consulte entradas individuais em Capítulo 12, “Dicionário do ActionScript”, na página 215. Controlando o momento em que o ActionScript é executado 53 Usando o painel Actions e a janela Script Para obter as informações mais recentes sobre este tópico, clique no botão Update na parte superior da guia Help. Você pode incorporar scripts Flash ao arquivo FLA ou armazená-los como arquivos externos. É recomendável armazenar o máximo possível do código do ActionScript em arquivos externos. Isso facilita a reutilização do código em vários arquivos FLA. Depois, no arquivo FLA, crie um script que use comandos #include para acessar o código armazenado externamente. Use o sufixo .as para identificar os scripts como arquivos do ActionScript (AS). (Se escrever arquivos de classe personalizados, armazene-os como arquivos AS externos.) Observação: O código do ActionScript em arquivos externos é compilado em um arquivo SWF quando você publica, exporta, testa ou depura um arquivo FLA. Assim, se você alterar um arquivo externo, salve-o e recompile os arquivos FLA que o utilizam. Ao incorporar o código do ActionScript ao arquivo FLA, você pode anexar código a quadros e objeto. Tente anexar ActionScript incorporado ao primeiro quadro da Timeline sempre que possível. Dessa forma, não será preciso pesquisar em um arquivo FLA para localizar todo o código; ele estará centralizado em um local. Crie uma camada chamada “Actions” e coloque seu código ali. Assim, mesmo se você colocar código em outros quadros ou anexá-lo a objeto, precisará procurar em apenas uma camada para encontrá-lo. Para criar scripts que façam parte do documento, insira o ActionScript diretamente no painel Actions. Para criar scripts externos, use seu editor de texto preferido ou, no Flash MX Professional, use a janela Script. Ao usar o painel Actions ou a janela Script, você usa o mesmo editor do ActionScript e digita o código no painel Script do lado direito do painel ou da janela. Para reduzir a digitação a ser feita, também é possível selecionar ou arrastar ações da caixa de ferramentas Actions para o painel Script. Para exibir o painel Actions, siga um destes procedimentos: • Selecione Window (Janela) > Development Panels (Painéis de desenvolvimento) > Actions. • Pressione F9. (Somente Flash Professional) Para exibir a janela Script, siga um destes procedimentos: • Para começar a escrever um novo script, selecione File (Arquivo) > New (Novo) > ActionScript File (Arquivo do ActionScript). • Para abrir um script existente, selecione File > Open (Abrir) e abra um arquivo AS. • Para editar um script já aberto, clique na guia do documento que exibe o nome do script. (Guias de documento só são suportadas no Windows.) Se não centralizar todo o código de um arquivo FLA em um local, você poderá prender (travar no lugar) vários scripts no painel Actions para facilitar a passagem por eles. Na figura a seguir, o script associado ao local atual na Timeline está no Frame 1 da camada denominada Cleanup (Limpeza). (A guia na extremidade esquerda sempre segue sua localização na Timeline.) Esse script também está preso (ele é mostrado na guia mais à direita). Dois outros scripts estão presos: um no Frame 1 e o outro no Frame 15 da camada Intro (Introdução). Para mover-se pelos scripts presos, clique nas guias. Mover-se por scripts presos não altera sua posição atual na Timeline. 54 Capítulo 3: Escrevendo e depurando scripts Para prender um script: 1 Posicione o ponteiro na Timeline para que o script apareça em uma guia na parte inferior esquerda do painel Script no painel Actions. 2 Siga um destes procedimentos: ■ Clique no ícone de tachinha à direita da guia. (Se a tachinha for parecida com o ícone à direita na figura a seguir, o script já estará preso; clicar no ícone o desprenderá.) ■ Clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) na guia e selecione Pin Script (Prender script). ■ Selecione Pin Script no menu pop-up Options (Opções) no canto superior direito do painel. Para desprender (fechar) um ou mais scripts: • Siga um destes procedimentos: ■ ■ ■ Se um script preso aparecer em uma guia na parte inferior esquerda do painel Script no painel Actions, clique no ícone de tachinha à direita da guia. (Se a tachinha for parecida com o ícone à esquerda na figura a seguir, o script já estará solto; clicar no ícone o prenderá.) Clique com o botão direito (Windows) ou, pressionando Control, clique (Macintosh) em uma guia e selecione Close Script (Fechar script) ou Close All Scripts (Fechar todos os scripts). Selecione Close Script ou Close All Scripts no menu pop-up Options no canto superior direito do painel. O ambiente do editor do ActionScript consiste em duas seções. A seção à direita é o painel Script, a área onde você digita o código. A seção à esquerda é uma caixa de ferramentas Actions que contém uma entrada para cada elemento de linguagem do ActionScript. Usando o painel Actions e a janela Script 55 No painel Actions do Flash Professional, a caixa de ferramentas Actions também contém um navegador Script, que é uma representação visual da estrutura do arquivo FLA: você pode navegar pelo arquivo FLA aqui para localizar código ActionScript. Se você clicar em um item no navegador Script, o script associado a esse item aparecerá no painel Script, e a reprodução se moverá para essa posição na Timeline. Ações (somente Flash Professional) caixa de ferramentas Navegador Script* pop-up Menu* * Somente painel Actions Existem também vários botões acima do painel Script: Add item to script (Adicionar item a script) Insert target path (Inserir Reference (Referência) caminho de destino)* Check Syntax (Verificar sintaxe) Debug Options (Opções de depuração)* Find Show Code Hint (Mostrar (Localizar) referência de código) Menu pop-up View Auto Format Replace Options (Opções (Formatação (Substituir) de exibição) automática) * Somente painel Actions Você pode editar ações, digitar parâmetros para ações ou excluir ações diretamente no painel Script. Pode também usar a caixa de ferramentas Actions e o botão Add (+) (Adicionar) para adicionar ações ao painel Script. (Para obter mais informações sobre como usar a caixa de ferramentas Actions, consulte “Usando a caixa de ferramentas Actions” na página 61.) 56 Capítulo 3: Escrevendo e depurando scripts Usando o editor do ActionScript O Flash MX 2004 e o Flash MX Professional 2004 fornecem várias ferramentas para ajudar você a escrever códigos sintaticamente corretos e permitem definir preferências de formatação de código e outras opções. Esses recursos são analisados nesta seção. Realce de sintaxe No ActionScript, assim como em qualquer linguagem, a sintaxe é a maneira como os elementos são reunidos para terem significado. Se for usada uma sintaxe incorreta do ActionScript, os scripts não funcionarão. Quando você escreve scripts no Flash MX 2004 e no Flash MX Professional 2004, os comandos não suportados pela versão do exibidor especificado aparecerão em amarelo na caixa de ferramentas Actions. Por exemplo, se a versão do SWF do Flash Player estiver definida como Flash 6, o ActionScript que só tem suporte do Flash Player 7 aparecerá em amarelo na caixa de ferramentas Actions. Para obter informações sobre como definir a versão de SWF do Flash Player, consulte “Setting publish options for the Flash SWF file format” (Definindo opções de publicação para o formato de arquivo Flash SWF) em Usando a Ajuda do Flash. Também é possível definir uma preferência para que o Flash colora partes dos scripts enquanto você os escreve para destacar erros de digitação. Por exemplo, imagine que você definiu a preferência de sinalização da sintaxe por cores para que as palavras-chave apareçam em verdeescuro. Ao criar o código, se você digitar var, a palavra var aparecerá em verde. Entretanto, se, por engano, você digitar vae, a palavra vae continuará em preto, fornecendo uma dica imediata de que houve um erro de digitação. Para definir preferências de sinalização de sintaxe por cores enquanto digita, siga um destes procedimentos: • Selecione Edit (Editar) > Preferences (Preferências) e especifique as configurações Syntax coloring (Sinalização de syntaxe por cores) na guia ActionScript. • No painel Actions, selecione Preferences no menu pop-up Options, no canto superior direito do painel, e especifique as configurações Syntax coloring na guia ActionScript. Escrevendo código para ativar referências de código Quando você trabalha no editor do ActionScript (no painel Actions ou na janela Script), o Flash pode detectar qual ação é digitada e exibir uma referência de código — uma dica de ferramenta que contém a sintaxe completa para essa ação ou um menu pop-up que lista nomes de método ou propriedade possíveis. As referências de código aparecem para parâmetros, propriedades e eventos quando você atribui um tipo estritamente aos seus objeto ou os nomeia para que o editor do ActionScript saiba quais referências de código exibir, conforme analisado no restante desta seção. Para obter informações sobre como usar referências de código quando elas aparecerem, consulte “Usando referências de código” na página 60. Observação: A referência de código é ativada automaticamente para classes nativas que não exigem a criação e a nomeação de um objeto da classe, como Math, Key, Mouse etc. Usando o editor do ActionScript 57 Atribuindo tipo a objeto estritamente para ativar referências de código Com o ActionScript 2, você pode atribuir um tipo estritamente a uma variável que se baseia em uma classe interna, como Button, Array etc. Se você fizer isso, o editor do ActionScript exibirá referências de código para a variável. Por exemplo, imagine que você tenha digitado o seguinte: var names:Array = new Array(); names. Logo que você digita o ponto (.), o Flash exibe uma lista de métodos e propriedades disponíveis para objeto Array, porque você atribui o tipo array à variável. Para obter mais informações sobre como atribuir tipos de dados, consulte “Atribuição estrita de tipos de dados” na página 35. Para obter informações sobre como usar referências de código quando elas aparecerem, consulte “Usando referências de código” na página 60. Usando sufixos para ativar referências de código Se usar o ActionScript 1 ou se desejar exibir referências de código para objeto criados por você sem atribuir um tipo estritamente a eles (consulte “Atribuindo tipo a objeto estritamente para ativar referências de código” na página 58), adicione um sufixo especial ao nome de cada objeto ao criá-lo. Por exemplo, os sufixos que ativam referências de código para a classe Array e a classe Camera são, respectivamente, _array e _cam. Se você digitar o seguinte código: var my_array = new Array(); var my_cam = Camera.get(); e depois digitar uma das opções a seguir (o nome da variável seguido por um ponto), as referências de código para o objeto Array e Camera, respectivamente, aparecerão. my_array. my_cam. Para objeto que aparecem no Stage, use o sufixo na caixa de texto Instance Name (Nome de instância) no inspetor Property (Propriedades). Por exemplo, para exibir referências de código de objeto MovieClip, use o inspetor Property para atribuir nomes de instância com o sufixo _mc a todos os objeto MovieClip. Assim, sempre que você digitar o nome da instância seguido por um ponto, as referências de código aparecerão. Embora não sejam necessários sufixos para ativar referências de código quando você atribui um tipo estritamente a um objeto, usá-los de forma consistente ajuda a entender os scripts. A tabela abaixo lista os sufixos necessários para o suporte a referências de código automáticas. 58 Tipo de objeto Sufixo da variável Array _array Button _btn Camera _cam Cor _color ContextMenu _cm ContextMenuItem _cmi Date _date Error _err Capítulo 3: Escrevendo e depurando scripts Tipo de objeto Sufixo da variável LoadVars _lv LocalConnection _lc Microphone _mic MovieClip _mc MovieClipLoader _mcl PrintJob _pj NetConnection _nc NetStream _ns SharedObject _so Sound _sound String _str TextField _txt TextFormat _fmt Video _video XML _xml XMLNode _xmlnode XMLSocket _xmlsocket Para obter informações sobre como usar referências de código quando elas aparecerem, consulte “Usando referências de código” na página 60. Usando comentários para ativar referências de código Também é possível usar os comentários do ActionScript a fim de especificar a classe de um objeto para referências de código. O exemplo a seguir informa ao ActionScript que a classe da instância theObject é Object, e assim por diante. Se você digitasse mc seguido por um ponto após esses comentários, uma referência de código exibiria a lista de métodos e propriedades de MovieClip; se você digitasse theArray seguido por um ponto, uma referência de código exibiria uma lista de métodos e propriedades de Array, e assim por diante. // Object theObject; // Array theArray; // MovieClip mc; Entretanto, a Macromedia recomenda usar a atribuição de tipo de dados estrita (consulte “Atribuindo tipo a objeto estritamente para ativar referências de código” na página 58) ou sufixos (consulte “Usando sufixos para ativar referências de código” na página 58) em vez dessa técnica, porque eles ativam automaticamente a referência de códigos e tornam o código mais compreensível. Usando o editor do ActionScript 59 Usando referências de código As referências de código são ativadas por padrão. Ao definir preferências, é possível desativar as referências de código ou determinar a rapidez com que elas são exibidas. Quando as referências de código estão desativadas nas preferências, ainda é possível exibir uma referência de código para um comando específico. Para especificar configurações de referências de código automáticas, siga um destes procedimentos: • Selecione Edit > Preferences e ative ou desative Code Hints (Referências de código) na guia • ActionScript. No painel Actions, selecione Preferences no menu pop-up Options, no canto superior direito do painel, e ative ou desative Code Hints na guia ActionScript. Se você ativar as referências de código, poderá também especificar um atraso, em segundos, antes que elas apareçam. Por exemplo, se você não estiver familiarizado com o ActionScript, talvez prefira não usar atrasos, para que as referências de código sempre apareçam imediatamente. No entanto, se você geralmente souber o que quer digitar e só precisar das referências de código ao usar elementos de linguagem desconhecidos, poderá especificar um atraso para que as referências não apareçam quando não desejar usá-las. Para trabalhar com referências de código no estilo de dica de ferramenta: 1 Para exibir a referência de código, digite um parêntese de abertura [(] após um elemento que exija parênteses, como o nome de um método, um comando, como if ou do while, etc. A referência de código será exibida. Observação: Se uma referência de código não aparecer, certifique-se de não ter desativado as referências na guia ActionScript. Para exibir referências de código para uma variável ou objeto criado por você, verifique se você nomeou a variável ou o objeto corretamente (consulte “Usando sufixos para ativar referências de código” na página 58) ou se atribuiu um tipo estritamente à variável ou ao objeto (consulte “Atribuindo tipo a objeto estritamente para ativar referências de código” na página 58). 2 Digite um valor para o parâmetro. Se houver mais de um parâmetro, separe os valores por vírgulas. Os comandos superpostos como gotoAndPlay() ou for (ou seja, funções ou métodos que possam ser chamados com conjuntos diferentes de parâmetros) exibem um indicador que permite selecionar o parâmetro a ser definido. 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. 3 Para desconsiderar a referência de código, siga um destes procedimentos: ■ ■ ■ 60 Digite um parênteses de fechamento [)]. Clique fora do comando. Pressione Escape. Capítulo 3: Escrevendo e depurando scripts Para trabalhar com referências de código no estilo de menu: 1 Para exibir a referência de código, digite um ponto após o nome da variável ou objeto. O menu da referências de código é exibido. Observação: Se uma referência de código não aparecer, certifique-se de não ter desativado as referências na guia ActionScript. Para exibir referências de código para uma variável ou objeto criado por você, verifique se você nomeou a variável ou o objeto corretamente (consulte “Usando sufixos para ativar referências de código” na página 58) ou se atribuiu um tipo estritamente à variável ou ao objeto (consulte “Atribuindo tipo a objeto estritamente para ativar referências de código” na página 58). 2 Para navegar pelas referências de código, use as teclas de seta para cima e seta para baixo. 3 Para selecionar um item no menu, pressione Return ou Tab, ou clique duas vezes no item. 4 Para desconsiderar a referência de código, siga um destes procedimentos: ■ ■ ■ ■ Selecione um dos itens de menu. Clique fora do comando. Digite um parênteses de fechamento [)] caso já tenha digitado um parênteses de abertura. Pressione Escape. Para exibir manualmente uma referência de código: 1 Clique em um local do código onde as referências de código possam aparecer. Veja a seguir alguns exemplos: ■ Após o ponto que segue um comando ou uma instrução, onde uma propriedade ou método deve ser digitado ■ Entre parênteses em um nome de método 2 Siga um destes procedimentos: ■ Clique no botão Show Code Hint (Mostrar referência de código) acima do painel Script. ■ Pressione Control+barra de espaços. ■ Se estiver trabalhando no painel Actions, abra o menu pop-up, no lado direito da barra de título, e selecione Show Code Hint. Usando a caixa de ferramentas Actions Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Usando o editor do ActionScript 61 Usando teclas de atalho de Escape Você pode adicionar muitos elementos a um script usando teclas de atalho — pressionando a tecla Escape e, em seguida, duas outras teclas. (Esses atalhos são diferentes dos atalhos de teclado que iniciam certos comandos de menu.) Por exemplo, se estiver trabalhando no painel Script e digitar Escape+d+o, o código a seguir será colocado no script, e o ponto de inserção será colocado imediatamente após a palavra while, para que você comece a digitar sua condição: do { } while (); Da mesma forma, se você digitar Escape+c+h, o código a seguir será colocado no script, e o ponto de inserção será colocado entre os parênteses, para que seja possível começar a digitar a condição: catch () { } Para aprender (ou ser lembrado) quais comandos têm teclas de atalho de Escape, exiba-os ao lado de elementos do painel Actions: Para exibir ou ocultar teclas de atalho de Escape: • No menu pop-up View Options (Opções de exibição), ative ou desative View Escape Shortcut Keys (Exibir teclas de atalho de Escape). 62 Capítulo 3: Escrevendo e depurando scripts Verificando sintaxe e pontuação Para determinar com cuidado se o código escrito tem o desempenho planejado, publique ou teste o arquivo. Entretanto, você pode verificar rapidamente o código do ActionScript sem sair do arquivo FLA. Os erros de sintaxe serão listados no painel Output. (Quando você verifica a sintaxe, somente o script atual é verificado; outros scripts que podem estar no arquivo FLA não são verificados.) Você também pode verificar se um conjunto de parênteses, chaves ou colchetes (operadores de acesso de array) em torno de um bloco de código está equilibrado. Para verificar a sintaxe, siga um destes procedimentos: • Clique no botão Check Syntax acima do painel Script. • No painel Actions, exiba o menu pop-up, no canto superior direito do painel, e selecione Check Syntax. • Pressione Control+T (Windows) ou Command+T (Macintosh). Para verificar o equilíbrio da pontuação: 1 Clique entre chaves {}, operadores de acesso de array [] ou parênteses () no script. 2 Pressione Control+' (Windows) ou Command+' (Macintosh) para realçar o texto entre chaves, colchetes ou parênteses. O realce ajuda a verificar se a pontuação de abertura possui a pontuação de fechamento correspondente correta. Formatando código Você pode especificar configurações para determinar se o código será formatado e recuado automática ou manualmente. Pode também escolher se prefere exibir o número de linhas e se deseja quebrar as linhas longas de código. Para definir opções de formato: 1 No painel Actions, selecione Auto Format Options (Opções de formatação automática) no menu pop-up Options, no canto superior direito do painel. A caixa de diálogo Auto Format Options será exibida. 2 Selecione uma das caixas de seleção. Para verificar o efeito de cada seleção, observe o painel Preview (Visualizar). Depois de definir Auto Format Options, as configurações serão aplicadas automaticamente ao código que você escrever, mas não ao código existente. Aplique as configurações ao código existente manualmente. Use esse procedimento para formatar código que foi formatado com configurações diferentes, importado de outro editor etc. Para formatar código de acordo com as configurações de Auto Format Options, siga um destes procedimentos: • Clique no botão Auto Format acima do painel Script. • Selecione Auto Format no menu pop-up do painel Actions. • Pressione Control+Shift+F (Windows) ou Command+Shift+F (Macintosh). Usando o editor do ActionScript 63 Para usar o recuo automático: • O recuo automático é ativado por padrão. Para desativá-lo, desmarque a opção Automatic Indentation (Recuo automático) nas preferências do ActionScript. Quando o recuo automático estiver ativado, o texto digitado após ( ou { será recuado automaticamente conforme a configuração Tab Size (Tamanho da tabulação) nas preferências do ActionScript. Para recuar outra linha, selecione-a e pressione Tab. Para remover o recuo, pressione Shift+Tab. Para ativar ou desativar números de linha e quebra automática de linha: • No menu pop-up View Options, ative ou desative View Line Numbers (Exibir números de linha) e Word Wrap (Quebra automática de linha). Depurando scripts O Flash fornece diversas ferramentas para testar o ActionScript nos arquivos SWF. O Debugger (Depurador), analisado no restante desta seção, permite localizar erros em um SWF quando ele é executado no Flash Player. O Flash também fornece as seguintes ferramentas de depuração adicionais: • O painel Output, que exibe mensagens de erro e listas de variáveis e objeto (consulte “Usando o painel Output” na página 73) • O comando trace, que envia observações de programação e valores de expressão para o painel Output (consulte “Usando o comando trace” na página 75) • Os comandos throw e try..catch..finally, que permitem testar e responder a erros • durante a execução a partir do script A disponibilidade de mensagens de erro durante a execução e de compilador abrangentes, que permitem diagnosticar e solucionar problemas mais facilmente (consulte Apêndice A, “Mensagens de erro”, na página 851) O Debugger mostra uma lista hierárquica de clipes de filme carregados atualmente no Flash Player. Com o Debugger, você pode exibir e modificar os valores de variáveis e propriedades durante a reprodução do SWF, e pode usar pontos de interrupção para interromper o SWF e executar uma depuração direta do código do ActionScript linha por linha. Use o Debugger no modo de teste com arquivos locais ou para testar arquivos em um servidor Web em local remoto. O Debugger permite definir pontos de interrupção no ActionScript para interromper o Flash Player e executar a depuração direta do código durante a sua execução. Depois, você pode voltar para os scripts e editá-los para que produzam os resultados corretos. Uma vez ativada, a barra de status do Debugger exibe o URL ou o caminho local do arquivo, informa se o arquivo está sendo executado no modo de teste ou a partir de um local remoto, e mostra uma lista de exibição dinâmica do clipe de filme. Quando os clipes de filme são adicionados ou removidos do arquivo, a lista de exibição reflete as alterações imediatamente. É possível redimensionar a lista de exibição movendo o divisor horizontal. 64 Capítulo 3: Escrevendo e depurando scripts Para ativar o Debugger no modo de teste: • Selecione Control (Controle) > Debug Movie (Depurar filme). O Debugger é aberto. O arquivo SWF também é aberto no modo de teste. Barra de status Lista de exibição Lista de observação Visualização de código Depurando um filme a partir de um local remoto É possível depurar um arquivo SWF remoto usando as versões independentes, ActiveX ou plug-in do Flash Player. Durante a exportação de um filme, é possível ativar a depuração e criar uma senha para depuração. Se você não ativar a depuração, o Debugger não será ativado. Para garantir que somente usuários confiáveis possam executar SWFs no Flash Debug Player, publique-os com uma senha para depuração. Assim como o JavaScript ou HTML, o ActionScript permite que o usuário visualize as variáveis da parte cliente. Para armazenar variáveis de maneira segura, você deve enviá-las a um aplicativo no servidor, em vez de armazená-las no arquivo. Entretanto, como desenvolvedor do Flash, você pode ter outros segredos comerciais, como estruturas de clipes de filmes, que não deseja revelar. Use a senha de depuração para proteger seu trabalho. Durante a exportação, publicação ou teste de um filme, o Flash cria um arquivo SWD com as informações de depuração. Para executar uma depuração remota, coloque o arquivo SWD na mesma pasta do arquivo SWF no servidor. Observação: Só é possível depurar remotamente SWFs que foram criados com a versão da ferramenta de criação que você usou. Por exemplo, se estiver usando o Flash MX 2004, você só poderá depurar remotamente SWFs publicados para Flash Player 7. Depurando scripts 65 Para ativar a depuração remota de um filme do Flash: 1 Selecione File > Publish Settings (Configurações de publicação). 2 Na guia Flash da caixa de diálogo Publish Settings, selecione Debugging permitted (Depuração permitida). 3 Para definir uma senha, digite-a na caixa Password (Senha). Depois de definida a senha, ninguém poderá fazer download de informações para o Debugger sem ela. No entanto, se o campo Password for deixado em branco, a senha não será solicitada. 4 Feche a caixa de diálogo Publish Settings e selecione um dos seguintes comandos: ■ Control > Debug Movie ■ File > Export Movie (Exportar filme) ■ File > Publish Settings > Publish O Flash cria um arquivo de depuração com a extensão .swd e o salva junto com o arquivo SWF. O arquivo SWD contém informações que permitem usar os pontos de interrupção para a depuração direta do código. 5 Coloque o arquivo SWD no mesmo diretório do arquivo SWF no servidor. Mesmo que o arquivo SWD não esteja no mesmo diretório do arquivo SWF, você poderá executar uma depuração remota. No entanto, o Debugger ignorará os pontos de interrupção e não permitirá a depuração direta do código. 6 No Flash, selecione Window > Development Panels > Debugger. ■ No Debugger, selecione Enable Remote Debugging (Ativar a depuração remota) no menu pop-up Options, no canto superior direito do painel. 66 Capítulo 3: Escrevendo e depurando scripts Para ativar o Debugger a partir de um local remoto: 1 Abra o aplicativo de criação Flash. 2 Em um navegador ou no exibidor independente, abra o arquivo SWF publicado a partir do local remoto. A caixa de diálogo Remote Debug (Depuração remota) é exibida. Se essa caixa de diálogo não for exibida, significa que o Flash não pôde encontrar o arquivo SWD. Nesse caso, clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) no SWF para exibir o menu de contexto e selecione Debugger. 3 Na caixa de diálogo Remote Debug (Depuração remota), selecione Localhost (Host local) ou Other Machine (Outra máquina): ■ Selecione Localhost se o Debug Player e o aplicativo de criação Flash estiverem no mesmo computador. ■ Selecione Other Machine se o Debug Player e o aplicativo de criação Flash não estiverem no mesmo computador. Digite o endereço IP do computador que executa o aplicativo de criação Flash. 4 Quando a conexão for estabelecida, a senha será solicitada. Digite a senha para depuração se já houver uma definida. A lista de exibição do arquivo SWF aparece no Debugger. Depurando scripts 67 Exibindo e modificando variáveis No Debugger, a guia Variables exibe os nomes e os valores das variáveis globais e da Timeline no arquivo SWF. Se você alterar o valor de uma variável na guia Variables, poderá ver a alteração refletida no SWF durante sua execução. Por exemplo, para testar a detecção de colisão em um jogo, você pode inserir o valor da variável para posicionar uma bola no local correto próximo a uma parede. No Debugger, a guia Locals (Locais) exibe os nomes e os valores das variáveis locais disponíveis, quer o SWF tenha parado em um ponto de interrupção ou em qualquer outro local dentro de uma função definida pelo usuário. Para exibir uma variável: 1 Selecione o clipe de filme que contém a variável na lista de exibição. Para exibir variáveis globais, selecione o clipe _global na lista de exibição. 2 Clique na guia Variables (Variáveis). A lista de exibição é atualizada automaticamente enquanto o SWF é reproduzido. Se um clipe de filme for removido do SWF em um quadro específico, esse clipe será removido da lista de exibição do Debugger juntamente com sua variável e o nome da variável. Entretanto, se você marcar uma variável para a lista de observação (consulte “Usando a lista de observação” na página 69), ela não será removida. Para modificar o valor de uma variável: • Clique duas vezes no valor e insira um novo. O valor não pode ser uma expressão. Por exemplo, use "Hello", 3523 ou "http:// mas não use x + 2 ou eval("name:" +i). O valor pode ser uma seqüência de caracteres (qualquer valor entre aspas – ""), um número ou um valor booleano (true ou false). www.macromedia.com", Observação: Para escrever o valor de uma expressão para o painel Output no modo de teste, use o comando trace. Consulte “Usando o comando trace” na página 75. 68 Capítulo 3: Escrevendo e depurando scripts Usando a lista de observação Para monitorar um conjunto de variáveis críticas de forma organizada, você pode marcá-las para serem exibidas na lista de observação. Essa lista exibe o caminho absoluto para a variável e o valor. Também é possível inserir um novo valor de variável na lista de observação da mesma maneira que na guia Variables. Se uma variável local for inserida na lista de observação, seu valor aparecerá apenas quando o Flash Player for parado em uma linha do ActionScript com o escopo dessa variável. Todas as demais variáveis aparecem durante a reprodução do SWF. Se o Debugger não encontrar o valor da variável, ele será listado como Undefined (Indefinido). A lista de observação exibe apenas as variáveis e não as propriedades ou funções. Variáveis marcadas para a lista de observação e variáveis na lista de observação Para adicionar variáveis à lista de observação, escolha uma desta opções: • Na guia Variables ou Locals, clique com o botão direito do mouse (Windows) ou, • pressionando Control, clique (Macintosh) em uma variável selecionada e escolha Watch (Observação) no menu de contexto. É exibido um ponto azul próximo à variável. Na guia Watch, clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) e selecione Add no menu de contexto. Digite o caminho de destino para o nome da variável e o valor nos campos. Para remover variáveis da lista de observação: • Na guia Watch, clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) e selecione Remove no menu de contexto. Depurando scripts 69 Exibindo propriedades do clipe de filme e alterando propriedades editáveis No Debugger, a guia Properties exibe todos os valores de propriedades de qualquer clipe de filme no Stage. É possível alterar um valor e ver o efeito no arquivo SWF durante sua reprodução. Algumas propriedades de clipe de filme são somente leitura e não podem ser alteradas. Para exibir as propriedades de um clipe de filme no Debugger: 1 Selecione um clipe de filme na lista de exibição. 2 No Debugger, clique na guia Properties. Para modificar o valor de uma propriedade: • Clique duas vezes no valor e insira um novo. O valor não pode ser uma expressão. Por exemplo, insira 50 ou "clearwater", mas não x + 50. O valor pode ser uma seqüência de caracteres (qualquer valor entre aspas), um número ou um valor booleano (true ou false). Não é possível digitar valores de objeto ou array (por exemplo, {id: "rogue"} ou [1, 2, 3]) no Debugger. Para obter mais informações, consulte “Operadores de seqüência de caracteres” na página 43 e “Usando operadores para manipular valores em expressões” na página 41. Observação: Para escrever o valor de uma expressão para o painel Output no modo de teste, use o comando trace. Consulte “Usando o comando trace” na página 75. 70 Capítulo 3: Escrevendo e depurando scripts Definindo e removendo pontos de interrupção Um ponto de interrupção permite interromper um arquivo SWF em execução no Flash Player em uma linha específica do ActionScript. Use os pontos de interrupção para testar os possíveis itens problemáticos do código. Por exemplo, se você tiver escrito um conjunto de comandos if..else if e não conseguir determinar qual deles está em execução, adicione um ponto de interrupção antes dos comandos e execute uma depuração direta de cada um no Debugger. Você pode definir os pontos de interrupção no painel Actions ou no Debugger. (Para definir pontos de interrupção em scripts externos, use o Debugger.) Os pontos de interrupção definidos no painel Actions são salvos com o documento do Flash (arquivo FLA). Os pontos de interrupção definidos no Debugger não são salvos no arquivo FLA e são válidos somente para a sessão atual de depuração. Para definir ou remover um ponto de interrupção no painel Actions, siga um destes procedimentos: • Clique na margem esquerda. Um ponto vermelho indica um ponto de interrupção. • Clique no botão Debug options (Opções de depuração) acima do painel Script. • Clique com o botão direito do mouse (Windows) ou, pressionando Control, clique • (Macintosh) para exibir o menu de contexto e selecione Breakpoint, Remove Breakpoint ou Remove All Breakpoints. Pressione Control+Shift+B (Windows) ou Command+Shift+B (Macintosh). Observação: Em versões anteriores do Flash, um clique na margem esquerda do painel Script selecionava a linha de código; agora essa ação adiciona ou remove um ponto de interrupção. Para selecionar uma linha de código, clique com o botão do mouse e pressione Control (Windows) ou clique e pressione Command (Macintosh). Para definir e remover pontos de interrupção no Debugger, siga um destes procedimentos: • Clique na margem esquerda. Um ponto vermelho indica um ponto de interrupção. • Clique no botão Toggle Breakpoint (Alternar o ponto de interrupção) ou Remove All • • Breakpoints acima da visualização do código. Clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) para exibir o menu de contexto e selecione Breakpoint, Remove Breakpoint ou Remove All Breakpoints. Pressione Control+Shift+B (Windows) ou Command+Shift+B (Macintosh). Quando o Flash Player for interrompido no ponto de interrupção, será possível executar uma depuração total, parcial ou circular daquela linha de código. (ConsulteNo painel Actions, se o ponto de interrupção for definido em um comentário ou em uma linha em branco, ele será ignorado. Depurando scripts 71 Depurando direto as linhas de código No início de uma sessão de depuração, o Flash Player é interrompido. Se você definir pontos de interrupção no painel Actions, basta clicar no botão Continue (Continuar) para reproduzir o SWF até alcançar um ponto de interrupção. Por exemplo, no código a seguir, suponha que o ponto de interrupção esteja definido dentro de um botão na linha myFunction(): on(press){ myFunction(); } Quando você clica no botão, o ponto de interrupção é alcançado, e o Flash Player é interrompido. Desse modo, é possível executar uma depuração total para trazer o Debugger até a primeira linha da função myFunction(), independentemente do local em que ela esteja definida no documento. Também é possível executar uma depuração direta ou circular da função. Se você não definir pontos de interrupção no painel Actions, use o menu de salto no Debugger para selecionar qualquer script no filme. Com o script selecionado. você poderá adicionar pontos de interrupção. Depois de adicionar pontos de interrupção, clique no botão Continue para iniciar o filme. O Debugger parará quando alcançar o ponto de interrupção. À medida que você executa a depuração direta das linhas de código, os valores de variáveis e as propriedades são alterados na lista de observação e nas guias Variables, Locals e Properties. A seta amarela do lado esquerdo da visualização de código do Debugger indica a linha em que o Debugger parou. Use os seguintes botões localizados na parte superior da visualização de código: Continue Stop Debugging Toggle Breakpoint Remove All Breakpoints Step Out Step In Step Over Step In (Depuração total) avança o Debugger (indicado pela seta amarela) dentro de uma função. O botão Step In funciona somente com funções definidas pelo usuário. No exemplo a seguir, se você colocar um ponto de interrupção na linha 7 e clicar em Step In, o Debugger avançará para a linha 2, e, com um clique posterior em Step In, ele avançará para a linha 3. Para avançar o Debugger uma linha de código, clique em Step In para linhas que não têm funções definidas pelo usuário. Por exemplo, se você parar na linha 2 e selecionar Step In, o Debugger avançará para a linha 3, conforme mostrado no seguinte exemplo: 1 2 3 4 5 6 7 8 72 function myFunction() { x = 0; y = 0; } mover = 1; myFunction(); mover = 0; Capítulo 3: Escrevendo e depurando scripts Step Out (Depuração circular) avança o Debugger até sair de uma função. Esse botão só funcionará se você estiver parado no momento em uma função definida pelo usuário. Ele move a seta amarela para a linha posterior àquela em que a função foi chamada. No exemplo acima, se você colocar um ponto de interrupção na linha 3 e clicar em Step Out, o Debugger avançará para a linha 8. Clicar em Step Out em uma linha fora de uma função definida pelo usuário é o mesmo que clicar em Continue. Por exemplo, se você parar na linha 6 e clicar em Step Out, o exibidor continuará executando o script até encontrar um ponto de interrupção. Step Over (Depuração parcial) avança o Debugger sobre uma linha de código. Esse botão move a seta amarela para a próxima linha do script e ignora qualquer função definida pelo usuário. No exemplo acima, se você tiver parado na linha 7 e clicar em Step Over, irá diretamente para a linha 8, e myFunction() será ignorada. Continue sai da linha em que o exibidor está parado e continua a reprodução até alcançar um ponto de interrupção. Stop Debugging (Parar a depuração) desativa o Debugger, mas continua a reproduzir o SWF no Flash Player. Usando o painel Output No modo de teste, o painel Output exibe informações para ajudá-lo a solucionar problemas do arquivo SWF. Algumas informações, como erros de sintaxe, são exibidas automaticamente. Você pode exibir outras informações usando os comandos List Objects (Listar objeto) e List Variables (Listar variáveis). (Consulte “Listando os objeto de um arquivo SWF” na página 74 e “Listando as variáveis de um arquivo SWF” na página 74.) Se você usar o comando trace em seus scripts, poderá enviar informações específicas para o painel Output enquanto o SWF é executado. Essas informações podem incluir observações sobre o status do SWF ou o valor de uma expressão. (Consulte “Usando o comando trace” na página 75.) Para exibir o painel Output, selecione Window > Development Panels > Output ou pressione F2. Observação: Se houver erros de sintaxe em um script, o painel Output aparecerá automaticamente quando você verificar a sintaxe ou testar o SWF. Para trabalhar com o conteúdo do painel Output, use o menu pop-up Options localizado no canto superior direito. Usando o painel Output 73 Listando os objeto de um arquivo SWF No modo de teste, o comando List Objects exibe o nível, o quadro, o tipo de objeto (forma, clipe de filme ou botão), caminhos de destino e nomes de instância de clipes de filme, botões e campos de texto em uma lista hierárquica. Esse comando é especialmente útil para localizar o caminho de destino e o nome da instância corretos. Ao contrário do Debugger, a lista não é atualizada automaticamente enquanto o SWF é exibido. Selecione o comando List Objects sempre que desejar enviar as informações para o painel Output. O comando List Objects não lista todos os objeto de dados do ActionScript. Nesse contexto, um objeto é considerado como uma forma ou símbolo no Stage. Para exibir uma lista de objeto em um filme: 1 Se o filme não estiver em execução no modo de teste, selecione Control > Test Movie. 2 Selecione Debug > List Objects. Uma lista de todos os objeto do Stage é exibida no painel Output, como mostrado neste exemplo: Level #0: Frame=1 Label="Scene_1" Button: Target="_level0.myButton" Shape: Movie Clip: Frame=1 Target="_level0.myMovieClip" Shape: Edit Text: Target="_level0.myTextField" Text="This is sample text." Listando as variáveis de um arquivo SWF No modo de teste, o comando List Variables exibe uma lista de todas as variáveis atualmente no arquivo SWF. Essa lista é especialmente útil para localizar o caminho de destino e o nome da variável corretos. Ao contrário do Debugger, a lista não é atualizada automaticamente enquanto o SWF é exibido. Selecione o comando List Variables sempre que desejar enviar as informações para o painel Output. O comando List Variables também exibe as variáveis globais declaradas com o identificador As variáveis globais são exibidas na parte superior da saída de List Variables em uma seção intitulada “Global Variables” (Variáveis globais), e cada variável possui o prefixo _global. _global. Para exibir uma lista de variáveis em um SWF: 1 Se o SWF não estiver em execução no modo de teste, selecione Control > Test Movie. 2 Selecione Debug > List Variables. Uma lista de todas as variáveis atualmente no SWF é exibida no painel Output, como mostrado neste exemplo: Global Variables: Variable _global.MyGlobalArray = [object #1] [ 0:1, 1:2, 2:3 ] Level #0: Variable _level0.$version = "WIN 6,0,0,101" Variable _level0.RegularVariable = "Gary" Variable _level0.AnObject = [object #1] { MyProperty: [getter/setter] 3.14159 } 74 Capítulo 3: Escrevendo e depurando scripts Usando o comando trace Ao usar o comando trace em um script, você pode enviar informações para o painel Output. Por exemplo, ao testar um filme ou uma cena, você pode enviar observações de programação específicas para o painel ou fazer com que resultados específicos sejam exibidos quando for pressionado um botão ou quando um quadro for reproduzido. O comando trace é semelhante ao comando JavaScript alert. Quando o comando trace é usado em um script, você pode usar expressões como parâmetros. O valor de uma expressão é exibido no painel Output no modo de teste, como mostrado a seguir: O comando trace retorna valores que aparecem no painel Output. onClipEvent(enterFrame){ trace("onClipEvent enterFrame " + enterFrame++) } Atualizando o Flash Player para teste É possível fazer o download da versão mais recente do Flash Player do site da Macromedia na Web e usá-la para testar os arquivos SWF. Atualizando o Flash Player para teste 75 76 Capítulo 3: Escrevendo e depurando scripts Os eventos podem ser gerados pelo usuário, como cliques do mouse ou teclas pressionadas, ou podem ocorrer como resultado de outro processo, como um arquivo XML sendo carregado através da rede. O primeiro capítulo desta parte descreve os diversos tipos de eventos do Macromedia Flash e analisa como manipulá-los no ActionScript. O segundo capítulo mostra como aplicar esses princípios para criar apresentações interativas, aplicativos e animações simples. Capítulo 4: Manipulando eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Capítulo 5: Criando interação com o ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Parte II PARTE II Manipulando eventos e criando interação CAPÍTULO 4 Manipulando eventos Um evento é uma ocorrência de software ou hardware que requer uma resposta de um aplicativo Macromedia Flash. Por exemplo, um evento como um clique com o mouse ou um pressionamento de tecla chama-se evento do usuário, já que é o resultado de uma interação direta do usuário. Um evento gerado automaticamente pelo Flash Player, como a aparência inicial de um clipe de filme no Stage (Palco), chama-se evento do sistema, porque não é gerado diretamente pelo usuário. Para que seu aplicativo reaja a eventos, use manipuladores de eventos, um código do ActionScript associado a um objeto e um evento específicos. Por exemplo, quando um usuário clicar em um botão no Stage, você poderá avançar a reprodução até o próximo quadro. Ou quando o carregamento de um arquivo XML pela rede for concluído, você poderá exibir o conteúdo desse arquivo em um campo de texto. O ActionScript fornece várias formas de manipular eventos: métodos de manipuladores de eventos, ouvintes de eventos e manipuladores de eventos de botões e clipes de filme. Usando métodos de manipuladores de eventos Um método de manipulador de eventos é um método de classe chamado quando ocorre um evento em uma instância dessa classe. Por exemplo, a classe Button define um manipulador de evento onPress que é chamado sempre que o mouse é pressionado sobre um objeto Button. Ao contrário de outros métodos de classe, porém, o manipulador de eventos não é chamado diretamente; o Flash Player chama esse manipulador automaticamente quando ocorre o evento apropriado. Por padrão, os métodos de manipuladores de eventos são indefinidos: quando ocorre um evento específico, o manipulador correspondente é chamado, mas o aplicativo não responde mais ao evento. Para que seu aplicativo responda ao evento, defina uma função com o comando de função e atribua essa função ao manipulador de eventos apropriado. A função atribuída ao manipulador de eventos é chamada automaticamente sempre que o evento ocorre. Um manipulador de eventos consiste em três partes: o objeto ao qual se aplica o evento, o nome do método de manipulador de eventos do objeto e a função atribuída ao manipulador de eventos. O exemplo abaixo mostra a estrutura básica de um manipulador de eventos. object.eventMethod = function () { // Insira seu código em resposta ao evento } 79 Por exemplo, imagine um botão chamado next_btn no Stage. O código a seguir atribui uma função ao manipulador de eventos onPress do botão; essa função avança a reprodução até o próximo quadro na Timeline (Linha de tempo). next_btn.onPress = function () nextFrame(); } No código anterior, a função nextFrame() é atribuída diretamente a onPress. Você também pode atribuir uma referência de função (nome) a um método de manipulador de eventos e definir a função posteriormente. // Atribua uma referência de função ao método de manipulador de eventos onPress do botão next_btn.onPress = goNextFrame; // Defina a função doSubmit() function goNextFrame() { nextFrame(); } Observe que você atribui a referência de função, e não o valor de retorno da função, ao manipulador de eventos onPress. // Incorreto! next_btn.onPress = goNextFrame(); // Correto. next_btn.onPress = goNextFrame; Alguns manipuladores de eventos recebem parâmetros passados que fornecem informações sobre o evento ocorrido. Por exemplo, o manipulador de eventos TextField.onSetFocus é chamado quando uma instância de campo de texto ganha o foco do teclado. Esse manipulador de eventos recebe uma referência ao objeto de campo de texto que tinha o foco do teclado. Por exemplo, o código a seguir insere um texto no campo de texto que acabou de perder o foco do teclado. userName_txt.onSetFocus = function(oldFocus_txt) { oldFocus_txt.text = "I just lost keyboard focus"; } As seguintes classes do ActionScript definem manipuladores de eventos: Button, ContextMenu, ContextMenuItem, Key, LoadVars, LocalConnection, Mouse, MovieClip, MovieClipLoader, Selection, SharedObject, Sound, Stage, TextField, XML e XMLSocket. Para obter mais informações sobre os manipuladores de eventos que essas classes fornecem, consulte as respectivas entradas no Capítulo 12, “Dicionário do ActionScript,” na página 215. Você também pode atribuir funções a manipuladores de eventos para objeto criados durante a execução. Por exemplo, 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. _root.attachMovie("symbolID", "newclip_mc", 10); newclip_mc.onPress = function () { trace("You pressed me"); } Para obter mais informações, consulte “Criando clipes de filme durante a execução” na página 124. 80 Capítulo 4: Manipulando eventos Usando ouvintes de eventos Os ouvintes de eventos permitem que um objeto, chamado objeto ouvinte, receba eventos gerados por outro objeto, chamado objeto transmissor. O objeto transmissor registra o objeto ouvinte para que receba eventos gerados pelo transmissor. Por exemplo, você pode registrar um objeto de clipe de filme, para que receba notificações onResize do Stage, ou uma instância de botão, para que receba notificações onChanged de um objeto de campo de texto. É possível registrar vários objeto ouvintes, para que recebam eventos de um único transmissor, e registrar um único objeto ouvinte, para que receba eventos de vários transmissores. O modelo de eventos para ouvintes de eventos é semelhante ao de manipuladores de eventos (consulte “Usando métodos de manipuladores de eventos” na página 79), com duas diferenças principais: • O objeto ao qual você atribui o manipulador de eventos não é o objeto que emite o evento. • Você chama um método especial do objeto transmissor, addListener(), que registra o objeto ouvinte para receber seus eventos. Para usar ouvintes de eventos, crie um objeto ouvinte com uma propriedade que tenha o nome do evento gerado pelo objeto transmissor. Em seguida, atribua uma função ao ouvinte de eventos que responda de alguma forma ao evento. Por fim, chame addListener() no objeto que transmite o evento, passando a ele o nome do objeto ouvinte. O código a seguir descreve o modelo de ouvinte de eventos. listenerObject.eventName = function(){ // Insira seu código aqui }; broadcastObject.addListener(listenerObject); O objeto ouvinte especificado pode ser qualquer objeto, como um clipe de filme ou instância de botão no Stage, ou uma instância de qualquer classe do ActionScript. O nome do evento é um evento que ocorre em broadCastObject, que, em seguida, transmite o evento para listenerObject. Você pode registrar vários ouvintes para um transmissor de eventos. O exemplo a seguir mostra como usar o ouvinte de eventos Selection.onSetFocus para criar um gerenciador de foco simples para um grupo de campos de texto de entrada. Nesse caso, a borda do campo de texto que recebe o foco do teclado é ativada (exibida), e a borda do campo de texto que perdeu o foco é desativada. Usando ouvintes de eventos 81 Para criar um gerenciador de foco simples com ouvintes de eventos: 1 Com a ferramenta Text (Texto), crie um campo de texto no Stage. 2 Selecione o campo de texto e, no inspetor Property (Propriedades), 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). 3 Crie outro campo de texto de entrada abaixo do primeiro. Certifique-se de que a opção Show Border Around Text não esteja selecionada para esse campo de texto. Continue a criar campos de texto de entrada conforme desejado. 4 Selecione Frame 1 (Quadro 1) na Timeline e abra o painel Actions (Ações), em Window (Janela) > Development Panels (Painéis de desenvolvimento) > Actions. 5 Para criar um objeto que ouça a notificação de foco da classe Selection, digite o seguinte código no painel Actions: var focusListener = new Object(); focusListener.onSetFocus = function(oldFocus_txt, newFocus_txt) { oldFocus_txt.border = false; newFocus_txt.border = true; } Esse código cria um novo objeto (genérico) do ActionScript chamado focusListener. Esse objeto define para si uma propriedade onSetFocus, à qual atribui uma função. A função usa dois parâmetros: uma referência ao campo de texto que perdeu foco, e outra ao campo de texto que ganhou foco. A função define a propriedade border do campo de texto que perdeu foco como false e a propriedade border do campo de texto que ganhou foco como true. 6 Para registrar o objeto focusListener para receber eventos do objeto Selection, adicione o seguinte código ao painel Actions: Selection.addListener(focusListener); 7 Teste o filme, em Control (Controle) > Test Movie (Testar filme), clique no primeiro campo de texto e pressione Tab para alternar o foco entre campos. Para cancelar o registro de um objeto ouvinte para o recebimento de eventos, chame o método do objeto transmissor, passando para ele o nome do objeto ouvinte. removeListener() broadcastObject.removeListener(listenerObject); Os ouvintes de eventos estão disponíveis para objeto das seguintes classes do ActionScript: Key, Mouse, MovieClipLoader, Selection, TextField e Stage. Para obter uma lista de ouvintes de eventos disponíveis para cada classe, consulte as entradas da classe no Capítulo 12, “Dicionário do ActionScript,” na página 215. Usando manipuladores de eventos de botão e clipe de filme Você pode anexar manipuladores de eventos diretamente a uma instância de botão ou clipe de filme usando os manipuladores onClipEvent() e on(). O manipulador onClipEvent() manipula eventos de clipes de filme e o manipulador on(), eventos de botões. Use também on() com clipes de filme para criar clipes que recebem eventos de botão. Para obter mais informações, consulte “Criando clipes de filme com estados de botão” na página 84. 82 Capítulo 4: Manipulando eventos Para usar um manipulador on() ou onClipEvent(), anexe-o diretamente a uma instância de um botão ou clipe de filme no Stage e especifique o evento a ser manipulado para essa instância. Por exemplo, o manipulador de eventos on() a seguir é executado sempre que o usuário clica no botão ao qual o manipulador está anexado. on(press){ trace("Thanks for pressing me."); } Você pode especificar dois ou mais eventos para cada manipulador on(), separados por vírgulas. O ActionScript em um manipulador é executado quando um dos eventos especificados pelo manipulador ocorre. Por exemplo, o manipulador on() a seguir anexado a um botão é executado sempre que o mouse sai de cima do botão. on(rollOver, rollOut) { trace("You rolled over, or rolled out"); } Você também pode anexar mais de um manipulador a um objeto se desejar que scripts diferentes sejam executados quando ocorrerem eventos distintos. Por exemplo, você pode anexar os manipuladores onClipEvent() a seguir à mesma instância de clipe de filme. O primeiro é executado quando o primeiro clipe de filme é carregado (ou quando aparece no Stage); o segundo é executado quando o clipe de filme é descarregado do Stage. onClipEvent(load){ trace("I've loaded"); } onClipEvent (unload) { trace("I've unloaded"); } Para obter uma lista completa de eventos suportados pelos manipuladores de eventos on() e onClipEvent(), consulte on() na página 630 e onClipEvent() na página 631. A manipulação de eventos através de on() e onClipEvent() não entra em conflito com a manipulação de eventos através de métodos de manipulador de eventos definidos por você. Por exemplo, imagine que exista um botão em um arquivo SWF; o botão pode ter um manipulador on(press), que instrua o SWF a ser reproduzido, e pode ter um método onPress, para o qual você define uma função que instrui um objeto do Stage a girar. Quando o usuário clica no botão, o SWF é reproduzido e o objeto gira. Dependendo de sua preferência, você pode usar on() e onClipEvent(), métodos de manipulador de eventos ou os dois tipos de manipulação de eventos. Entretanto, o escopo de variáveis e objeto em manipuladores on() e onClipEvent() é diferente daquele em manipuladores e ouvintes de eventos. (Consulte “Escopo do manipulador de eventos” na página 84.) Você só pode anexar onClipEvent() e on() a ocorrências de clipes de filme colocadas no Stage durante a criação. Não é possível anexar onClipEvent() ou on() a instâncias de clipes de filme criadas durante a execução (por exemplo, com o método attachMovie()). Para anexar manipuladores de eventos a objeto criados durante a execução, use métodos de manipuladores de eventos ou ouvintes de eventos. (Consulte “Usando métodos de manipuladores de eventos” na página 79 e “Usando ouvintes de eventos” na página 81.) Usando manipuladores de eventos de botão e clipe de filme 83 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, o clipe de filme responde a eventos do mouse da mesma forma que um botão. Você também pode criar estados de botão automáticos (Up, Over e Down) em um clipe de filme adicionando os rótulos de quadro _up, _over e _down à Timeline do clipe de filme. Quando o usuário move o mouse sobre o clipe de filme ou clica nele, a reprodução é enviada para o quadro com o rótulo de quadro apropriado. Para designar a área de clicagem usada por um clipe de filme, utilize a propriedade hitArea da classe MovieClip. Para criar estados de botão em um clipe de filme: 1 Selecione um quadro na Timeline de um clipe de filme a ser usado como um estado do botão (Up, Over ou Down). 2 Insira um rótulo de quadro no inspetor Property (_up, _over ou _down). 3 Para adicionar outros estados de botão, repita as etapas 1 e 2. 4 Para fazer com que o clipe de filme responda a eventos do mouse, siga um destes procedimentos: ■ Anexe um manipulador de eventos on() à instância de clipe de filme, conforme analisado em “Usando manipuladores de eventos de botão e clipe de filme” na página 82. ■ Atribua uma função a um dos manipuladores de eventos de mouse do objeto de clipe de filme (onPress, onRelease etc.), conforme analisado em “Usando métodos de manipuladores de eventos” na página 79. Escopo do manipulador de eventos O escopo, ou contexto, 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, ou manipuladores on() e onClipEvent(). As funções atribuídas a métodos de manipuladores de eventos e ouvintes de eventos (como todas as funções do ActionScript escritas por você) definem o escopo de uma variável local, mas os manipuladores on() e onClipEvent() não o fazem. Por exemplo, considere os dois manipuladores de eventos a seguir. O primeiro é um manipulador de eventos onPress associado a um clipe de filme chamado clip_mc. O segundo é um manipulador on() anexado à mesma instância de clipe de filme. // Anexado à Timeline do clipe pai de clip_mc: clip_mc.onPress = function () { var color; // variável de função local color = "blue"; } // manipulador on() anexado a clip_mc: on(press){ var color; // nenhum escopo de variável local color = "blue"; } Embora os dois manipuladores de eventos contenham o mesmo código, eles têm resultados diferentes. No primeiro caso, a variável color é local para a função definida para onPress. No segundo caso, como o manipulador on() não define um escopo de variável local, o escopo da variável é a Timeline do clipe de filme clip_mc. 84 Capítulo 4: Manipulando eventos Para manipuladores de eventos on() anexados a botões, em vez de clipes de filme, o escopo da variável (bem como de chamadas de funções e métodos) é a Timeline que contém a instância de botão. Por exemplo, o manipulador de evento on() a seguir produzirá resultados diferentes, dependendo de estar anexado a um objeto de clipe de filme ou botão. No primeiro caso, a chamada de função play() inicia a reprodução da Timeline que contém o botão; no segundo caso, a chamada de função play() inicia a Timeline do clipe de filme ao qual o manipulador está anexado. // Anexado ao botão on(press){ play(); // reproduz a Timeline pai } // Anexado ao clipe de filme on(press){ play(); // reproduz a Timeline do clipe de filme } Ou seja, quando anexado a um objeto de botão, a chamada de método play() aplica-se à Timeline que contém o botão, isto é, a Timeline pai do botão. Entretanto, quando o mesmo manipulador estiver anexado a um objeto de clipe de filme, play() se aplicará ao clipe de filme que utiliza o manipulador. Dentro de uma definição de função de manipulador ou ouvinte de evento, a mesma função se aplicará à Timeline que contém a definição de função. Por exemplo, imagine que a função de manipulador de evento MovieClip.onPress seguinte foi declarada na Timeline que contém a instância de clipe de filme myMovieClip. play() // Função definida na Timeline do clipe de filme: myMovieClip.onPress = function () { play(); // reproduz a Timeline que contém a definição de função } Se desejar reproduzir o clipe de filme que define o manipulador de eventos onPress, refira-se explicitamente ao clipe usando a palavra-chave this, desta forma: myMovieClip.onPress = function () { this,play(); // reproduz a Timeline do clipe que define o manipulador onPress } Escopo do manipulador de eventos 85 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 manipulador de eventos usada, this pode se referir a objeto diferentes. Em uma função de manipulador ou ouvinte de eventos, this refere-se ao objeto que define o método de manipuladores ou ouvintes de eventos. Por exemplo, no código a seguir this refere-se a myClip. // manipulador de evento onPress() anexado a _level0.myClip: myClip.onPress = function () { trace(this); // exibe '_level0.myClip' } Em um manipulador on() anexado a um clipe de filme, this o manipulador on() está anexado. refere-se ao clipe de filme ao qual // Anexado ao clipe de filme chamado 'myClip' on(press){ trace(this); displays '_level0.myClip' } Em um manipulador on() anexado a um botão, this // Anexado ao botão na Timeline principal on(press){ trace(this); // exibe '_level0' } 86 Capítulo 4: Manipulando eventos refere-se à Timeline que contém o botão. CAPÍTULO 5 Criando interação com o ActionScript Em animações simples, o Macromedia Flash Player reproduz as cenas e os quadros de um arquivo SWF em seqüência. Em um arquivo SWF interativo, os espectadores usam o teclado e o mouse para percorrer um SWF, mover objeto, inserir informações em formulários e executar muitas outras operações interativas. Use o ActionScript para criar scripts que informem ao Flash Player qual ação executar na ocorrência de um evento. Os eventos que ativam um script ocorrem quando a reprodução atinge um quadro, quando um clipe de filme é carregado ou descarregado, ou quando o usuário clica em um botão ou pressiona uma tecla. Um script pode consistir em um único comando, como instruir um SWF a interromper a reprodução, ou uma série de comandos e instruções, como primeiro avaliar uma condição e depois executar uma ação. Muitos comandos do ActionScript são simples e permitem criar controles básicos para um SWF. Outras ações exigem alguma familiaridade com linguagens de programação e são planejadas para um desenvolvimento avançado. Sobre eventos e interação Sempre que um usuário clica no mouse ou pressiona uma tecla, é gerado um evento. Esses tipos de eventos normalmente são chamados eventos do usuário, porque são gerados em resposta a alguma ação do usuário final. Você pode escrever ActionScript para responder a esses eventos ou manipulá-los. Por exemplo, quando um usuário clica em um botão, você pode enviar a reprodução para outro quadro do arquivo SWF ou carregar uma nova página da Web no navegador. Em um arquivo SWF, botões, clipes de filme e campos de texto geram eventos aos quais você pode responder. O ActionScript fornece três formas de manipular eventos: métodos de manipuladores de eventos, ouvintes de eventos e manipuladores on() e onClipEvent(). Para obter informações sobre eventos e como manipulá-los, consulte Capítulo 4, “Manipulando eventos”, na página 79. 87 Controlando a reprodução do SWF As funções do ActionScript a seguir permitem controlar a reprodução na Timeline (Linha de tempo) e carregar uma nova página da Web em uma janela de navegador: • As funções gotoAndPlay() e gotoAndStop() enviam a reprodução para um quadro ou cena. • • Essas são funções globais que podem ser chamadas de qualquer script. Use também os métodos MovieClip.gotoAndPlay() e MovieClip.gotoAndStop() para navegar pela Timeline de um objeto de clipe de filme específico. As ações play() e stop() reproduzem e interrompem filmes. A ação getURL() vai até outro URL. Indo para um quadro ou uma cena Para ir para uma outra cena ou quadro específico no arquivo SWF, use as funções globais e gotoAndStop() ou os métodos gotoAndPlay() e gotoAndStop() equivalentes da classe MovieClip. Cada função ou método permite especificar um quadro para o qual ir na cena atual. Se o documento contiver várias cenas, você poderá especificar uma cena e quadro para os quais ir. gotoAndPlay() O exemplo a seguir usa a função global gotoAndPlay() no manipulador de eventos onRelease de um objeto de botão para enviar a reprodução da Timeline que contém o botão para o Frame (Quadro) 10. jump_btn.onRelease = function () { gotoAndPlay(10); } No próximo exemplo, o método MovieClip.gotoAndStop() envia a Timeline de um clipe de filme chamado categories_mc para o Frame 10 e pára. Ao usar os métodos de MovieClip gotoAndPlay() e gotoAndStop(), especifique uma instância para o método. jump_btn.onPress = function () { categories_mc.gotoAndStop(10); } Reproduzindo e interrompendo clipes de filme A menos que instruído de outra forma, depois que um arquivo SWF é iniciado, ele é reproduzido por cada quadro da Timeline. Para interromper ou iniciar um arquivo SWF, use as funções globais play() e stop() ou os métodos MovieClip equivalentes. Por exemplo, você pode usar stop() para interromper um SWF no fim de uma cena antes de passar para a cena seguinte. Depois que um SWF pára, ele deve ser iniciado explicitamente outra vez chamando play(). Você pode usar as ações play() e stop() ou métodos MovieClip para controlar a Timeline principal ou a Timeline de qualquer clipe de filme ou SWF carregado. O clipe de filme que você deseja controlar deve ter um nome de instância e um destino, e deve estar presente na Timeline. O seguinte manipulador on(press) anexado a um botão inicia a reprodução movendo o SWF ou o clipe de filme que contém o objeto de botão. // Anexado a uma instância de botão on(press){ // Reproduz a Timeline que contém o botão play(); } 88 Capítulo 5: Criando interação com o ActionScript Esse mesmo código do manipulador de eventos on() produzirá um resultado diferente quando anexado a um objeto de clipe de filme em vez de um botão. Os comandos incluídos em um manipulador on(), quando anexado a um objeto de botão, serão aplicados à Timeline que contém o botão, por padrão. Entretanto, os comandos incluídos em um manipulador on(), quando anexado a um objeto de clipe de filme, serão aplicados ao clipe de filme ao qual o manipulador on() está anexado. Por exemplo, o código do manipulador on() a seguir interrompe a Timeline do clipe de filme à qual o manipulador está anexado, e não aquela que contém o clipe de filme. on(press){ stop(); } As mesmas condições se aplicam a manipuladores onClipEvent() anexados a objeto de clipes de filme. Por exemplo, o código abaixo interrompe a Timeline do clipe de filme que contém o manipulador onClipEvent() quando o primeiro clipe é carregado ou aparece no Stage (Palco). onClipEvent(load){ stop(); } Indo para outro URL Para abrir uma página da Web em uma janela de navegador ou para enviar dados para outro aplicativo em um URL definido, use a função global getURL() ou o método MovieClip.getURL(). Por exemplo, é possível ter um botão com links para um novo site ou enviar variáveis da Timeline para um script CGI para ser processado da mesma forma que com um formulário HTML. Você também pode especificar uma janela de destino, como faria ao especificar uma janela com uma marca de âncora HTML (<a></a>). Por exemplo, o código abaixo abre a página inicial macromedia.com em uma janela de navegador em branco quando o usuário clica na instância de botão chamada homepage_btn. homepage_btn.onRelease = function () { getURL("http://www.macromedia.com", _blank); } Você também pode enviar variáveis junto com o URL, usando GET ou POST. Isso é útil se a página carregada de um servidor de aplicativos, como uma página do ColdFusion Server (CFM), esperar receber variáveis de formulário. Por exemplo, imagine que você deseje carregar uma página CFM chamada addUser.cfm que espere duas variáveis de formulário, name e age. Para isso, você pode criar um clipe de filme chamado variables_mc que defina essas duas variáveis, como mostrado abaixo. variables_mc.name = "Francois"; variables_mc.age = 32; O código a seguir carrega addUser.cfm em uma janela de navegador em branco e passa para a página CFM variables_mc.name e variables_mc.age no cabeçalho POST. variables_mc.getURL("addUser.cfm", "_blank", "POST"); Para obter mais informações, consulte getURL() na página 432. Controlando a reprodução do SWF 89 Criando interatividade e efeitos visuais Para criar interatividade e outros efeitos visuais, é preciso compreender as seguintes técnicas: • • • • • • • Criando um ponteiro de mouse personalizado Obtendo a posição do mouse Capturando pressionamentos de teclas Definindo valores de cores Criando controles de som Detectando colisões Criando uma ferramenta de desenho de linha simples Criando um ponteiro de mouse personalizado Um ponteiro de mouse padrão é a representação na tela do sistema operacional da posição do mouse do usuário. Ao substituir o ponteiro de mouse padrão por um criado no Flash, você pode integrar o movimento do mouse do usuário no arquivo SWF com mais precisão. O exemplo desta seção usa um ponteiro personalizado com o formato de uma seta grande. Porém, a eficiência desse recurso está na sua capacidade de transformar o ponteiro personalizado em qualquer forma, como uma bola de futebol a caminho da linha do gol ou um pedaço de tecido colocado por cima de um sofá para mudar sua cor. Para criar um ponteiro personalizado, crie o clipe de filme do ponteiro no Stage. Em seguida, no ActionScript, oculte o ponteiro padrão e controle seu movimento. Para ocultar o ponteiro padrão, use o método Mouse.hide() da classe Mouse interna. Para usar um clipe de filme como o ponteiro personalizado, use a ação startDrag(). Para criar um ponteiro personalizado: 1 Crie um clipe de filme para ser usado como um ponteiro personalizado e coloque uma instância do clipe no Stage. 2 Selecione a ocorrência do clipe de filme no Stage. 3 Selecione Window > Development Panels > Actions para abrir o painel Actions se ele ainda não estiver visível. 4 Digite o seguinte no painel Actions: onClipEvent (load) { Mouse.hide(); startDrag(this, true); } onClipEvent(mouseMove){ updateAfterEvent(); } O primeiro manipulador onClipEvent() oculta o mouse quando o clipe de filme aparece no Stage pela primeira vez; o segundo manipulador chama updateAfterEvent sempre que o usuário move o mouse. A função updateAfterEvent atualiza a tela imediatamente após a ocorrência do evento especificado, ao contrário do comportamento padrão, que atualiza a tela após a obtenção do próximo quadro. (Consulte updateAfterEvent() na página 806.) 90 Capítulo 5: Criando interação com o ActionScript 5 Selecione Control (Controlar) > Test Movie (Testar filme) para testar o ponteiro personalizado. Os botões ainda funcionarão quando você usar um ponteiro personalizado. É recomendável colocar o ponteiro personalizado na camada superior da Timeline para que ele se mova na frente dos botões e de outros objeto à medida que você move o mouse no SWF. Além disso, a dica de um ponteiro de mouse personalizado é o ponto de registro do clipe de filme que você usa como o ponteiro personalizado. Assim, se desejar que uma certa parte do clipe de filme funcione como a dica do mouse, defina as coordenadas do ponto de registro do clipe para que seja esse ponto. Para obter informações sobre os métodos da classe Mouse, consulte a entrada de Classe Mouse em Capítulo 12, “Dicionário do ActionScript”, na página 215. Obtendo a posição do mouse Você pode usar as propriedades _xmouse e _ymouse para localizar o ponteiro do mouse (cursor) em um SWF. Cada Timeline possui uma propriedade _xmouse e _ymouse que retorna a localização do mouse no seu sistema de coordenadas. A posição é sempre relativa ao ponto de registro. No caso da Timeline principal (_level0), o ponto de registro é o canto superior esquerdo. As propriedades _xmouse e _ymouse na Timeline principal e uma Timeline de clipe de filme Os procedimentos a seguir mostram duas maneiras de obter a posição do mouse. Criando interatividade e efeitos visuais 91 Para obter a posição atual do mouse na Timeline principal: 1 Crie duas caixas de texto dinâmicas e nomeie-as x_pos e y_pos. 2 Selecione Window > Development Panels > Actions para abrir o painel Actions se ele ainda não estiver visível. 3 Para retornar a posição do mouse na Timeline principal, adicione o código a seguir a qualquer quadro no SWF _level0: x_pos = _root._xmouse; y_pos = _root._ymouse; As variáveis x_pos e y_pos são usadas como recipientes para armazenar os valores das posições do mouse. Você pode usar essas variáveis em qualquer script em seu documento. No manipulador onClipEvent() a seguir, os valores de x_pos e y_pos são atualizados sempre que o usuário move o mouse. onClipEvent(mouseMove){ x_pos = _root._xmouse; y_pos = _root._ymouse; } Para obter a posição atual do mouse em um clipe de filme: 1 Crie um clipe de filme. 2 Selecione a instância do clipe de filme no Stage. Com o inspetor Property (Propriedades), nomeie-a como myMovieClip. 3 Selecione Window > Development Panels > Actions para abrir o painel Actions se ele ainda não estiver visível. 4 Use o nome da instância do clipe de filme para retornar a posição do mouse na Timeline principal. Por exemplo, o comando a seguir pode ser colocado em qualquer Timeline no SWF _level0 para retornar a posição _ymouse na instância myMovieClip: x_pos = _root.myMovieClip._xmouse y_pos = _root.myMovieClip._ymouse O código retorna as variáveis _xpos e _ypos do mouse em relação ao ponto de registro. 5 Selecione Control > Test Movie para testar o filme. Também é possível determinar a posição do mouse em um clipe de filme usando as propriedades e _ymouse em um evento do clipe, conforme mostrado no código a seguir: _xmouse onClipEvent (enterFrame){ xmousePosition = _xmouse; ymousePosition = _ymouse; } Para obter mais informações sobre as propriedades _xmouse e _ymouse, consulte MovieClip._xmouse na página 600 e MovieClip._ymouse na página 601. 92 Capítulo 5: Criando interação com o ActionScript Capturando pressionamentos de teclas Use os métodos da classe Key interna para detectar a última tecla pressionada pelo usuário. A classe Key não exige uma função construtora; para usar seus métodos, basta chamá-los na própria classe, como mostrado no exemplo a seguir: Key.getCode(); Você pode obter códigos de teclas virtuais ou valores ASCII (American Standard Code for Information Interchange) de pressionamentos de teclas: • Para obter o código de tecla virtual da última tecla pressionada, use o método getCode(). • Para obter o valor ASCII da última tecla pressionada, use o método getAscii(). Um código de tecla virtual é atribuído a cada tecla física de um teclado. Por exemplo, a tecla de seta para esquerda tem o código de tecla virtual 37. Usar esse código garante que os controles do arquivo SWF sejam os mesmos em todos os teclados, independentemente de linguagem ou plataforma. Valores ASCII são atribuídos aos primeiros 127 caracteres em cada conjunto de caracteres. Os valores ASCII fornecem informações sobre um caractere da tela. Por exemplo, a letra “A” e a letra “a” possuem valores ASCII diferentes. Decida quais teclas usar e determine seus códigos de teclas virtuais usando um destes procedimentos: • Consulte a lista de códigos de teclas em Apêndice C, “Teclas do teclado e valores de códigos de • • teclas”, na página 859. Use uma constante da classe Key. Na caixa de ferramentas Actions, clique na categoria Built-In Classes (Classes internas), clique em Movie, clique em Key (Tecla) e clique em Constants (Constantes). Atribua o manipulador onClipEvent() a seguir a um clipe de filme e, em seguida, selecione Control > Test Movie e pressione a tecla desejada. onClipEvent(load) { trace(Key.getCode()); } O código da tecla desejada é exibido no painel Output. Criando interatividade e efeitos visuais 93 Um lugar comum para se usar os métodos da classe Key é em um manipulador de eventos. No exemplo abaixo, o usuário move o carro usando as teclas de seta. O método Key.isDown() indica se tecla pressionada é a seta para a direita, para a esquerda, para cima ou para baixo. O manipulador de eventos, onEnterFrame, determina o valor Key.isDown(keyCode) a partir de comandos if. Dependendo do valor, o manipulador instrui o Flash Player a atualizar a posição do carro e exibir a direção. A entrada do teclado move o carro. O procedimento abaixo mostra como capturar pressionamentos de tecla para mover um clipe de filme para cima, para baixo, para a esquerda ou para a direita no Stage, dependendo de qual tecla de seta correspondente (para cima, para baixo, para a esquerda, para a direita) é pressionada. O clipe de filme é confinado a uma área arbitrária de 400 pixels de largura e 300 pixels de altura. Além disso, um campo de texto exibe o nome da tecla pressionada. 94 Capítulo 5: Criando interação com o ActionScript Para criar um clipe de filme ativado por teclado: 1 No Stage, crie um clipe de filme que deverá se mover em resposta a atividades de teclas do teclado. Neste exemplo, o nome da instância do clipe de filme é car. 2 No Stage, crie uma caixa de texto dinâmica que será atualizada com a direção do carro. Usando o inspetor Property, forneça a ela um nome de instância display_txt. Observação: Não confunda nomes de variáveis com nomes de instâncias. Para obter mais informações, consulte “Sobre a instância do campo de texto e os nomes de variáveis” na página 136. 3 Selecione Frame 1 na Timeline; em seguida, selecione Window > Development Panels > Actions para abrir o painel Actions, caso ele não esteja visível. 4 Para definir a distância que o carro percorre na tela com cada pressionamento de tecla, defina uma variável distance e defina seu valor inicial como 10. var distance = 10; 5 Para criar o manipulador de eventos para o clipe de filme do carro que verifique qual tecla de seta (para a esquerda, para a direita, para cima ou para baixo) está pressionada, adicione este código ao painel Actions: car.onEnterFrame = function() { }; 6 Adicione um comando with ao corpo do manipulador onEnterFrame e especifique car como o objeto do comando with. O código deve ser este: var distance = 10; car.onEnterFrame = function() { with (car) { } }; 7 Para verificar se a tecla de seta para a direita está sendo pressionada, e para mover o clipe de filme do carro de forma correspondente, adicione este código ao corpo do comando with. distance = 10; car.onEnterFrame = function() { with (car) { if (Key.isDown(Key.RIGHT)) { _x += distance; if (_x >= 400) { _x = 400; } _root.display_txt.text = "Right"; } }; Se a tecla de seta para a direita estiver sendo pressionada, a propriedade _x do carro será aumentada de acordo com valor especificado pela variável distance. O próximo comando if testa se o valor da propriedade _x do clipe é maior que ou igual a 400 (if(_x >=400)); nesse caso, sua posição é fixada em 400. Além disso, a palavra Right deve aparecer no SWF. Criando interatividade e efeitos visuais 95 8 Use código semelhante para testar se as teclas para a esquerda, para cima ou para baixo estão sendo pressionadas. distance = 10; car.onEnterFrame = function() { with (car) { if (Key.isDown(Key.RIGHT)) { _x += distance; if (_x >= 400) { _x = 400; } _root.display_txt.text = "Right"; } else if (Key.isDown(Key.LEFT)) { _x -= distance; if (_x < 0) { _x = 0; } _root.display_txt.text = "Left"; } else if (Key.isDown(Key.UP)) { _y -= distance; if (_y < 0) { _y = 0 ; } _root.display_txt.text = "Up"; } else if (Key.isDown(Key.DOWN)) { _y += distance; if (_y > 300) { _y = 300; } _root.display_txt.text = "Down"; } } } 9 Selecione Control > Test Movie para testar o arquivo. Para obter mais informações sobre os métodos da classe Key, consulte a entrada de Classe key em Capítulo 12, “Dicionário do ActionScript”, na página 215. 96 Capítulo 5: Criando interação com o ActionScript Definindo valores de cores É possível usar os métodos da classe Color interna para ajustar a cor de um clipe de filme. O método setRGB() atribui valores RGB (vermelho, verde, azul) hexadecimais ao clipe de filme. O exemplo a seguir usa setRGB() para alterar a cor de um objeto com base na entrada do usuário. A ação do botão cria um objeto Color e altera a cor do carro com base na entrada do usuário. Para definir o valor de cor de um clipe de filme: 1 Selecione um clipe de filme no Stage. 2 No inspetor Property, insira carColor como o nome da instância. 3 Crie um botão chamado color chip, coloque quatro instâncias do botão no Stage e nomeie-as como red, green, blue e black. 4 Selecione Frame 1 na Timeline principal e selecione Window > Development Panels > Actions. 5 Para criar um novo objeto Color que especifique o clipe de filme carColor, adicione o código a seguir ao painel Actions: myColor = new Color(_root.carColor); 6 Para que o botão azul altere a cor do clipe de filme carColor para azul, adicione o código a seguir ao painel Actions: _root.blue.onRelease = function(){ myColor.setRGB(0x0000ff) } Criando interatividade e efeitos visuais 97 O valor hexadecimal 0x0000ff é azul. A tabela a seguir exibe as outras cores que você usará e seus valores hexadecimais. Cor Valor hexadecimal Vermelho 0xff0000 Verde 0x00ff00 Azul 0x0000ff Preto 0x000000 7 Repita a etapa 6 para os outros botões (vermelho, verde e preto) para alterar a cor do clipe de filme para a cor correspondente. O código agora deve ser este: myColor = new Color(_root.carColor) _root.blue.onRelease = function(){ myColor.setRGB(0x0000ff) } _root.red.onRelease = function(){ myColor.setRGB(0xff0000) } _root.green.onRelease = function(){ myColor.setRGB(0x00ff00) } _root.black.onRelease = function(){ myColor.setRGB(0x000000) } 8 Selecione Control > Test Movie para alterar a cor do clipe de filme. Para obter mais informações sobre os métodos da classe Color, consulte a entrada de Classe Color em Capítulo 12, “Dicionário do ActionScript”, na página 215. 98 Capítulo 5: Criando interação com o ActionScript Criando controles de som Use a classe interna Sound para controlar sons em um arquivo SWF. Para usar os métodos da classe Sound, primeiro crie um novo objeto Sound. Depois, use o método attachSound() para inserir um som da biblioteca em um arquivo SWF enquanto o SWF estiver em execução. Quando o usuário solta o botão Play (Reproduzir), uma música é reproduzida pelo alto-falante. O método setVolume() da classe Sound controla o volume, e o método setPan() ajusta o balanço da esquerda e da direita de um som. Quando o usuário arrasta o controle deslizante de volume, o método setVolume() é chamado. Os procedimentos a seguir mostram como criar controles de som semelhantes aos mostrados acima. Criando interatividade e efeitos visuais 99 Para anexar um som a uma Timeline: 1 Selecione File > Import para importar um som. 2 Selecione um som na biblioteca, clique com o botão direito (Windows) ou, pressionando Control, clique (Macintosh) e selecione Linkage (Vinculação). 3 Selecione Export for ActionScript (Exportar para ActionScript) e Export in First Frame (Exportar no primeiro quadro); em seguida, especifique o identificador a_thousand_ways. 4 Adicione um botão ao Stage e nomeie-o como playButton. 5 Adicione um botão ao Stage e nomeie-o como stopButton. 6 Adicione um clipe de filme ao Stage e nomeie-o como speaker. 7 Selecione Frame 1 na Timeline principal e selecione Window > Development Panels > Actions. Adicione este código ao painel Actions: speaker.stop(); song = new Sound(); song.onSoundComplete = function() { speaker.stop(); }; song.attachSound("a_thousand_ways"); playButton.onRelease = function() { song.start(); speaker.play(); }; stopButton.onRelease = function () { song.stop(); speaker.stop(); } Esse código primeiro interrompe o clipe de filme speaker. Em seguida, cria um novo objeto Sound (song) e anexa o som cujo identificador de vinculação é a_thousand_ways. Depois, define um manipulador onSoundComplete para o objeto de música, que interrompe o clipe de filme speaker quando o som termina. Por fim, manipuladores onRelease associados aos objeto playButton e stopButton iniciam e interrompem o som usando os métodos Sound.start() e Sound.stop(), além de iniciar e interromper o clipe de filme speaker. 8 Selecione Control > Test Movie para ouvir o som. Para criar um controle de volume deslizante: 1 Arraste um botão para o Stage. 2 Selecione o botão e selecione Modify (Modificar) > Convert to Symbol (Converter em símbolo). Tenha cuidado ao selecionar o comportamento do clipe de filme. Isso criará um clipe de filme com o botão em seu primeiro quadro. 3 Selecione o clipe de filme e selecione Edit (Editar) > Edit Selected (Editar selecionados). 4 Selecione o botão e selecione Window > Development Panels > Actions. 100 Capítulo 5: Criando interação com o ActionScript 5 Insira as seguintes ações: on(press){ startDrag(this, false, left, top, right, bottom); } on (release) { stopDrag(); } Os parâmetros left, top, right e bottom de startDrag() são variáveis definidas em uma ação do clipe. 6 Selecione Edit (Editar) > Edit Document (Editar documento) para voltar à Timeline principal. 7 Selecione o clipe de filme no Stage. 8 Insira as seguintes ações: onClipEvent (load) { top = _y; bottom = _y; left = _x; right = _x+100; _x += 100; } onClipEvent (enterFrame) { _parent.song.setVolume(_x-left); } 9 Selecione Control > Test Movie para usar o controle deslizante de volume. Para criar um controle de balanço deslizante: 1 Arraste um botão para o Stage. 2 Selecione o botão e selecione Insert (Inserir) > Convert to Symbol. Selecione a propriedade do clipe de filme. 3 Selecione o clipe de filme e selecione Edit (Editar) > Edit Symbol (Editar símbolo). 4 Selecione o botão e selecione Window > Development Panels > Actions. 5 Insira as seguintes ações: on(press){ startDrag ("", false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag (); dragging = false; } Os parâmetros left, top, right e bottom de startDrag() são variáveis definidas em uma ação do clipe. 6 Selecione Edit (Editar) > Edit Document (Editar documento) para voltar à Timeline principal. 7 Selecione o clipe de filme no Stage. Criando interatividade e efeitos visuais 101 8 Insira as seguintes ações: onClipEvent(load){ top=_y; bottom=_y; left=_x-50; right=_x+50; center=_x; } onClipEvent (enterFrame){ if (dragging==true){ _parent.setPan((_x-center)*2); } } 9 Selecione Control > Test Movie para usar o controle deslizante de balanço. Para obter mais informações sobre os métodos da classe Sound, consulte a entrada de Classe Sound em Capítulo 12, “Dicionário do ActionScript”, na página 215. Detectando colisões O método hitTest() da classe MovieClip detecta colisões em um arquivo SWF. Ele verifica se um objeto colidiu com um clipe de filme e retorna um valor booleano (true ou false). Existem dois casos em que é necessário saber se houve colisão: para testar se o usuário chegou a uma certa área estática no Stage, e para determinar quando um clipe de filme alcançou outro. Com hitTest(), você pode determinar esses resultados. Você pode usar os parâmetros de hitTest() para especificar as coordenadas x e y de uma área de clicagem no Stage ou usar o caminho de destino de outro clipe de filme como uma área de clicagem. Quando x e y são especificadas, hitTest() retorna true se o ponto identificado por (x, y) não for transparente. Quando um destino é passado para hitTest(), as caixas delimitadoras dos dois clipes de filme são comparadas. Se elas se sobreporem, hitTest() retornará true. Se não houver uma interseção entre as duas caixas, hitTest() retornará false. “True” aparece no campo de texto sempre que o ponteiro do mouse está sobre o corpo do carro. 102 Capítulo 5: Criando interação com o ActionScript Você também pode usar hitTest() para testar uma colisão entre dois clipes de filme. “True” aparece no campo de texto sempre que um clipe de filme toca no outro. Os procedimentos a seguir mostram como detectar colisões usando o exemplo do carro. Para detectar a colisão entre um clipe de filme e um ponto no Stage: 1 Crie um novo clipe de filme no Stage e insira box como o nome da instância no inspetor Property. 2 Crie uma caixa de texto dinâmica no Stage e insira status como o nome da instância no inspetor Property. 3 Selecione o primeiro quadro na Layer 1 (Camada 1) da Timeline. 4 Selecione Window > Development Panels > Actions para abrir o painel Actions se ele ainda não estiver visível. 5 Adicione este código ao painel Actions: box.onEnterFrame = function () { status.text = this.hitTest(_xmouse, _ymouse, true); } 6 Selecione Control > Test Movie e mova o mouse sobre o clipe de filme para testar a colisão. O valor true é exibido sempre que o mouse está sobre um pixel não transparente. Para executar a detecção de colisão em dois clipes de filme: 1 Arraste dois clipes de filme para o Stage e atribua a eles os nomes de instância car e area. 2 Crie uma caixa de texto dinâmica no Stage e insira status como o nome da instância no inspetor Property . 3 Selecione o primeiro quadro na Layer 1 (Camada 1) da Timeline. 4 Selecione Window > Development Panels > Actions para abrir o painel Actions se ele ainda não estiver visível. Criando interatividade e efeitos visuais 103 5 Insira o código a seguir no painel Actions: area.onEnterFrame = function () { status.text=this.hitTest(car); } car.onPress = function (){ this.startDrag(false); updateAfterEvent(); } car.onRelease = function () { this.stopDrag(); } 6 Selecione Control > Test Movie e arraste o clipe de filme para testar a detecção da colisão. Sempre que a caixa delimitadora do carro formar uma interseção com a caixa delimitadora da área, o status será true. Para obter mais informações, consulte Para obter mais informações, consulte em Capítulo 12, “Dicionário do ActionScript”, na página 215. MovieClip.hitTest() Criando uma ferramenta de desenho de linha simples Use métodos da classe MovieClip para desenhar linhas e preenchimentos no Stage durante a reprodução do arquivo SWF. Isso permite criar ferramentas de desenho para usuários e desenhar formas no SWF em resposta a eventos. Os métodos de desenho são beginFill(), beginGradientFill(), clear(), curveTo(), endFill(), lineTo(), lineStyle() e moveTo(). É possível aplicar esses métodos a qualquer instância de clipe de filme (por exemplo, myClip.lineTo()) ou a um nível do SWF (_root.curveTo()). Os métodos lineTo() e curveTo() permitem desenhar linhas e curvas, respectivamente. Especifique uma cor de linha, espessura e configuração alfa para uma linha ou curva com o método lineStyle(). O método de desenho moveTo() define a posição de desenho atual como coordenadas x e y do Stage especificadas por você. Os métodos beginFill() e beginGradientFill() preenchem um caminho fechado com um preenchimento sólido ou gradiente, respectivamente, e endFill() aplica o preenchimento especificado na última chamada a beginFill() ou beginGradientFill(). O método clear() apaga o que foi desenhado no objeto de clipe de filme especificado. Para obter mais informações, consulte MovieClip.beginFill() na página 538, MovieClip.beginGradientFill() na página 539, MovieClip.clear() na página 543, MovieClip.curveTo() na página 546, MovieClip.endFill() na página 549, MovieClip.lineTo() na página 564, MovieClip.lineStyle() na página 562 e MovieClip.moveTo() na página 570. 104 Capítulo 5: Criando interação com o ActionScript Para criar uma ferramenta de desenho de linha simples: 1 Em um novo documento, crie um novo botão no Stage e digite clear_btn como o nome de instância no inspetor Property. 2 Selecione Frame 1 na Timeline; em seguida, selecione Window > Development Panels > Actions para abrir o painel Actions se ele não estiver visível. 3 No painel Actions, digite este código: _root.onMouseDown = function() { _root.lineStyle(5, 0xFF0000, 100); _root.moveTo(_root._xmouse, _root._ymouse); isDrawing = true; }; _root.onMouseMove = function() { if (isDrawing == true) { _root.lineTo(_root._xmouse, _root._ymouse); updateAfterEvent(); } }; _root.onMouseUp = function() { isDrawing = false; }; clear_btn.onRelease = function() { _root.clear(); }; 4 Selecione Control > Test Movie para testar o filme. Clique e arraste o mouse para desenhar uma linha no Stage. Clique no botão para apagar o que foi desenhado. Desconstruindo um script de exemplo No arquivo SWF de exemplo zapper.swf, que pode ser exibido em Usando a Ajuda do Flash, quando um usuário arrasta a joaninha até a tomada elétrica, a joaninha cai e a tomada treme. A Timeline principal tem apenas um quadro e contém três objeto: a joaninha, a tomada e um botão de redefinição. Cada um desses objeto é uma instância de clipe de filme. Desconstruindo um script de exemplo 105 Existe um script no SWF; ele está anexado à instância bug, como mostrado no painel Actions abaixo: Ação Manipulador de eventos Evento Variável Comando condicional if Painel Actions com o script anexado à instância bug O nome de instância da joaninha é bug e o nome de instância da tomada é zapper. No script, a referência à joaninha é feita com this, pois o script está anexado à joaninha, e a palavra reservada this refere-se ao objeto que o contém. Existem dois manipuladores onClipEvent() com dois eventos diferentes: load e enterFrame. As ações no comando onClipEvent(load) são executadas somente uma vez, quando o SWF é carregado. As ações no comando onClipEvent(enterFrame) são executadas sempre que a reprodução entra em um quadro. Mesmo em um SWF com apenas um quadro, a reprodução ainda entra nesse quadro repetidamente e o script é executado também repetidamente. As ações a seguir ocorrem dentro de cada manipulador onClipEvent(): onClipEvent(load) Duas variáveis, initx e inity, são definidas para armazenar as posições iniciais x e y da instância de clipe de filme bug. A função é definida e atribuída ao evento onRelease da instância Reset. Essa função é chamada todas as vezes que o botão do mouse é pressionado e liberado sobre o botão Reset (Redefinir). A função recoloca a joaninha na posição inicial no Stage, redefine seus valores de rotação e alfa e redefine a variável zapped como false. 106 Capítulo 5: Criando interação com o ActionScript onClipEvent(enterFrame) Um comando if condicional usa o método hitTest() para verificar se a instância da joaninha entra em contato com a instância da tomada (_root.zapper). Há dois resultados possíveis para a avaliação, true ou false: onClipEvent (load) { initx = _x; inity = _y; _root.Reset.onRelease = function() { zapped = false; _x = initx; _y = inity; _alpha = 100 _rotation = 0; }; } Se o método hitTest() retornar true, o método stopDrag() será chamado, a variável zapper será definida como true, as propriedades alpha e rotation serão alteradas e a instância zapped receberá um comando para ser executada. Se o método hitTest() retornar false, não será executado nenhum código entre chaves {} logo após o comando if. Existem dois manipuladores on() anexados à instância bug com dois eventos diferentes: press e release. As ações no comando on(press) são executadas quando o botão do mouse é pressionado sobre a instância bug. As ações no comando on(release) são executadas quando o botão do mouse é liberado sobre a instância bug. As ações a seguir ocorrem dentro de cada manipulador onClipEvent(): on(press) Uma ação startDrag() torna a joaninha arrastável. Como o script está anexado à instância bug, a palavra-chave this indica que é a instância bug que é arrastável: on(press){ this.startDrag(); } on(release) Uma ação stopDrag() interrompe a ação arrastar: on (release) { stopDrag(); } Para observar o SWF ser executado, consulte a Ajuda do Guia de referência do ActionScript. Desconstruindo um script de exemplo 107 108 Capítulo 5: Criando interação com o ActionScript Esta parte analisa o modelo de objeto do Macromedia Flash durante a execução e seus recursos, concentrando-se no trabalho com clipes de filmes e texto. Ela também descreve como criar classes e interfaces próprias com o ActionScript 2. Capítulo 6: Usando as classes internas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Capítulo 7: Trabalhando com clipes de filme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Capítulo 8: Trabalhando com texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Capítulo 9: Criando classes com o ActionScript 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Parte III PARTE III Trabalhando com objetos e classes CAPÍTULO 6 Usando as classes internas Além dos elementos e construções básicas do ActionScript (as repetições for e while, por exemplo) e dos tipos de dados primitivos (números, seqüências de caracteres e arrays) descritos anteriormente (consulte “Conceitos básicos do ActionScript” na página 21), o ActionScript também fornece várias classes internas ou tipos de dados complexos. Essas classes oferecem vários recursos e funcionalidades de script. Algumas classes baseiam-se na especificação ECMAScript e são chamadas classes básicas do ActionScript. Alguns exemplos desse tipo de classe são: Array, Boolean, Date e Math. Para obter mais informações, consulte “Classes básicas” na página 113.) As outras classes internas do ActionScript são específicas para o modelo de objeto do Macromedia Flash e do Flash Player. Para entender a diferença entre as classes básicas do ActionScript e as classes específicas do Flash, considere a distinção entre JavaScript básico e cliente: da mesma maneira que as classes JavaScript cliente fornecem controle sobre o ambiente do cliente (o conteúdo do navegador e da página da Web), as classes específicas do Flash oferecem controle do tempo de execução sobre a aparência e o comportamento de um aplicativo Flash. Este capítulo apresenta as classes internas do ActionScript, descreve as tarefas comuns que você pode realizar com essas classes e fornece exemplos de código. Para obter uma visão geral dessas classes, consulte “Visão geral das classes internas” na página 112. Para obter uma visão geral sobre o trabalho com classes e objeto na programação orientada a objeto, consulte “Sobre classes e instâncias” na página 111. Sobre classes e instâncias Na programação orientada a objeto, uma classe define uma categoria de objeto. Uma classe descreve as propriedades (dados) e o comportamento (métodos) de um objeto, da mesma maneira que uma planta arquitetônica descreve as características de uma construção. Para usar as propriedades e os métodos definidos por uma classe, primeiro você deve criar uma instância dessa classe. A relação entre uma instância e sua classe é semelhante à relação entre uma casa e sua planta arquitetônica. 111 Criando um novo objeto Para criar uma instância de uma classe do ActionScript, use o operador new para chamar a função construtora da classe. A função construtora sempre tem o mesmo nome da classe e retorna uma instância da classe, que você normalmente atribui a uma variável. Por exemplo, o código a seguir cria um novo objeto Video. var my_video = new Video(); Em alguns casos, não é necessário criar a instância de uma classe para usá-la. Para obter mais informações, consulte “Sobre os membros de classe (estáticos)” na página 112. Acessando propriedades de objeto Use o operador ponto (.) para acessar o valor de uma propriedade em um objeto. Coloque o nome do objeto à esquerda do ponto e o nome da propriedade à direita. Por exemplo, no comando a seguir, myObject é o objeto e name é a propriedade: myObject.name O código a seguir cria um novo objeto TextField e define sua propriedade autoSize como true. var my_text = new TextField(); my_text.autoSize = true; Você também pode usar o operador de acesso de array ([]) para acessar as propriedades de um objeto. Consulte “Operadores ponto e de acesso de array” na página 46. Chamando métodos de objeto Use o operador ponto (.) seguido pelo método para chamar o método de um objeto. Por exemplo, o código a seguir cria um novo objeto Sound e chama seu método setVolume(): mySound = new Sound(this); mySound.setVolume(50); Sobre os membros de classe (estáticos) Algumas classes internas do ActionScript apresentam membros de classe (ou membros estáticos). Os membros de classe (propriedades e métodos) são acessados ou chamados não em uma instância da classe, mas no próprio nome da classe. Ou seja, você não cria uma instância da classe para usar essas propriedades e métodos. Por exemplo, todas as propriedades da classe Math são estáticas. O código a seguir chama o método max() da classe Math para determinar o maior de dois números. var largerNumber = Math.max(10, 20); Visão geral das classes internas Esta seção lista todas as classes do ActionScript, incluindo uma breve descrição de cada uma delas e referências cruzadas para outras seções relevantes da documentação. 112 Capítulo 6: Usando as classes internas Classes básicas As classes básicas do ActionScript são aquelas emprestadas diretamente do ECMAScript. Na caixa de ferramentas Actions (Ações), essas classes localizam-se na subpasta Built-in Classes (Classes internas) > Core (Básicas). Classe Descrição Arguments Um array que contém os valores passados como parâmetros para qualquer função. Consulte a entrada Classe Arguments no Capítulo 12, “Dicionário do ActionScript”, na página 215. Array A classe Array contém métodos e propriedades para o trabalho com os objeto array. Consulte a entrada Classe Array no Capítulo 12, “Dicionário do ActionScript”, na página 215. Boolean A classe Boolean é uma cobertura dos valores booleanos (true ou false). Consulte a entrada Classe Boolean no Capítulo 12, “Dicionário do ActionScript”, na página 215. Button A classe Button fornece métodos e propriedades para o trabalho com os objeto button. Consulte a entrada Classe Button no Capítulo 12, “Dicionário do ActionScript”, na página 215. Date A classe Date fornece acesso aos valores de data e hora relativos ao horário universal (Hora de Greenwich) ou relativos ao sistema operacional no qual o Flash Player está em execução. Consulte a entrada Classe Date no Capítulo 12, “Dicionário do ActionScript”, na página 215. Error A classe Error contém informações sobre os erros que ocorrem nos scripts. Em geral, use o comando throw para gerar uma condição de erro, que você pode manipular com um comando try..catch..finally. Consulte try..catch..finally e Classe Error no Capítulo 12, “Dicionário do ActionScript”, na página 215. Function A classe Function é a representação de classe de todas as funções do ActionScript, incluindo aquelas que são nativas do ActionScript e as que você define. Consulte a entrada Classe Function no Capítulo 12, “Dicionário do ActionScript”, na página 215. Math A classe Math permite que você acesse e manipule constantes e funções matemáticas. Todas as propriedades e métodos da classe Math são estáticos e devem ser chamados com a sintaxe Math.method(parâmetro) ou Math.constant. Consulte a entrada Classe Math no Capítulo 12, “Dicionário do ActionScript”, na página 215. Number A classe Number é uma cobertura do tipo de dados do número primitivo. Consulte a entrada Classe Number no Capítulo 12, “Dicionário do ActionScript”, na página 215. Visão geral das classes internas 113 Classe Descrição Object A classe Object encontra-se na raiz da hierarquia de classes do ActionScript; todas as outras classes herdam seus métodos e propriedades. Consulte a entrada Classe Object no Capítulo 12, “Dicionário do ActionScript”, na página 215. String A classe String é uma cobertura para o tipo de dados primitivo de seqüência de caracteres, que permite o uso dos métodos e propriedades do objeto String para manipular tipos de valores primitivos de seqüências de caracteres. Consulte a entrada Classe String no Capítulo 12, “Dicionário do ActionScript”, na página 215. Classes específicas do Flash Player As tabelas a seguir listam as classes que são específicas do Flash Player e do modelo de tempo de execução do Flash. Essas classes normalmente dividem-se em quatro categorias: classes de filme (que fornecem controle geral de arquivos SWF e Flash Player), classes de mídia (para trabalhar com som e vídeo), classes cliente/servidor (para trabalhar com XML e outras fontes de dados externas) e classes de criação (que fornecem controle sobre o ambiente de criação do Flash). Observação: Essa categorização afeta os locais das classes na caixa de ferramentas Actions, mas não o modo como você usa essas classes. Classes de filme As classes de filme fornecem controle sobre a maioria dos elementos visuais em um arquivo SWF, incluindo clipes de filme, campos de texto e botões. As classes de filme localizam-se na caixa de ferramentas Actions na subpasta Built-in Classes > Movie (Filme). 114 Classe Descrição Accessibility A classe Accessibility gerencia a comunicação entre os arquivos SWF e os aplicativos de leitura de tela. Use métodos dessa classe junto com a propriedade global _accProps para controlar as propriedades acessíveis dos clipes de filmes, botões e campos de textos em tempo de execução. Consulte _accProps e Classe Accessibility no Capítulo 12, “Dicionário do ActionScript”, na página 215. Button Cada botão em um SWF é uma instância da classe Button. A classe Button fornece métodos, propriedades e manipuladores de eventos para trabalhar com botões. Consulte a entrada Classe Button no Capítulo 12, “Dicionário do ActionScript”, na página 215. Color A classe Color permite que você obtenha e defina os valores de cores RGB dos objeto do clipe de filme. Para obter mais informações, consulte a entrada Classe Color em Capítulo 12, “Dicionário do ActionScript”, na página 215. Para obter um exemplo do uso da classe Color com o objetivo de alterar a cor de clipes de filmes, consulte “Definindo valores de cores” na página 97. Capítulo 6: Usando as classes internas Classe Descrição ContextMenu A classe ContextMenu permite que você controle o conteúdo do menu de contexto do Flash Player. Você pode associar os objeto ContextMenu separados a objeto MovieClip, Button ou TextField usando a propriedade menu disponível para essas classes. Também é possível adicionar itens de menu personalizados a um objeto ContextMenu usando a classe ContextMenuItem. Consulte Classe ContextMenu e as entradas Classe ContextMenuItem no Capítulo 12, “Dicionário do ActionScript”, na página 215. ContextMenuItem A classe ContextMenuItem permite que você crie novos itens de menu que aparecem no menu de contexto do Flash Player. Adicione novos itens de menu criados com essa classe ao menu de contexto do Flash Player usando a classe ContextMenu. Consulte Classe ContextMenu e as entradas Classe ContextMenuItem no Capítulo 12, “Dicionário do ActionScript”, na página 215. Key A classe Key fornece métodos e propriedades para obter informações sobre o teclado e os pressionamentos de tecla. Para obter mais informações, consulte a entrada Classe key em Capítulo 12, “Dicionário do ActionScript”, na página 215. Para obter um exemplo da captura de pressionamentos de tecla para criar um SWF interativo, consulte “Capturando pressionamentos de teclas” na página 93. LocalConnection A classe LocalConnection permite a comunicação entre dois SWFs executados no mesmo computador. Consulte a entrada Classe LocalConnection no Capítulo 12, “Dicionário do ActionScript”, na página 215. Mouse A classe Mouse fornece controle sobre o mouse em um SWF; por exemplo, essa classe permite que você oculte ou mostre o ponteiro do mouse. Para obter mais informações, consulte a entrada Classe Mouse em Capítulo 12, “Dicionário do ActionScript”, na página 215. Para obter um exemplo do uso da classe Mouse, consulte “Criando um ponteiro de mouse personalizado” na página 90. MovieClip Cada clipe de filme em um filme do Flash é uma instância da classe MovieClip. Use os métodos e propriedades dessa classe para controlar objeto de clipe de filme. Consulte Capítulo 7, “Trabalhando com clipes de filme”, na página 119 e a entrada Classe MovieClip no Capítulo 12, “Dicionário do ActionScript”, na página 215. MovieClipLoader A classe MovieClipLoader permite que você acompanhe o andamento do download de arquivos SWF e JPEG usando um mecanismo de evento para o ouvinte. Consulte “Pré-carregando arquivos SWF e JPEG” na página 209 e a entrada Classe MovieClipLoader no Capítulo 12, “Dicionário do ActionScript”, na página 215. PrintJob A classe PrintJob permite que você imprima o conteúdo renderizado dinamicamente e documentos de várias páginas. Consulte a entrada Classe PrintJob no Capítulo 12, “Dicionário do ActionScript”, na página 215 e “Using the ActionScript PrintJob class” (Usando a classe PrintJob do ActionScript) em Usando a Ajuda do Flash. Visão geral das classes internas 115 116 Classe Descrição Selection A classe Selection permite que você obtenha e defina o foco, os intervalos de seleção e os pontos de inserção do campo de texto. Consulte a entrada Classe Selection no Capítulo 12, “Dicionário do ActionScript”, na página 215. SharedObject A classe SharedObject fornece o armazenamento de dados local no computador do cliente. Consulte a entrada Classe SharedObject no Capítulo 12, “Dicionário do ActionScript”, na página 215. Stage A classe Stage fornece informações sobre dimensões do arquivo SWF, alinhamento, modos de escala e reporta eventos de redimensionamento do Stage. Consulte a entrada Classe Stage no Capítulo 12, “Dicionário do ActionScript”, na página 215. System A classe System fornece informações sobre o Flash Player e o sistema em que o Flash Player está em execução (por exemplo, resolução da tela e linguagem do sistema atual). 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 SWF. Consulte a entrada Classe System no Capítulo 12, “Dicionário do ActionScript”, na página 215. TextField A classe TextField fornece controle sobre os campos de texto dinâmicos e de entrada. Consulte Capítulo 8, “Trabalhando com texto”, na página 135 e a entrada Classe TextField no Capítulo 12, “Dicionário do ActionScript”, na página 215. TextField.StyleSheet A classe TextField.StyleSheet (uma “classe interna” à classe TextField) permite que você crie e aplique estilos de texto CSS ao texto em formato HTML ou XML. Consulte “Formatando o texto com Cascading Style Sheet” na página 139 e a entrada Classe TextField.StyleSheet no Capítulo 12, “Dicionário do ActionScript”, na página 215. TextFormat A classe TextFormat permite que você aplique estilos de formatação aos caracteres ou parágrafos em um objeto TextField. Consulte “Usando a classe TextFormat” na página 138 e a entrada Classe TextFormat em Capítulo 12, “Dicionário do ActionScript”, na página 215. Capítulo 6: Usando as classes internas Classes de mídia As classes de mídia fornecem controle da reprodução de som e vídeo em um arquivo SWF, bem como acesso ao microfone e à câmera do usuário, se estiverem instalados. Essas classes localizam-se na subpasta Built-In Classes > Media (Mídia) na caixa de ferramentas Actions. Classe Descrição Camera A classe Camera fornece acesso à câmera do usuário, se houver uma instalada. Quando usado com o Flash Communication Server MX, o arquivo SWF pode capturar, transmitir e gravar imagens e vídeo da câmera de um usuário. Consulte a entrada Classe Camera no Capítulo 12, “Dicionário do ActionScript”, na página 215. Microphone A classe Microphone fornece acesso ao microfone do usuário, se houver um instalado. Quando usado com o Flash Communication Server MX, o SWF pode transmitir e gravar áudio do microfone de um usuário. Consulte a entrada Classe Microphone no Capítulo 12, “Dicionário do ActionScript”, na página 215. NetConnection A classe NetConnection é usada para estabelecer uma conexão de fluxo local para reproduzir um arquivo Flash Video (FLV) de um endereço HTTP ou do sistema de arquivos local. Para obter mais informações, consulte a entrada Classe NetConnection em Capítulo 12, “Dicionário do ActionScript”, na página 215. Para obter mais informações sobre a reprodução de arquivos FLV na Internet, consulte “Reproduzindo arquivos FLV externos dinamicamente” na página 206. NetStream A classe NetStream é usada para controlar a reprodução de arquivos FLV. Para obter mais informações, consulte a entrada Classe NetStream em Capítulo 12, “Dicionário do ActionScript”, na página 215. Para obter mais informações sobre a reprodução de arquivos FLV na Internet, consulte “Reproduzindo arquivos FLV externos dinamicamente” na página 206. Sound A classe Sound fornece controle sobre os sons em um SWF. Para obter mais informações, consulte a entrada Classe Sound em Capítulo 12, “Dicionário do ActionScript”, na página 215. Para obter um exemplo do uso da classe Sound para criar controladores de volume e balanço, consulte “Criando controles de som” na página 99. Video A classe Video é usada para exibir objeto de vídeo em um SWF. Consulte a entrada Classe Video no Capítulo 12, “Dicionário do ActionScript”, na página 215. Visão geral das classes internas 117 Classes de cliente/servidor A tabela a seguir lista as classes que permitem o envio e recebimento de dados de fontes externas ou a comunicação com os servidores de aplicativos por FTP, HTTP ou HTTPS. Observação: No Flash Player 7, um SWF pode carregar dados apenas do mesmo domínio do qual for atendido. Para obter mais informações, consulte “Recursos de segurança do Flash Player” na página 195 e “Sobre a autorização de acesso a dados entre domínios” na página 197. Essas classes localizam-se na subpasta Built-In Classes > Client/Server (Cliente/Servidor) no painel Actions. LoadVars A classe LoadVars é uma alternativa à ação loadVariables() para transferir variáveis entre um arquivo SWF e um servidor em pares nome/ valor. Consulte “Usando a classe LoadVars” na página 186 e a entrada Classe LoadVars no Capítulo 12, “Dicionário do ActionScript”, na página 215. XML A classe XML estende a classe XMLNode e fornece métodos, propriedades e manipuladores de eventos para o trabalho com dados em formato XML, incluindo o carregamento e a análise de XML externo, a criação de novos documentos XML e a navegação de árvores de documentos XML. Consulte “Usando a classe XML” na página 188 e a entrada Classe XML no Capítulo 12, “Dicionário do ActionScript”, na página 215. XMLNode A classe XMLNode representa um único nó em uma árvore de documentos XML. Trata-se da superclasse da classe XML. Consulte a entrada Classe XMLNode no Capítulo 12, “Dicionário do ActionScript”, na página 215. XMLSocket A classe XMLSocket permite que você crie uma conexão de soquete persistente com outro computador para transferência de dados de baixa latência, como aqueles necessários para aplicativos de bate-papo em tempo real. Consulte “Usando a classe XMLSocket” na página 191 e a entrada Classe XMLSocket no Capítulo 12, “Dicionário do ActionScript”, na página 215. Classes de autoridade As classes de criação estão disponíveis apenas no ambiente de criação do Flash. Essas classes localizam-se na subpasta Built-In Classes > Authoring (Criação) na caixa de ferramentas Actions. 118 Classe Descrição CustomActions A classe CustomActions permite que você gerencie qualquer ação do cliente registrada com a ferramenta de criação. Consulte a entrada Classe CustomActions no Capítulo 12, “Dicionário do ActionScript”, na página 215. Live Preview Apesar de não ser uma classe, o recurso Live Preview (Visualização ao vivo), listado em Built-in Classes, na caixa de ferramentas Actions, fornece uma única função chamada onUpdate, que é usada pelos desenvolvedores de componente. Consulte onUpdate no Capítulo 12, “Dicionário do ActionScript”, na página 215. Capítulo 6: Usando as classes internas CAPÍTULO 7 Trabalhando com clipes de filme Os clipes de filme são arquivos SWF em miniatura que funcionam independentemente uns dos outros e da Timeline (Linha de tempo) que os contém. Por exemplo, se a Timeline principal tiver somente um quadro, e um clipe de filme nesse quadro tiver dez quadros, cada quadro do clipe de filme será reproduzido quando o SWF principal for reproduzido. Um clipe de filme pode, por sua vez, conter outros clipes de filme ou clipes aninhados. Os clipes de filme aninhados dessa maneira têm um relacionamento hierárquico, no qual o clipe pai contém um ou mais clipes filho. Cada instância de clipe de filme tem um nome, nome da instância, que a identifica exclusivamente como um objeto que pode ser controlado com o ActionScript. Especificamente, o nome da instância a identifica como um objeto do tipo de classe MovieClip. Você usa as propriedades e métodos da classe MovieClip para controlar a aparência e o comportamento dos clipes de filme durante a execução. Pense nos clipes de filme como objeto autônomos que podem responder aos eventos, enviar mensagens para outros objeto do clipe de filme, manter seu estado e gerenciar seus clipes filho. Dessa maneira, os clipes de filme fornecem o alicerce da arquitetura baseada em componente no Macromedia Flash MX 2004 e no Macromedia Flash MX Professional 2004. Na verdade, os componentes disponíveis no painel Components (Componentes), em Window (Janela) > Development Panels (Painéis de desenvolvimento) > Components, são clipes de filme sofisticados que foram projetados e programados para se parecerem e se comportarem de certas maneiras. Para obter informações sobre a criação de componentes, consulte Usando componentes. 119 Sobre o controle de clipes de filme com o ActionScript Você pode usar as funções globais do ActionScript ou os métodos da classe MovieClip para realizar tarefas nos clipes de filme. Alguns métodos do MovieClip realizam as mesmas tarefas que as funções do mesmo nome; outros métodos do MovieClip, como hitTest() e swapDepths(), não têm nomes de função correspondentes. O exemplo a seguir ilustra a diferença entre usar um método e usar uma função. Os dois comandos duplicam a instância my_mc, nomeiam o novo clipe newClip e colocam-no em uma profundidade 5. my_mc.duplicateMovieClip("newClip", 5); duplicateMovieClip("my_mc", "newClip", 5); Quando uma função e um método oferecem comportamentos semelhantes, você pode controlar os clipes de filme usando qualquer um dos dois. A opção escolhida dependerá de sua preferência e familiaridade com a criação de scripts no ActionScript. Se você usar uma função ou um método, a Timeline de destino deverá ser carregada no Flash Player quando a função ou o método for chamado. Para usar um método, chame-o usando o caminho de destino do nome da instância, seguido de um ponto e, depois, do nome do método e dos parâmetros, como nos comandos a seguir: myMovieClip.play(); parentClip.childClip.gotoAndPlay(3); No primeiro comando, play() move a reprodução na instância myMovieClip. No segundo comando, 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. 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 que você deseja controlar. Por exemplo, no script a seguir, startDrag() destina-se à instância customCursor e torna-a arrastável: on(press){ startDrag("customCursor"); } As funções a seguir destinam-se aos clipes de filme: loadMovie(), unloadMovie(), loadVariables(), setProperty(), startDrag(), duplicateMovieClip() e removeMovieClip(). Para usar essas funções, você deve inserir um caminho de destino no parâmetro target da função para indicar o destino da função. Os métodos MovieClip a seguir podem controlar clipes de filme ou níveis carregados, e não têm funções equivalentes: MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), MovieClip.createTextField(), MovieClip.getBounds(), MovieClip.getBytesLoaded(), MovieClip.getBytesTotal(), MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth(), MovieClip.globalToLocal(), MovieClip.localToGlobal(), MovieClip.hitTest(), MovieClip.setMask(), MovieClip.swapDepths(). Para obter mais informações sobre essas funções e métodos, consulte Capítulo 12, “Dicionário do ActionScript”, na página 215. 120 Capítulo 7: Trabalhando com clipes de filme Chamando vários métodos em um único clipe de filme Você pode usar o comando with para endereçar um clipe de filme uma vez e executar uma série de métodos nesse clipe. O comando with funciona com todos os objeto do ActionScript, (por exemplo, Array, Color e Sound), e não somente com clipes de filme. O comando with requer um objeto como parâmetro. O objeto especificado é adicionado ao final do caminho de destino atual. Todas as ações aninhadas em um comando with são executadas no novo caminho de destino ou escopo. Por exemplo, no script a seguir, o comando with recebe o objeto donut.hole para alterar as propriedades de hole: with (donut.hole){ _alpha = 20; _xscale = 150; _yscale = 150; } O script comporta-se como se os comandos dentro do comando with fossem chamados da Timeline da instância hole. O código acima é equivalente ao seguinte: donut.hole._alpha = 20; donut.hole._xscale = 150; donut.hole._yscale = 150; O código acima também é equivalente ao seguinte: with (donut){ hole._alpha = 20; hole._xscale = 150; hole._yscale = 150; } Carregando e descarregando arquivos SWF adicionais Para reproduzir os arquivos SWF adicionais sem fechar o Flash Player, ou para alternar os SWFs sem carregar outra página HTML, você pode usar a função global loadMovie() ou o método loadMovie() da classe MovieClip. Você também pode usar loadMovie() para enviar variáveis para um script CGI, que gera um arquivo SWF como sua saída CGI. Ao carregar um SWF, você pode especificar um nível ou clipe de filme de destino no qual o SWF será carregado. Se você carregar um SWF em um destino, o SWF carregado herdará as propriedades do clipe de filme de destino. Após o filme ser carregado, você poderá alterar essas propriedades. O método unloadMovie() remove um SWF carregado anteriormente pelo loadMovie(). Descarregar explicitamente SWFs com unloadMovie() assegura uma transição suave entre SWFs e pode diminuir a memória exigida pelo Flash Player. Use loadMovie() para efetuar qualquer uma das seguintes ações: • Reproduzir uma seqüência de faixas de propaganda que sejam arquivos SWF, colocando uma função loadMovie no final de cada arquivo SWF para carregar o próximo SWF. • Desenvolver uma interface ramificada para permitir que o usuário escolha entre diferentes • arquivos SWF. Criar uma interface de navegação com controles de navegação no nível 0 que carreguem outros níveis. O carregamento de níveis produz transições mais suaves do que o carregamento de novas páginas HTML em um navegador. Para obter mais informações sobre o carregamento de filmes, consulte “Carregando SWFs e JPEGs externos” na página 202. Carregando e descarregando arquivos SWF adicionais 121 Especificando uma Timeline raiz para arquivos SWF carregados A propriedade _root do ActionScript especifica ou retorna uma referência para a Timeline raiz de um arquivo SWF. Se um SWF tem vários níveis, a Timeline raiz está no nível que contém o script em execução atualmente. Por exemplo, se um script no nível 1 avaliar _root, será retornado _level1. Entretanto, a Timeline especificada por _root pode mudar dependendo de o SWF estar sendo executado independentemente (em seu próprio nível) ou de ter sido carregado em uma instância do clipe de filme por uma chamada loadMovie(). Por exemplo, considere um arquivo container.swf que tem uma instância do clipe de filme em sua Timeline principal. O arquivo container.swf declara uma variável userName na Timeline principal; o mesmo script carrega outro arquivo contents.swf no clipe de filme target_mc. target_mc // Em container.swf: _root.userName = "Timóteo"; target_mc.loadMovie("contents.swf"); O SWF carregado, contents.swf, também declara uma variável userName na Timeline raiz. // Em content.swf: _root.userName = "Mary"; Quando o contents.swf for carregado no clipe de filme do container.swf, o valor de userName que estiver anexado à Timeline raiz do SWF hospedeiro (container.swf ) será definido como "Mary". Esse procedimento pode fazer com que o código de container.swf (bem como de contents.swf ) funcione inadequadamente. Para forçar o _root a avaliar sempre na Timeline do SWF carregado, em vez de na Timeline raiz real, use a propriedade _lockroot. Essa propriedade pode ser definida carregando o SWF ou com o SWF sendo carregado. Quando _lockroot é definida como true em uma instância de clipe de filme, esse clipe de filme funciona como _root de qualquer SWF carregado nele. Quando _lockroot é definida como true em um SWF, esse SWF funciona como sua própria raiz, independentemente do outro SWF que o carrega. Qualquer clipe de filme e número de clipe de filme pode definir _lockroot como true. O valor predefinido dessa propriedade é false. Por exemplo, o autor de container.swf pode anexar o seguinte código ao clipe de filme target_mc : // Anexado ao clipe de filme target_mc: onClipEvent (load) { this._lockroot = true; } Esse procedimento garantirá que as referências a _root em contents.swf, ou qualquer SWF carregado no target_mc, estejam relacionadas à própria Timeline, não à Timeline raiz real do container.swf. Da mesma maneira, o autor do contents.swf pode adicionar o código a seguir à Timeline principal. // Em contents.swf: this._lockroot = true; Esse procedimento garantirá que, independentemente de onde o contents.swf for carregado, qualquer referência que ele fizer a _root estará relacionada à sua própria Timeline principal, e não àquela do SWF hospedeiro. Para obter mais informações, consulte MovieClip._lockroot na página 568. 122 Capítulo 7: Trabalhando com clipes de filme Carregando JPEGs em clipes de filme Você pode usar a função loadMovie(), ou o método MovieClip de mesmo nome, para carregar os arquivos de imagem JPEG em uma instância do clipe de filme. Também é possível usar a função loadMovieNum() para carregar um JPEG no nível SWF. Quando você carrega uma imagem em um clipe de filme, o canto superior esquerdo da imagem é colocado no ponto de registro do clipe de filme. Como geralmente esse ponto de registro é o centro do clipe de filme, a imagem carregada pode não aparecer centralizada. Além disso, quando você carrega uma imagem em uma Timeline raiz, o canto esquerdo superior da imagem é colocado no Stage. A imagem carregada herda a rotação e o dimensionamento do clipe de filme, mas o conteúdo original do clipe do filme é removido. Para obter mais informações, consulte “Carregando SWFs e JPEGs externos” na página 202, e loadMovieNum() na página 464. loadMovie() na página 463, MovieClip.loadMovie() na página 565 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, escreva um comando que atribua um valor a uma propriedade ou use a função setProperty(). Por exemplo, o código a seguir define a rotação da instância mc como 45: mc._rotation = 45; Esse código é equivalente ao código a seguir, que usa a função setProperty(): setProperty("mc", _rotation, 45); Algumas propriedades, chamadas somente leitura, possuem valores que podem ser lidos, porém não definidos. (Essas propriedades são especificadas como somente leitura nas entradas do Dicionário ActionScript.) As propriedades a seguir são somente leitura: _currentframe, _droptarget, _framesloaded, _parent, _target, _totalframes, _url, _xmouse e _ymouse. Você pode criar comandos para definir qualquer propriedade que não seja somente leitura. O comando a seguir define a propriedade _alpha da instância do clipe de filme wheel que é filha da instância car: car.wheel._alpha = 50; Além disso, você pode criar comandos que obtenham o valor de uma propriedade do clipe de filme. Por exemplo, o comando a seguir obtém o valor da propriedade _xmouse na Timeline do nível atual e define a propriedade _x da instância customCursor como esse valor: onClipEvent (enterFrame){ customCursor._x = _root._xmouse; } Esse código é equivalente ao código a seguir, que usa a função getProperty(): onClipEvent (enterFrame){ customCursor._x = getProperty(_root, _xmouse); } Alterando a posição e a aparência de um clipe de filme 123 As propriedades _x, _y, _rotation, _xscale, _yscale, _height, _width, _alpha e _visible são afetadas pelas transformações do pai do clipe de filme e transformam o clipe de filme e todos os seus filhos. As propriedades _focusrect, _highquality, _quality e _soundbuftime são globais; elas pertencem somente à Timeline de nível 0. Todas as outras propriedades pertencem aos clipes de filme ou níveis carregados. Para obter uma lista de propriedades do clipe de filme, consulte “Resumo das propriedades da classe MovieClip” na página 533. Arrastando clipes de filme Você pode usar a função global startDrag() ou o método MovieClip.startDrag() para tornar um clipe de filme arrastável. Por exemplo, você pode criar um clipe de filme arrastável para jogos, funções do tipo arrastar e soltar, interfaces personalizáveis, barras de rolagem e controles deslizantes. Um clipe de filme pode ser arrastado até ser parado explicitamente por stopDrag() ou até que outro clipe de filme seja especificado como destino por startDrag(). Somente um clipe de filme pode ser arrastado de cada vez. Para criar um comportamento arrastar e soltar mais complexo, você pode avaliar a propriedade _droptarget do clipe de filme que está sendo arrastado. Por exemplo, é possível examinar a propriedade _droptarget para verificar se o clipe de filme foi arrastado para um clipe de filme específico (por exemplo, um clipe de filme “lata de lixo”) e, em seguida, ativar outra ação. Para obter informações detalhadas, consulte startDrag() na página 704 ou MovieClip.startDrag() na página 592. Criando clipes de filme durante a execução Você pode não apenas criar instâncias do clipe de filme no ambiente de criação do Flash, como também pode criá-las durante a execução. O ActionScript fornece três maneiras de criar novos clipes de filme durante a execução: • Criando uma instância nova e vazia do clipe de filme • Duplicando uma instância do clipe de filme existente • Anexando uma instância de um símbolo da biblioteca de clipes de filme no Stage Cada instância do clipe de filme criada durante a execução deve ter um nome e um valor de profundidade (pilha ou ordem z). A profundidade especificada determina como o novo clipe substitui os outros clipes na mesma Timeline. (Consulte “Gerenciando profundidades do clipe de filme” na página 128.) 124 Capítulo 7: Trabalhando com clipes de filme Criando um clipe de filme vazio Para criar um clipe de filme vazio no Stage, use o método createEmptyMovieClip() da classe MovieClip. Este método cria um clipe de filme como filho do clipe que chamou o método. O ponto de registro de um clipe de filme vazio recém-criado é o canto superior esquerdo. Por exemplo, o código a seguir cria um novo clipe de filme filho new_mc em uma profundidade de 10 pol. no clipe de filme parent_mc. parent_mc.createEmptyMovieClip("new_mc", 10); O código a seguir cria um novo clipe de filme canvas_mc na Timeline raiz do SWF no qual o script é executado, e chama o loadMovie() para carregar um JPEG externo em si mesmo. _root.createEmptyMovieClip("canvas_mc", 10); canvas_mc.loadMovie("flowers.jpg"); Para obter mais informações, consulte MovieClip.createEmptyMovieClip() na página 543. Duplicando ou removendo um clipe de filme Para duplicar ou remover instâncias do clipe de filme, use as funções globais duplicateMovieClip() ou removeMovieClip(), ou os métodos da classe MovieClip de mesmo nome. O método duplicateMovieClip() cria uma nova instância de uma instância existente do clipe de filme, atribui um novo nome a ela e fornece uma profundidade ou ordem z. Um clipe de filme duplicado sempre começa no Frame 1 (Quadro 1), mesmo que o clipe original esteja em outro quadro quando duplicado, e está a frente de todos os clipes de filme predefinidos colocados na Timeline. Para excluir um clipe de filme criado com duplicateMovieClip(), use removeMovieClip(). Os clipes de filme duplicados também serão removidos se o clipe de filme pai for excluído. Para obter mais informações, consulte duplicateMovieClip() na página 408 e removeMovieClip() na página 657. Anexando um símbolo de clipe de filme ao Stage A última maneira de criar instâncias do clipe de filme durante a execução é usar o attachMovie(). O método attachMovie() anexa a instância de um símbolo de clipe de filme na biblioteca do SWF ao Stage. O novo clipe torna-se um clipe filho do clipe que o anexou. Para usar o ActionScript para anexar um símbolo de clipe de filme da biblioteca, você deve exportar o símbolo do ActionScript e atribuí-lo a um identificador de vinculação exclusivo. 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. Isso pode criar um atraso antes da reprodução do primeiro quadro. Ao atribuir um identificador de vinculação a um elemento, você também pode especificar se o conteúdo deverá ser adicionado antes do primeiro quadro. Se ele não for adicionado ao primeiro quadro, será necessário incluir uma instância dele em algum outro quadro do SWF. Caso contrário, o elemento não será exportado para o arquivo SWF. Criando clipes de filme durante a execução 125 Para atribuir um identificador de vinculação ao clipe de filme: 1 Selecione Window > Library (Biblioteca) para abrir o painel Library. 2 Selecione um clipe de filme no painel Library. 3 No menu de opções do painel Library, selecione Linkage (Vinculação). 4 5 6 7 8 A caixa de diálogo Linkage Properties é exibida. Em Linkage, selecione Export for ActionScript (Exportar para ActionScript). Em Identifier (Identificador), insira uma ID para o clipe de filme. O padrão é que o identificador seja igual ao nome do símbolo. Opcionalmente, você pode atribuir uma classe ActionScript 2 ao símbolo de clipe de filme. (Consulte “Atribuindo uma classe a um símbolo de clipe de filme” na página 131.) Para não carregar o clipe de filme antes do primeiro quadro, desmarque a opção Export in First Frame (Exportar no primeiro quadro). Se você desmarcar essa opção, coloque uma instância do clipe de filme no quadro da Timeline no qual você deseja que ele esteja disponível. Por exemplo, se o script que você está escrevendo não fizer referência ao clipe de filme até o Frame 10 (Quadro 10), coloque uma instância do símbolo no quadro ou antes dele na Timeline. Clique em OK. Depois de atribuir um identificador de vinculação a um clipe de filme, você pode anexar uma instância do símbolo ao Stage durante a execução usando attachMovie(). Para anexar um clipe de filme a outro: 1 Atribua um identificador de vinculação a um símbolo da biblioteca de clipes de filme, da 2 3 4 5 maneira descrita anteriormente. Com o painel Actions (Ações) aberto, a partir de Window > Development Panels > Actions, selecione um quadro na Timeline. No painel Script do painel Actions, digite o nome do clipe de filme ou nível ao qual você deseja anexar o novo clipe de filme. Por exemplo, para anexar o clipe de filme à Timeline, digite _root. Na caixa de ferramentas Actions (à esquerda do painel Actions), clique nas categorias Built-in Classes (Classes internas), Movie (Filme) e MovieClip, e clique duas vezes em attachMovie(). Usando as referências de código que aparecem como guia, insira os valores dos seguintes parâmetros: ■ Para idName, especifique o nome do identificador inserido na caixa de diálogo Linkage Properties. ■ Para newName, insira um nome de instância para o clipe anexado a fim de designá-lo. ■ Para depth, insira o nível no qual o filme duplicado será anexado ao clipe de filme. Cada filme anexado possui sua própria ordem de empilhamento, sendo que o nível 0 é o nível do clipe do filme de origem. Os clipes de filme anexados estão sempre sobre o clipe de filme original. Exemplo: myMovieClip.attachMovie("calif", "california", 10); Para obter mais informações, consulte MovieClip.attachMovie() na página 537. 126 Capítulo 7: Trabalhando com clipes de filme Adicionando parâmetros aos clipes de filme criados dinamicamente Ao criar ou duplicar um clipe de filme dinamicamente usando MovieClip.attachMovie() e MovieClip.duplicateMovie(), você pode preencher o clipe de filme com os parâmetros de outro objeto. O parâmetro initObject de attachMovie() e duplicateMovie() permite que os clipes criados dinamicamente recebam parâmetros de clipe. O parâmetro initObject é opcional. Para obter mais informações, consulte MovieClip.attachMovie() na página 537 MovieClip.duplicateMovieClip() na página 548. e Para preencher um clipe de filme criado dinamicamente com os parâmetros de um objeto específico, siga um destes procedimentos: • Use a sintaxe a seguir com o attachMovie(): myMovieClip.attachMovie(idName, newName, depth [, initObject]) • Use a sintaxe a seguir com o duplicateMovie(): myMovieClip.duplicateMovie(idName, newName, depth [, initObject]) O parâmetro initObject especifica o nome do objeto cujos parâmetros você deseja usar para preencher o clipe de filme criado dinamicamente. Para preencher um clipe de filme com parâmetros usando attachMovie(): 1 Em um novo documento Flash, crie um novo símbolo de clipe de filme selecionando Insert (Inserir) > New Symbol (Novo símbolo). Digite dynamic na caixa de texto Symbol Name (Nome do símbolo) e selecione o comportamento Movie Clip (Clipe de filme). 2 Dentro do símbolo, crie um campo de texto dinâmico no Stage com um nome de instância name_txt. 3 Selecione o primeiro quadro da Timeline do clipe de filme e abra o painel Actions, em Window > Development Panels > Actions. 4 Crie uma nova variável name e atribua seu valor à propriedade text de name_txt, como descrito aqui: var name:String; name_txt.text = name; 5 Selecione Edit (Editar) > Edit Document (Editar documento) para voltar à Timeline principal. 6 Selecione o símbolo de clipe de filme na biblioteca e selecione Linkage Properties no menu de opções do painel Library. A caixa de diálogo Linkage Properties é exibida. 7 Selecione a opção Export for ActionScript e clique em OK. 8 Selecione o primeiro quadro da Timeline principal e adicione o código a seguir ao painel Script do painel Actions: _root.attachMovie("dynamic", "newClipName", 10, {name:"Erick"}); 9 Teste o filme em Control (Controlar) > Test Movie (Testar filme). O nome especificado em attachMovie() é exibido no novo campo de texto do clipe de filme. Adicionando parâmetros aos clipes de filme criados dinamicamente 127 Gerenciando profundidades do clipe de filme Cada clipe de filme tem seu próprio espaço de ordem z que determina como os objeto são sobrepostos no SWF pai ou no clipe de filme. Cada clipe de filme tem um valor de profundidade associado, que determina se ele será renderizado na frente ou atrás de outros clipes de filme na mesma Timeline do clipe de filme. Ao criar um novo clipe de filme durante a execução usando MovieClip.attachMovie(), MovieClip.duplicateMovieClip() ou MovieClip.createEmptyMovieClip(), especifique sempre uma profundidade para o novo clipe como um parâmetro de método. Por exemplo, 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. container_mc.attachMovie("symbolID", "clip_1", 10); Esse procedimento cria um novo clipe de filme com uma profundidade 10 no espaço da ordem z de container_mc. Por exemplo, o código a seguir anexa dois novos clipes de filme ao container_mc. O primeiro clipe, o clip_1, será renderizado depois do clip_2, porque ele recebeu um valor de profundidade inferior. container_mc.attachMovie("symbolID", "clip_1", 10); container_mc.attachMovie("symbolID", "clip_2", 15); Os valores de profundidade para clipes de filme podem variar de -16384 a 1048575. A classe MovieClip fornece vários métodos para gerenciar as profundidades do clipe de filme: consulte MovieClip.getNextHighestDepth() na página 555, MovieClip.getInstanceAtDepth() na página 554, MovieClip.getDepth() na página 554 e MovieClip.swapDepths() na página 594. Determinando a próxima profundidade mais alta disponível Para determinar a próxima profundidade mais alta disponível em um clipe de filme, use O valor inteiro retornado por esse método indica a próxima profundidade disponível que será renderizada na frente de todos os outros objeto no clipe de filme. MovieClip.getNextHighestDepth(). O código a seguir cria um novo clipe de filme com uma profundidade 10, na Timeline do clipe de filme menus_mc. Ele determina a próxima profundidade mais alta disponível no mesmo clipe de filme e cria um novo clipe de filme nessa profundidade. menus_mc.attachMovie("menuClip","file_menu", 10); var nextDepth = menus_mc.getNextHighestDepth(); menus_mc.attachMovie("menuClip", "edit_menu", nextDepth); Nesse caso, a variável nextDepth contém o valor 11, porque essa é a próxima profundidade mais alta disponível para o clipe de filme menus_mc. Para obter a profundidade ocupada mais alta atual, subtraia 1 do valor retornado por getNextHighestDepth(), como descrito na próxima seção (consulte “Determinando a instância em uma profundidade particular” na página 129). 128 Capítulo 7: Trabalhando com clipes de filme Determinando a instância em uma profundidade particular Para determinar a instância em uma profundidade particular, use Esse método retorna uma referência para a instância na profundidade especificada. MovieClip.getInstanceAtDepth(). O código a seguir combina getNextHighestDepth() e getInstanceAtDepth() para determinar o clipe de filme na profundidade ocupada mais alta (atual) na Timeline raiz. var highestOccupiedDepth = _root.getNextHighestDepth() - 1; var instanceAtHighestDepth = _root.getInstanceAtDepth(highestOccupiedDepth); Para obter mais informações, consulte MovieClip.getInstanceAtDepth() na página 554. Determinando a profundidade de uma instância Para determinar a profundidade de uma instância do clipe de filme, use MovieClip.getDepth(). O código a seguir faz a iteração de todos os clipes de filme em uma Timeline principal do SWF e exibe cada nome de instância do clipe e o valor da profundidade no painel Output (Saída). for(each in _root) { var obj = _root[each]; if(obj instanceof MovieClip) { var objDepth = obj.getDepth(); trace(obj._name + ":" + objDepth) } } Para obter mais informações, consulte MovieClip.getDepth() na página 554. Trocando profundidades do clipe de filme Para trocar as profundidades de dois clipes de filme na mesma Timeline, use Para obter mais informações, consulte MovieClip.swapDepths() na página 594. MovieClip.swapDepths(). Desenhando formas com o ActionScript Você pode usar métodos da classe MovieClip para desenhar linhas e preenchimentos no Stage. Isso permite criar ferramentas de desenho para usuários e desenhar formas no filme em resposta a eventos. Os métodos de desenho são beginFill(), beginGradientFill(), clear(), curveTo(), endFill(), lineTo(), lineStyle() e moveTo(). Você pode usar os métodos de desenho com qualquer clipe de filme. No entanto, se usar os métodos de desenho com um clipe de filme criado no modo de criação, esses métodos serão executados antes de o clipe ser desenhado. Ou seja, o conteúdo criado no modo de criação é desenhado por cima do conteúdo desenhado com os métodos de criação. É possível usar clipes de filme com métodos de desenho como máscaras, porém, como em todas as máscaras de clipes de filme, os traços são ignorados. Desenhando formas com o ActionScript 129 Para desenhar uma forma: 1 Use createEmptyMovieClip() para criar um clipe de filme vazio no Stage. O novo clipe de filme é um filho de um clipe de filme existente ou da Timeline principal, como no exemplo a seguir: _root.createEmptyMovieClip ("triangle", 1); 2 Use o clipe de filme vazio para chamar métodos de desenho. O exemplo a seguir desenha um triângulo com linhas em magenta de cinco pontos e nenhum preenchimento: with (_root.triangle) { lineStyle (5, 0xFF00FF, 100); moveTo( 200, 200 ); lineto(300,300); lineto(100,300); lineTo( 200, 200 ); } Para obter informações detalhadas sobre esses métodos, consulte as entradas em Capítulo 12, “Dicionário do ActionScript”, na página 215. 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. O clipe de filme da máscara reproduz todos os quadros na sua Timeline como em um clipe de filme comum. Você pode tornar o clipe de filme da máscara arrastável, animá-lo ao longo de uma guia de movimento, usar formas separadas dentro de uma única máscara ou redimensionar uma máscara dinamicamente. Pode também usar o ActionScript para ativar ou desativar uma máscara. Não é possível usar uma máscara para mascarar outra máscara. Também não é possível definir a propriedade _alpha de um clipe de filme de máscara. Somente preenchimentos são usados em um clipe de filme de máscara. Os traços são ignorados. Para criar uma máscara: 1 No Stage, escolha um clipe de filme a ser mascarado. 2 No inspetor Property (Propriedades), insira um nome de instância para o clipe de filme, 3 4 5 6 como image. Crie um clipe de filme para ser uma máscara. Forneça a ele um nome de instância no inspetor Properties, como mask. O clipe de filme mascarado será revelado em todas as áreas opacas (não transparentes) do clipe de filme que está funcionando como uma máscara. Selecione Frame 1 na Timeline. Abra o painel Actions em Window > Development Panels > Actions se ainda não estiver aberto. No painel Actions, insira o seguinte código: image.setMask(mask); Para obter informações detalhadas, consulte MovieClip.setMask() na página 591. 130 Capítulo 7: Trabalhando com clipes de filme 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. Para que a máscara do clipe de filme de uma fonte de dispositivo funcione adequadamente, o usuário deve ter a versão 40 ou superior do Flash Player 6. Quando você usa um clipe de filme para mascarar o texto definido em uma fonte de dispositivo, a caixa delimitadora retangular da máscara é usada como forma. Ou seja, se você criar uma máscara do clipe de filme não retangular para o texto da fonte de dispositivo no ambiente de criação do Flash, a máscara que aparece no SWF terá a forma da caixa delimitadora retangular da máscara, não a forma da própria máscara. Você só pode mascarar as fontes de dispositivo usando um clipe de filme como máscara. Não é possível mascarar as fontes de dispositivo usando uma camada de máscara no Stage. Identificando eventos do clipe de filme Os clipes de filme podem responder aos eventos do usuário, como cliques do mouse e pressionamentos de tecla, bem como aos eventos no nível do sistema, como o carregamento inicial de um clipe de filme no Stage. O ActionScript fornece duas maneiras de identificar os eventos do clipe de filme: por meio dos métodos do identificador de eventos e por meio dos identificadores de eventos onClipEvent() e on(). Para obter mais informações, consulte Capítulo 4, “Manipulando eventos”, na página 79. Atribuindo uma classe a um símbolo de clipe de filme Usando o ActionScript 2, você pode criar sua própria classe, que prolonga o comportamento da classe interna MovieClip, e atribuir essa classe a um símbolo da biblioteca de clipes de filme usando a caixa de diálogo Linkage Properties. Sempre que você criar uma instância do clipe de filme à qual a classe é atribuída, ela assumirá as propriedades e comportamentos definidos pela classe atribuída a ela. (Para obter mais informações sobre o ActionScript 2, consulte Capítulo 9, “Criando classes com o ActionScript 2”, na página 159.) Em uma subclasse da classe MovieClip, você pode fornecer definições de método para os métodos internos MovieClip e identificadores de eventos, como onEnterFrame e onRelease. No procedimento a seguir, você criará uma classe MoveRight que prolonga a classe MovieClip; a MoveRight define um identificador onPress que move os 20 pixels do clipe para a direita sempre que o usuário clica no clipe de filme. No segundo procedimento, você criará um símbolo de clipe de filme em um novo documento Flash (FLA) e atribuirá a classe MoveRight a esse símbolo. Atribuindo uma classe a um símbolo de clipe de filme 131 Para criar uma subclasse de clipe de filme: 1 Crie uma nova pasta BallTest. 2 Crie um novo arquivo ActionScript seguindo um destes procedimentos: No Flash MX Professional 2004, selecione File (Arquivo) > New (Novo), e selecione o arquivo ActionScript da lista de tipos de documento. ■ No Flash MX 2004, crie um novo arquivo de texto no seu editor de texto preferido. 3 Insira o código a seguir no script: ■ // classe MoveRight -- move o clipe para a direita 5 pixels a cada quadro class MoveRight extends MovieClip { function onPress() { this._x += 20; } } 4 Salve o documento como MoveRight.as na pasta BallTest. Para atribuir a classe a um símbolo de clipe de filme: 1 No Flash, selecione File > New, selecione Flash Document (Documento do Flash) na lista de 2 3 4 5 6 7 8 132 tipos de arquivo e clique em OK. Usando a ferramenta Oval, desenhe um círculo no Stage. Selecione o círculo e, em seguida, Modify (Modificar) > Convert to Symbol (Converter em símbolo). Na caixa de diálogo Convert to Symbol, selecione Movie Clip como comportamento do símbolo e insira Ball (Bola) na caixa de texto Name (Nome). Abra o painel Library em Window > Library e selecione o símbolo Ball. Selecione Linkage no menu de opções do painel Library para abrir a caixa de diálogo Linkage Properties. Na caixa de diálogo Linkage Properties, selecione a opção Export for ActionScript e digite MoveRight na caixa de texto AS 2.0 Class. Clique em OK. Salve o arquivo como Ball.fla na pasta BallTest (a mesma pasta que contém o arquivo MoveRight.as). Teste o filme em Control > Test Movie. Sempre que você clicar no clipe de filme ball, ele se moverá 20 pixels para a direita. Capítulo 7: Trabalhando com clipes de filme Inicializando as propriedades de classe No exemplo apresentado anteriormente, você adicionou a instância do símbolo Ball ao Stage manualmente, ou seja, durante a criação. Como foi discutido anteriormente (consulte “Adicionando parâmetros aos clipes de filme criados dinamicamente” na página 127), é possível atribuir parâmetros aos clipes criados durante a execução usando o parâmetro initObject de attachMovie() e duplicateMovie(). Você pode usar esse recurso para inicializar as propriedades de classe que está atribuindo a um clipe de filme. Por exemplo, a classe MoveRightDistance é uma variação da classe MoveRight discutida anteriormente (consulte “Atribuindo uma classe a um símbolo de clipe de filme” na página 131). A diferença é uma nova propriedade distance, cujo valor determina quantos pixels um clipe de filme se move quando é clicado. // classe MoveRightDistance -- move o clipe para a direita 5 pixels a cada quadro class MoveRightDistance extends MovieClip { // a propriedade distance determina quantos // pixels o clipe deve se mover a cada pressionamento do mouse var distance:Number; function onPress() { this._x += distance; } } Supondo que essa classe seja atribuída a um símbolo com um identificador de vinculação Ball, o código a seguir cria duas novas instâncias do símbolo na Timeline raiz do SWF. A primeira instância, ball_50, move-se 50 pixels sempre que é clicada; a segunda, ball_125, move-se 125 pixels quando é clicada. _root.attachMovie("Ball", "ball_50", 10, {distance:50}); _root.attachMovie("Ball", "ball_125", 20, {distance:125}); Inicializando as propriedades de classe 133 134 Capítulo 7: Trabalhando com clipes de filme CAPÍTULO 8 Trabalhando com texto Um campo de texto dinâmico ou de entrada é uma instância da classe TextField do ActionScript. Ao criar um campo de texto, você pode atribuir um nome de instância a ele no inspetor Property (Propriedades). É possível usar o nome de instância em comandos ActionScript para definir, alterar e formatar o campo de texto e seu conteúdo usando as classes TextField e TextFormat. Os métodos da classe TextField permitem definir, selecionar e manipular o texto de um campo de texto dinâmico ou de entrada gerado durante a criação ou execução. Para obter mais informações, consulte “Usando a classe TextField” na página 136. O ActionScript também oferece várias maneiras de formatar o texto durante a execução. A classe TextFormat permite definir a formatação de caractere e parágrafo dos objeto TextField (consulte “Usando a classe TextFormat” na página 138). O Flash Player também oferece suporte a um subconjunto de marcas HTML que você pode usar para formatar o texto (consulte “Usando o texto em formato HTML” na página 148). O Flash Player 7 e versões posteriores oferecem suporte à marca HTML <img>, que permite incorporar não apenas imagens externas, mas também arquivos SWF externos e clipes de filme que residam na biblioteca (consulte “Marca de imagem (<img>)” na página 150). No Flash Player 7 e versões posteriores, você pode aplicar os estilos CSS (Cascading Style Sheets Folhas de estilos em cascata) aos campos de texto usando a classe TextField.StyleSheet. Você pode usar as CSS para atribuir estilo às marcas HTML internas, definir novas marcas de formatação ou aplicar estilos. Para obter mais informações sobre como usar CSS, consulte “Formatando o texto com Cascading Style Sheet” na página 139. Também é possível atribuir um texto em formato HTML, que pode opcionalmente usar estilos CSS, diretamente a um campo de texto. No Flash Player 7 e versões posteriores, o texto HTML que você atribui a um campo de texto pode conter mídia incorporada (clipes de filme, SWFs e JPEGs). O texto envolverá a mídia incorporada, como o navegador da Web envolve o texto em torno da mídia incorporada em um documento HTML. Para obter mais informações, consulte “Marca de imagem (<img>)” na página 150. 135 Usando a classe TextField A classe TextField representa qualquer campo de texto dinâmico ou selecionável (editável) criado com a ferramenta Text (Texto) no Flash. Use os métodos e as propriedades dessa classe para controlar os campos de texto durante a execução. Os objeto TextField oferecem suporte às mesmas propriedades que os objeto MovieClip, com exceção das propriedades _currentframe, _droptarget, _framesloaded e _totalframes. Você pode obter e definir as propriedades, e chamar os métodos dos campos de texto dinamicamente. Para controlar um campo de texto dinâmico ou de entrada usando o ActionScript, atribua a ele um nome de instância no inspetor Property. Em seguida, você pode fazer referência ao campo de texto com o nome da instância, 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. Pode também criar objeto TextField durante a execução e atribuir a eles nomes de instâncias, usando o método MovieClip.createTextField(). Para obter mais informações, consulte “Criando campo de texto durante a execução” na página 137. Atribuindo texto a um campo de texto durante a execução Para atribuir texto a um campo de texto, use a propriedade TextField.text. Para atribuir texto a um campo de texto durante a execução: 1 Usando a ferramenta Text, crie um novo campo de texto no Stage (Palco). 2 Com o campo de texto selecionado, no inspetor Property, em Window (Janela) > Properties, insira headline_txt na caixa de texto Instance Name (Nome da instância), diretamente abaixo do menu pop-up Text Type (Tipo de texto) à esquerda do inspetor. Nomes de instâncias só podem ser compostos de letras, sublinhados (_) e cifrões ($). 3 Na Timeline, selecione o primeiro quadro em Layer 1 e abra o painel Actions, em Window > Development Panels > Actions. 4 Insira o código a seguir no painel Actions. headline_txt.text = "O Brasil vence a Copa do mundo"; 5 Selecione Control > Test Movie para testar o filme. Sobre a instância do campo de texto e os nomes de variáveis No inspetor Property, você pode atribuir um nome de variável, bem como um nome de instância, a um campo de texto dinâmico ou de entrada. Em seguida, pode fazer referência ao nome da variável no campo de texto no ActionScript, cujo valor determina o conteúdo do campo de texto. Entretanto, o nome da instância e o nome da variável de um campo de texto não devem ser confundidos. Use o nome de instância atribuído a um campo de texto para chamar métodos, bem como para obter e definir propriedades nesse campo de texto. Um nome de variável de um campo de texto é simplesmente uma referência variável ao texto contido nesse campo, e não uma referência a um objeto. 136 Capítulo 8: Trabalhando com texto Por exemplo, se você atribuiu a um campo de texto o nome de variável mytextVar, poderá definir o conteúdo desse campo usando o seguinte código: var mytextVar = "Este é o texto que aparecerá no campo de texto"; Entretanto, você não pode usar a variável mytextVar para definir a mesma propriedade de texto para parte do texto de um campo de texto. //Este exemplo não funcionará myTextVar.text = "Uma variável de campo de texto não é uma referência de objeto"; Em geral, use a propriedade TextField.text para controlar o conteúdo de um campo de texto, a menos que esteja definindo uma versão do Flash Player que não ofereça suporte à classe TextField. Isso diminuirá as chances de um conflito de nome de variável, que pode resultar em comportamento inesperado durante a execução. Criando campo de texto durante a execução Você pode usar o método createTextField() da classe MovieClip para criar um campo de texto novo e vazio no Stage durante a execução. O novo campo de texto é anexado à Timeline do clipe de filme que chama o método. O método createTextField() usa a seguinte sintaxe: movieClip.createTextField(instanceName, depth, x, y, width, height) Por exemplo, o código a seguir cria um campo de texto de 300 x 100 pixels chamado test_txt no ponto (0,0) e uma profundidade (ordem z) de 10. _root.createTextField("test_txt", 10, 0, 0, 300, 100); Você usa o nome da instância especificado na chamada createTextField() para acessar os métodos e propriedades da classe TextField. Por exemplo, o código a seguir cria um novo campo de texto, test_txt, e modifica suas propriedades para torná-lo um campo de texto com quebra automática e várias linhas, que se expande para acomodar o texto inserido. Por último, ele atribui um texto à propriedade text do campo de texto. _root.createTextField("test_txt", 10, 0, 0, 100, 50); test_txt.multiline = true; test_txt.wordWrap = true; test_txt.autoSize = true; test_txt.text = "Crie novos campos de texto com o método MovieClip.createTextField."; Você pode usar o método TextField.removeTextField() para remover um campo de texto criado com createTextField(). O método removeTextField() não funciona em um campo de texto colocado pela Timeline durante a criação. Para obter mais informações, consulte MovieClip.createTextField() na página 544 e TextField.removeTextField() na página 763. Criando campo de texto durante a execução 137 Usando a classe TextFormat Você pode usar a classe TextFormat do ActionScript 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 caractere descrevem a aparência de caracteres individuais: nome da fonte, tamanho do ponto, cor e um URL associado. As informações de formatação de parágrafo descrevem a aparência de um parágrafo: margem esquerda, margem direita, recuo da primeira linha e alinhamento à esquerda, à direita ou centralizado. 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 isoladamente, 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 setTextFormat(). Para especificar a formatação padrão do texto inserido posteriormente, use TextField.setNewTextFormat(). Para obter mais informações, consulte TextField.setTextFormat() na página 767 e TextField.setNewTextFormat() na página 766. Para formatar um campo de texto com a classe TextFormat: 1 Em um novo documento Flash, crie um novo campo de texto no Stage usando a ferramenta Text. Digite algum texto no campo de texto no Stage, como “Texto em negrito, itálico, tamanho 24”. 2 No inspetor Property, digite myText_txt na caixa de texto Instance Name, selecione Dynamic (Dinâmica) no menu pop-up Text Type e selecione Multiline (Multilinha) no menu pop-up Line Type (Tipo de linha). 3 Na Timeline, selecione o primeiro quadro em Layer 1 e abra o painel Actions, em Window > Development Panels > Actions. 4 Digite o código a seguir no painel Actions para criar um novo objeto TextFormat, e defina as propriedades bold e italic como true, e a propriedade size como 24. // Cria um objeto TextFormat var txtfmt_fmt = new TextFormat(); // Especifica a formatação de parágrafo e caractere txtfmt_fmt.bold = "true"; txtfmt_fmt.italic = "true"; txtfmt_fmt.size = "24" 5 Aplique o objeto TextFormat ao campo de texto criado na etapa 1 usando TextField.setTextFormat(). myText_txt.setTextFormat(txtfmt_fmt); Essa versão de setTextFormat() aplica-se à formatação especificada para o campo de texto inteiro. Há duas outras versões desse método que permite a aplicação de formatação a caracteres individuais ou grupos de caracteres. Por exemplo, o código a seguir aplica formatação negrito, itálico, tamanho 24, aos quatro primeiros caracteres inseridos no campo de texto. myText_txt.setTextFormat(txtfmt_fmt, 0, 3); Para obter mais informações, consulte TextField.setTextFormat() na página 767. 6 Selecione Control > Test Movie para testar o filme. 138 Capítulo 8: Trabalhando com texto 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: font = "Times New Roman" size = 12 textColor = 0x000000 bold = false italic = false underline = false url = "" target = "" align = "left" leftMargin = 0 rightMargin = 0 indent = 0 leading = 0 bullet = false tabStops = [] (empty array) Para obter uma lista completa dos métodos TextFormat e suas descrições, consulte a entrada Classe TextFormat no Capítulo 12, “Dicionário do ActionScript”, na página 215. Obtendo informações métricas do texto Você pode usar o método TextFormat.getTextExtent() para obter medidas de texto detalhadas de uma seqüência de caracteres de texto com formatação específica aplicada. Por exemplo, suponha que você precise criar, durante a execução, um novo objeto TextField que contenha uma quantidade arbitrária de texto formatado em tamanho 24, negrito, fonte Arial e recuo de 5 pixels. Você precisa determinar a largura ou a altura que o novo objeto TextField deve ter para exibir todo o texto. O método getTextExtent() fornece medidas como, ascensão, descensão, largura e altura. Para obter mais informações, consulte TextFormat.getTextExtent() na página 788. Formatando o texto com Cascading Style Sheet Cascading Style Sheets são um mecanismo de criação de estilos de texto que pode ser aplicado 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 bodyText. bodyText { text-align: left} Você pode criar estilos que redefinem marcas de formatação HTML internas usadas pelo Flash Player (como <p> e <li>), 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. É 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. Formatando o texto com Cascading Style Sheet 139 O uso de folhas de estilos envolve três etapas básicas: • Criar um objeto de folha de estilos da classe TextField.StyleSheet. Consulte “Criando um • • objeto de folha de estilos” na página 141. Adicionar estilos ao objeto de folha de estilos, importando-os de um arquivo CSS externo ou definindo-os com o ActionScript. Consulte “Carregando arquivos CSS externos” na página 141 e “Criando novos estilos com o ActionScript” na página 142. Atribuir o objeto de folha de estilos a um campo de texto que contém texto em formato XML ou HTML. Consulte “Aplicando estilos a um objeto TextField” na página 142, “Um exemplo do uso de estilos com HTML” na página 145 e “Um exemplo do uso de estilos com XML” na página 147. Propriedades CSS suportadas O Flash Player oferece suporte a um subconjunto de propriedades na especificação CSS1 original (www.w3.org/TR/REC-CSS1). A tabela a seguir mostra as propriedades e os valores de CSS suportados e os nomes de propriedades do ActionScript correspondentes. (Cada nome de propriedade do ActionScript é derivado do nome de propriedade CSS correspondente; o hífen é omitido e o caractere seguinte fica em letra maiúscula.) 140 Propriedade CSS Propriedade do ActionScript Uso e valores suportados text-align textAlign Os valores reconhecidos são left, center e right. font-size fontSize Apenas a parte numérica dos valores é usada; as unidades (px, pt) não são analisadas; pixels e pontos são equivalentes. text-decoration textDecoration Os valores reconhecidos são none e underline. margin-left marginLeft Apenas a parte numérica do valor é usada. As unidades (px, pt) não são analisadas; pixels e pontos são equivalentes. margin-right marginRight Apenas a parte numérica do valor é usada. As unidades (px, pt) não são analisadas; pixels e pontos são equivalentes. font-weight fontWeight Os valores reconhecidos são normal e bold. font-style fontStyle Os valores reconhecidos são normal e italic. text-indent textIndent Apenas a parte numérica do valor é usada. As unidades (px, pt) não são analisadas; pixels e pontos são equivalentes. font-family fontFamily Uma lista de fontes separadas por vírgulas para usar, em ordem decrescente de interesse. Qualquer nome de família de fonte pode ser usado. Se você especificar um nome de fonte genérica, ela será convertida em uma fonte de dispositivo apropriada. As seguintes conversões de fonte estão disponíveis: mono é convertida em _typewriter, sans-serif, em _sans e serif, em _serif. Capítulo 8: Trabalhando com texto Propriedade CSS Propriedade do ActionScript Uso e valores suportados color color Apenas valores de cores hexadecimais são suportados. Cores com nome (como blue) não são suportadas. display display Os valores suportados são inline, block e none. Criando um objeto de folha de estilos As folhas de estilos CSS são representadas no ActionScript pela classe TextField.StyleSheet. Essa classe só está disponível para SWFs que se destinam ao Flash Player 7 ou versão posterior. Para criar um novo objeto de folha de estilos, chame a função construtora da classe TextField.StyleSheet. var newStyle = new TextField.StyleSheet(); Para adicionar estilos a um objeto de folha de estilos, você pode carregar um arquivo CSS externo no objeto ou definir os estilos no ActionScript. Consulte “Carregando arquivos CSS externos” na página 141 e “Criando novos estilos com o ActionScript” na página 142. Carregando arquivos CSS externos Você pode definir estilos em um arquivo CSS externo e carregar esse arquivo em um objeto de folha de estilos. Os estilos definidos no arquivo CSS são adicionados ao objeto de folha de estilos. Para carregar um arquivo CSS externo, use o método load() da classe TextField.StyleSheet. Para determinar quando o arquivo CSS finalizou a carga, use o manipulador de retorno de chamada onLoad do objeto de folha de estilos. No exemplo a seguir, você criará e carregará um arquivo CSS externo e usará o método para recuperar os nomes dos estilos carregados. TextField.StyleSheet.getStyleNames() Para carregar uma folha de estilos externa: 1 No editor de texto ou XML preferido, crie um novo arquivo. 2 Adicione as seguintes definições de estilo ao arquivo: // Nome do arquivo: styles.css bodyText { font-family: Arial,Helvetica,sans-serif; font-size: 12px; } headline { font-family: Arial,Helvetica,sans-serif; font-size: 24px; } 3 Salve o arquivo CSS como styles.css. 4 No Flash, crie um novo documento FLA. 5 Na Timeline (Window > Timeline), selecione Layer 1. 6 Abra o painel Actions (Window > Development Panels > Actions). Formatando o texto com Cascading Style Sheet 141 7 Adicione o código a seguir ao painel Actions: var css_styles = new TextField.StyleSheet(); css_styles.load("styles.css"); css_styles.onLoad = function(ok) { if(ok) { // exibe nomes de estilos trace(this.getStyleNames()); } else { trace("Erro ao carregar o arquivo CSS."); } } 8 Salve o arquivo na mesma pasta que contém o styles.css. 9 Teste o filme em Control > Test Movie. Você deve verificar os nomes dos dois estilos exibidos no painel Output (Saída): body headLine Se a mensagem “Erro ao carregar o arquivo CSS” for exibida no painel Output, verifique se o FLA e o arquivo CSS estão na mesma pasta e se você digitou o nome do arquivo CSS corretamente. Como com todos os outros métodos do ActionScript que carregam dados pela rede, o arquivo CSS deve ser redimensionado no mesmo domínio que o SWF que está carregando o arquivo. (Consulte “Sobre a autorização de acesso a dados entre domínios” na página 197.) Criando novos estilos com o ActionScript Você pode criar novos estilos de texto com o ActionScript usando o método setStyle() da classe TextField.StyleSheet. Este método tem dois parâmetros: o nome do estilo e um objeto que define as propriedades desse estilo. Por exemplo, o código a seguir cria um objeto de folha de estilos styles que define dois estilos idênticos àqueles importados anteriormente (consulte “Carregando arquivos CSS externos” na página 141). var styles = new TextField.StyleSheet(); styles.setStyle("bodyText", {fontFamily: 'Arial,Helvetica,sans-serif', fontSize: '12px'} ); styles.setStyle("headline", {fontFamily: 'Arial,Helvetica,sans-serif', fontSize: '24px'} ); Aplicando estilos a um objeto TextField Para aplicar um objeto de folha de estilos a um campo de texto, atribua esse objeto à propriedade do campo de texto. styleSheet textObj_txt.styleSheet = styleSheetObj; Observação: Cuidado para não confundir a propriedade TextField.styleSheet com a classe TextField.StyleSheet. O uso de maiúsculas ou minúsculas indica a diferença. 142 Capítulo 8: Trabalhando com texto Quando você atribui um objeto de folha de estilos a um objeto TextField, as seguintes alterações ocorrem no comportamento normal do campo de texto: • As propriedades text e htmlText do campo de texto, e qualquer variável associada ao campo de texto, sempre contêm o mesmo valor e comportam-se de maneira idêntica. • O campo de texto torna-se somente leitura e não pode ser editado pelo usuário. • Os métodos setTextFormat() e replaceSel() da classe TextField não funcionam mais com o campo de texto. A única maneira de alterar o campo é alterando as propriedades text ou do campo de texto, ou alterando a variável associada ao campo de texto. Qualquer texto atribuído às propriedades text e htmlText do campo de texto ou à variável associada é armazenado literalmente; tudo que for escrito em uma dessas propriedades pode ser recuperado na forma original do texto. htmlText • Combinando estilos Os estilos CSS no Flash Player são aditivos, ou seja, quando os estilos são aninhados, cada nível de aninhamento pode contribuir com informações de estilo adicionais, que são acrescentadas juntas para resultar na formatação final. Veja um exemplo de dados XML atribuídos a um campo de texto: <sectionHeading>Esta é uma seção</sectionHeading> <mainBody>Aqui fica um texto de corpo principal com uma palavra <emphasized>enfatizada</emphasized>.</mainBody> Na palavra enfatizada no texto anterior, o estilo emphasized é aninhado no estilo mainBody. O estilo mainBody contribui com regras de cor, tamanho de fonte e formatação. O estilo emphasized adiciona uma regra de espessura de fonte a essas regras. A palavra enfatizada será formatada usando uma combinação das regras especificadas por mainBody e emphasized. Usando classes de estilo Você pode criar “classes” de estilo que podem ser aplicadas a uma marca <p> ou <span> usando o atributo class da marca. Quando aplicado a uma marca <p>, o estilo é aplicado no parágrafo inteiro. Você também pode atribuir estilo a um intervalo de texto que use uma classe de estilo usando a marca <span>. Por exemplo, a folha de estilos a seguir define duas classes de estilo: mainBody e emphasis. .mainBody { font-family: Arial,Helvetica,sans-serif; font-size: 24px; } .emphasis { color: #666666; font-style: italic; } No texto HTML que você atribui a um campo de texto, é possível aplicar esses estilos a marcas <p> e <span>, como exibido a seguir. <p class="mainBody">Isto é <span class="emphasis">realmente entusiasmante!</ span></p> Formatando o texto com Cascading Style Sheet 143 Atribuindo estilo às marcas HTML internas O Flash Player oferece suporte a um subconjunto de marcas HTML. Para obter mais informações, consulte “Usando o texto em formato HTML” na página 148.) Você pode atribuir um estilo CSS a cada instância de uma marca HTML interna que aparece em um campo de texto. Por exemplo, a seguir há uma definição de estilo da marca HTML <p> interna. Todas as instâncias dessa marca receberão estilo da maneira especificada pela regra de estilo. p { font-family: Arial,Helvetica,sans-serif; font-size: 12px; display: inline; } A tabela a seguir mostra as marcas HTML internas que podem receber estilo e como cada estilo é aplicado. 144 Nome do estilo Como o estilo se aplica p Afeta todas as marcas <p>. body Afeta todas as marcas <body>. O estilo p, se especificado, tem precedência sobre o estilo body. li Afeta todas as marcas de bullet <li>. a Afeta todas as marcas de âncora <a>. a:link Afeta todas as marcas de âncora <a>. Este estilo é aplicado após qualquer estilo a. a:hover Aplicado a uma marca de âncora <a> quando o mouse está passando pelo link. Este estilo é aplicado após qualquer estilo a e a:link. Quando o mouse sai de cima do link, o estilo a:hover é removido do link. a:active Aplicado a uma marca de âncora <a> quando o usuário clica no link. Este estilo é aplicado após qualquer estilo a e a:link. Depois que o botão do mouse é liberado, o estilo a:active é removido do link. Capítulo 8: Trabalhando com texto Um exemplo do uso de estilos com HTML Esta seção apresenta um exemplo de uso de estilos com marcas HTML. Você criará uma folha de estilos que atribui estilo a algumas marcas internas e define algumas classes de estilo. Em seguida, você aplicará essa folha de estilos a um objeto TextField que contém texto em formato HTML. Para formatar HTML com uma folha de estilos, siga este procedimento: 1 No editor de texto preferido, crie um novo arquivo. 2 Adicione a seguinte definição de folha de estilos ao arquivo: p { color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 12px; display: inline; } a:link { color: #FF0000; } a:hover{ text-decoration: underline; } .headline { color: #000000; font-family: Arial,Helvetica,sans-serif; font-size: 18px; font-weight: bold; display: block; } .byline { color: #666600; font-style: italic; font-weight: bold; display: inline; } 3 4 5 6 7 8 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. Ela também define duas classes de estilos (.headline e .byline) que serão aplicadas a parágrafos específicos e intervalos de texto. Salve o arquivo como html_styles.css. No Flash, crie um novo arquivo FLA. Usando a ferramenta Text, crie um campo de texto de cerca de 400 pixels de largura e 300 pixels de altura. Abra o inspetor Property (Window > Properties) e selecione o campo de texto. No inspetor Property, selecione Dynamic Text no menu Text Type, selecione Multiline no menu Line Type, selecione a opção Render Text as HTML e digite news_txt na caixa de texto Instance Name. Selecione o primeiro quadro na Layer 1 da Timeline (Window > Timeline). Formatando o texto com Cascading Style Sheet 145 9 Abra o painel Actions (Window > Development Panels > Actions) e adicione o código a seguir a ele: // Cria um novo objeto de folha de estilos var style_sheet = new TextField.StyleSheet(); // Localização do arquivo CSS que define estilos var css_url = "html_styles.css"; // Cria um texto HTML para exibir var storyText:String = "<p class='headline'>Agora, o Flash Player oferece suporte a Cascading Style Sheets!</p><p><span class='byline'>San Francisco, CA</span>--A Macromedia Inc. anunciou hoje uma nova versão do Flash Player que oferece suporte a estilos de texto CSS (Cascading Style Sheet). Para obter mais informações, visite o site do Macromedia Flash em <a href='http://www.macromedia.com'>na Web.</a></p>"; // Carrega o arquivo CSS e define o manipulador onLoad: style_sheet.load(css_url); style_sheet.onLoad = function(ok) { if (ok) { // Se a folha de estilos tiver sido carregada sem erros, // atribua-a ao objeto de texto // e atribua o texto HTML ao campo de texto. news_txt.styleSheet = style_sheet; news_txt.text = storyText; } }; Observação: Para obter simplicidade, o texto HTML que está recebendo estilo é “codificado” no script; em um aplicativo do mundo real você provavelmente desejará carregar o texto de um arquivo externo. Para obter informações sobre o carregamento de dados externos, consulte Capítulo 10, “Trabalhando com dados externos”, na página 183. 10 Salve o arquivo como news_html.fla na mesma pasta que contém o arquivo CSS criado anteriormente. 11 Execute o filme (Control > Test Movie) para ver os estilos aplicados ao texto HTML automaticamente. Usando estilos para definir novas marcas Se você definir um novo estilo em uma folha de estilos, esse estilo poderá ser usado como marca, como você usaria uma marca HTML interna. Por exemplo, se uma folha de estilos definir um estilo CSS sectionHeading, você poderá usar <sectionHeading> como elemento em qualquer campo de texto associado à folha de estilos. Esse recurso permite atribuir qualquer texto em formato XML diretamente ao campo de texto, de maneira que o texto seja formatado automaticamente usando as regras na folha de estilos. Por exemplo, a folha de estilos a seguir cria os novos estilos sectionHeading, mainBody e emphasized. sectionHeading { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18px; display: block } mainBody { color: #000099; text-decoration: underline; font-size: 12px; display: block } emphasized { font-weight: bold; display: inline } 146 Capítulo 8: Trabalhando com texto Você pode preencher um campo de texto associado a essa folha de estilos com o seguinte texto em formato XML: <sectionHeading>Esta é uma seção</sectionHeading> <mainBody>Este é o texto de corpo principal, com uma palavra <emphasized>enfatizada</emphasized>. </mainBody> Um exemplo do uso de estilos com XML Nesta seção, você criará o mesmo arquivo FLA criado anteriormente (consulte “Um exemplo do uso de estilos com HTML” na página 145) mas com texto em formato XML. Neste exemplo, você criará a folha de estilos usando o ActionScript, em vez de importar estilos do arquivo CSS. Para formatar XML com uma folha de estilo: 1 No Flash, crie um novo arquivo FLA. 2 Usando a ferramenta Text, crie um campo de texto de cerca de 400 pixels de largura e 300 pixels 3 4 5 6 de altura. Abra o inspetor Property (Window > Properties) e selecione o campo de texto. No inspetor Property, selecione Dynamic Text no menu Text Type, selecione Multiline no menu Line Type, selecione a opção Render Text as HTML e digite news_txt na caixa de texto Instance Name. Na Layer 1 da Timeline (Window > Timeline), selecione o primeiro quadro. Para criar o objeto de folha de estilos, abra o painel Actions (Window > Development Panels > Actions) e adicione o seguinte código: var xml_styles = new TextField.StyleSheet(); xml_styles.setStyle("mainBody", { color:'#000000', fontFamily:'Arial,Helvetica,sans-serif', fontSize:'12', display:'block' }); xml_styles.setStyle("title", { color:'#000000', fontFamily:'Arial,Helvetica,sans-serif', fontSize:'18', display:'block', fontWeight:'bold' }); xml_styles.setStyle("byline", { color:'#666666', fontWeight:'bold', fontStyle:'italic', display:'inline' }); xml_styles.setStyle("a:link", { color:'#FF0000' }); xml_styles.setStyle("a:hover", { textDecoration:'underline' }); Esse código cria um novo objeto de folha de estilos xml_styles que define estilos usando o método setStyle(). Os estilos correspondem exatamente àqueles criados em um arquivo CSS externo, anteriormente neste capítulo. Formatando o texto com Cascading Style Sheet 147 7 Para criar o texto XML para atribuir ao campo de texto, adicione o código a seguir ao painel Actions: var storyText = "<title>Agora, o Flash Player oferece suporte a Cascading Style Sheets</title><mainBody><byline>San Francisco, CA</byline>--A Macromedia Inc. anunciou hoje uma nova versão do Flash Player que oferece suporte a estilos de texto CSS (Cascading Style Sheet). Para obter mais informações, visite o site do Macromedia Flash em <a href=\"http:// www.macromedia.com\">na Web</a></mainBody>"; 8 Por último, adicione o código a seguir para aplicar o objeto de folha de estilos à propriedade styleSheet do campo de texto e atribuir o texto XML ao campo de texto. news_txt.styleSheet = xml_styles; news_txt.text = storyText; 9 Salve o arquivo como news_xml.fla. 10 Execute o filme (Control > Test Movie) para ver os estilos aplicados automaticamente ao texto no campo. Usando o texto em formato HTML O Flash Player oferece suporte a um subconjunto de marcas HTML padrão, como <p> e <li>, que você pode usar para atribuir um estilo a um texto em qualquer campo de texto dinâmico ou de entrada. Os campos de texto no Flash Player 7 e versões posteriores também oferecem suporte à marca <img>, o que permite a incorporação de JPEGs, SWFs e clipes de filme no campo de texto. O Flash Player envolverá automaticamente o texto em torno das imagens incorporadas nos campos 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. Para obter mais informações, consulte “Incorporando imagens, SWFs e clipes de filme aos campos de texto” na página 154. O Flash Player também oferece suporte à marca <textformat>, que permite a aplicação de estilos de formatação de parágrafo da classe TextFormat em campos de texto ativados por HTML. Para obter mais informações, consulte “Usando a classe TextFormat” na página 138. Visão geral do uso de texto em formato HTML Para usar HTML em um campo de texto, você deve ativar a formatação HTML do campo de texto selecionando a opção Render Text as HTML no inspetor Property ou definindo a propriedade html do campo de texto como true. Para inserir HTML em um campo de texto, use a propriedade TextField.htmlText. Por exemplo, o código a seguir ativa a formatação HTML para um campo de texto e atribui um código HTML ao campo de texto. headline_txt headline_txt.html = true; headline_txt.htmlText = "<font face='Times New Roman' size='24'>É assim que você atribui um texto HTML a um campo de texto.</font>"; Os atributos das marcas HTML devem estar entre aspas simples ou duplas. Os valores de atributos sem aspas podem produzir resultados inesperados, como renderização de texto imprópria. Por exemplo, o trecho de HTML a seguir não será renderizado adequadamente pelo Flash Player porque o valor atribuído ao atributo align (left) não está entre aspas: textField.htmlText = "<p align=left>Este texto está alinhado à esquerda</p>"; 148 Capítulo 8: Trabalhando com texto Se você colocar os valores do atributo entre aspas duplas, deverá acrescentar um caractere de “escape” para fechar as aspas (\"). Por exemplo, qualquer exemplo a seguir é aceitável: textField.htmlText = "<p align='left'>Este texto contém aspas simples</p>"; textField.htmlText = "<p align=\"left\">Este texto contém aspas duplas com caractere de escape</p>"; Você não precisará acrescentar um caractere de escape para fechar as aspas duplas se estiver carregando o texto de um arquivo externo; só se você estiver atribuindo uma seqüência de caracteres de texto no ActionScript. Marcas HTML suportadas Esta seção lista as marcas HTML internas suportadas pelo Flash Player. Você também pode criar novos estilos e marcas usando Cascading Style Sheets; consulte “Formatando o texto com Cascading Style Sheet” na página 139. Marca de âncora (<a>) A marca <a> cria um hiperlink e oferece suporte aos seguintes atributos: • • Especifica o URL da página que será carregada no navegador. O URL pode ser absoluto ou relativo ao local do SWF que está carregando a página. target Especifica o nome da janela de destino na qual a página será carregada. href Por exemplo, o trecho de código HTML a seguir cria o link “Vá para a página principal”, que abre o site www.macromedia.com em uma nova janela do navegador. <a href="../home.htm" target="_blank">Vá para a página principal</a> Você também pode definir os estilos a:link, a:hover e a:active para marcas de âncora usando a folha de estilos. Consulte “Atribuindo estilo às marcas HTML internas” na página 144. Marca de negrito (<b>) A marca <b> renderiza o texto como negrito. Um tipo em negrito deve estar disponível para a fonte usada para exibir o texto. <b>Isto é um texto em negrito.</b> Marca de quebra (<br>) A marca <br> cria uma quebra de linha no campo de texto, como mostra este exemplo: Uma linha de texto<br>Outra linha de texto<br> Usando o texto em formato HTML 149 Marca de fonte (<font>) A marca <font> especifica uma fonte ou lista de fontes para exibir o texto. A marca font oferece suporte aos seguintes atributos: • Apenas valores de cor hexadecimais (#FFFFFF) são suportados. Por exemplo, o código HTML a seguir cria texto vermelho. color <font color="#FF0000">Este texto está em vermelho</font> • Especifica o nome da fonte que será usada. Você também pode especificar uma lista de nomes de fontes separados por vírgula, em cada caso o Flash Player escolhe a primeira fonte disponível. Se a fonte especificada não estiver instalada no sistema de reprodução ou não estiver incorporada no SWF, o Flash Player escolherá uma fonte substituta. Exemplo: face <font face="Times, Times New Roman">Este texto pode ser em Times ou Times New Roman..</font> • Para obter mais informações sobre a incorporação de fontes em aplicativos Flash, consulte TextField.embedFonts na página 749 e “Setting dynamic and input text options” (Definindo opções de texto dinâmico e de entrada) em Usando a Ajuda do Flash. size Especifica o tamanho da fonte, em pixels. Você também pode usar tamanhos de pontos relativos (+2 ou -4). <font size="24" color="#0000FF">Este texto está em verde, tamanho 24</font> Marca de imagem (<img>) A marca <img> permite incorporar JPEGs, SWFs e clipes de filme externos a campos de texto. O texto flui automaticamente em torno de imagens incorporadas nos campos de texto. Essa marca é suportada somente em campos de texto dinâmicos ou de entrada com várias linhas e quebra de texto. Para criar um campo de texto de várias linhas com quebra automática de linha, siga um destes procedimentos: • No ambiente de criação do Flash, selecione um campo de texto no Stage e, no inspetor Property, selecione Multiline no menu pop-up Text Type. • Para um campo de texto criado durante a execução com MovieClip.createTextField(), defina as novas instâncias do campo de texto TextField.multiline e as propriedades TextField.wordWrap como true. A marca <img> tem um atributo obrigatório, src, que especifica o caminho para um arquivo JPEG, um arquivo SWF ou o identificador de vinculação de um símbolo do clipe de filme. Todos os outros atributos são opcionais. As marcas <img> oferecem suporte aos seguintes atributos: • Especifica o URL para um arquivo JPEG ou SWF, ou o identificador de vinculação para um símbolo do clipe de filme na biblioteca. Este atributo é obrigatório; todos os outros atributos são opcionais. Os arquivos externos (JPEGs e SWFs) não são exibidos até que o download seja concluído. src Observação: O Flash Player não oferece suporte a JPEGs progressivos. 150 Capítulo 8: Trabalhando com texto • • • • • • id Especifica o nome da instância do clipe de filme (criado pelo Flash Player) que contém o JPEG, SWF ou clipe de filme incorporado. É útil para controlar o conteúdo incorporado com o ActionScript. width A largura da imagem, SWF ou clipe de filme, em pixels. height A altura da imagem, SWF ou clipe de filme que está sendo inserido, em pixels. align Especifica o alinhamento horizontal da imagem incorporada no campo de texto. Os valores válidos são left e right. O valor padrão é left. hspace Especifica a quantidade de espaço horizontal em torno da imagem onde nenhum texto aparecerá. O valor padrão é 8. vspace Especifica a quantidade de espaço vertical em torno da imagem onde nenhum texto aparecerá. O valor padrão é 8. Para obter mais informações e exemplos do uso da marca <img>, consulte “Incorporando imagens, SWFs e clipes de filme aos campos de texto” na página 154. Marca de itálico (<i>) A marca <i> exibe o texto marcado em itálico. Um tipo itálico deve estar disponível para a fonte usada. Isto é muito <i>interessante</i> O código anterior será renderizado assim: Isto é muito interessante. Marca de item de lista (<li>) A marca <li> coloca um bullet na frente do texto que inclui. Lista de alimentos: <li>Maçãs</li> <li>Laranjas</li> <li>Limões</li> O código anterior será renderizado assim: Lista de alimentos: ■ Maçãs ■ Laranjas ■ Limões Usando o texto em formato HTML 151 Marca de parágrafo (<p>) A marca <p> cria um novo parágrafo. Ela oferece suporte aos seguintes atributos: • align center. • class Especifica uma classe de estilo CSS definida por uma instância da classe TextField.StyleSheet. Para obter mais informações, consulte “Usando classes de estilo” na página 143.) O exemplo a seguir usa o atributo align para alinhar o texto no lado direito de um campo de texto. Especifica o alinhamento do texto no parágrafo; os valores válidos são left, right e textField.htmlText = "<p align='right'>Este texto é alinhado no lado direito do campo de texto</p>"; O exemplo a seguir usa o atributo class para atribuir uma classe de estilo de texto a uma marca <p>. var myStyleSheet = new TextField.StyleSheet(); myStyleSheet.secreateTextField("test", 10, 0,0, 300,100); createTextField("test", 10, 0,0, 300,100); test.styleSheet = myStyleSheet; test.htmlText = "<p class='body'>Este texto tem estilo de corpo.</p>."; Marca de intervalo (<span>) A marca <span> está disponível somente para uso com os estilos de texto CSS. Para obter mais informações, consulte “Formatando o texto com Cascading Style Sheet” na página 139.) Ela oferece suporte ao seguinte atributo: • class Especifica uma classe de estilo CSS definida por uma instância da classe TextField.StyleSheet. Para obter mais informações sobre a criação de classes de estilo de texto, consulte “Usando classes de estilo” na página 143. Marca de formatação de texto (<textformat>) A marca <textformat> permite usar um subconjunto das propriedades de formatação de parágrafo da classe TextFormat nos campos de texto HTML, incluindo entrelinhamento, recuo, margens e interrupções de tabulação. Você pode combinar marcas <textformat> com as marcas HTML internas. A marca <textformat> tem os seguintes atributos: • • • • 152 blockindent Especifica o recuo do bloco em pontos; corresponde a TextFormat.blockIndent. (Consulte TextFormat.blockIndent na página 786.) Especifica o recuo do primeiro caractere no parágrafo em relação à margem esquerda; corresponde a TextFormat.indent. (Consulte TextFormat.indent na página 790.) leading Especifica a quantidade de espaço vertical entre as linhas; corresponde ao TextFormat.leading. (Consulte TextFormat.leading na página 791.) leftmargin Especifica a margem esquerda do parágrafo, em pontos; corresponde ao TextFormat.leftMargin. (Consulte TextFormat.leftMargin na página 791.) indent Capítulo 8: Trabalhando com texto • rightmargin Especifica a margem direita do parágrafo, em pontos; corresponde TextFormat.rightMargin. (Consulte TextFormat.rightMargin na página 791.) • tabstops Especifica as interrupções de tabulação personalizadas como um array de inteiros não negativos; corresponde ao TextFormat.tabStops. (Consulte TextFormat.tabStops na página 792.) ao O exemplo de código a seguir usa o atributo tabstops da marca <textformat> para criar uma tabela de dados com cabeçalhos de linha em negrito, como apresentado abaixo: Nome Idade Departamento Tim 32 IMD Edwin 46 Engenharia Para criar uma tabela formatada de dados usando interrupções de tabulação: 1 Usando a ferramenta Text, crie um campo de texto dinâmico que tenha aproximadamente 300 pixels de largura e 100 pixels de altura. 2 No inspetor Property, digite table_txt na caixa de texto Instance Name, selecione Multiline no menu Line Type e selecione a opção Render Text as HTML. 3 Na Timeline, selecione o primeiro quadro na Layer 1. 4 Abra o painel Actions (Window > Development Panels > Actions) e digite o código a seguir: var rowHeaders = "<b>Nome\t</b><b>Idade\t</b><b>Departamento"; var row_1 = "Tim\t31\tIMD"; var row_2 = "Edwin\t42\tQA"; table_txt.htmlText = "<textformat tabstops='[100, 200]'>"; table_txt.htmlText += rowHeaders; table_txt.htmlText += row_1; table_txt.htmlText += row_2 ; table_txt.htmlText += "</textformat>"; Observe o uso da seqüência de escape do caractere de tabulação (\t) para adicionar tabulações entre cada “coluna” da tabela. 5 Selecione Control > Test Movie para testar o filme. Marca de sublinhado (<u>) A marca <u> sublinha o texto marcado. Este texto está <u>sublinhado</u> O código anterior será renderizado assim: Este texto está sublinhado. Usando o texto em formato HTML 153 Incorporando imagens, SWFs e clipes de filme aos campos de texto No Flash Player 7 e versões posteriores, você pode usar a marca <img> para incorporar JPEGs, SWFs e clipes de filmes a campos de texto dinâmicos e de entrada. (Para obter uma lista completa de atributos da marca <img>, consulte “Marca de imagem (<img>)” na página 150.) O padrão é o Flash exibir a mídia incorporada em um campo de texto com tamanho completo. Para especificar as dimensões da mídia incorporada, use os atributos height e width da marca <img>. (Consulte “Especificando os valores de altura e largura” na página 154.) Em geral, uma imagem incorporada em um campo de texto aparece na linha seguinte à marca <img>. Entretanto, quando a marca <img> é o primeiro caractere no campo de texto, a imagem aparece na primeira linha do campo de texto. Incorporando SWFs e JPEGs Para incorporar um arquivo JPEG ou SWF a um campo de texto, especifique o caminho absoluto ou relativo para o arquivo JPEG ou SWF no atributo src da marca <img>. Por exemplo, o código a seguir insere um JPEG localizado na mesma pasta que o SWF. textField_txt.htmlText = "<p>Aqui está uma foto das minhas últimas férias:<img src='beach.jpg'>"; Incorporando símbolos do clipe de filme Para incorporar um símbolo do clipe de filme a um campo de texto, você especifica o identificador de vinculação do símbolo para o atributo src da marca <img>. (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 125.) Por exemplo, o código a seguir insere um símbolo do clipe de filme com o identificador de vinculação symbol_ID. textField_txt.htmlText = "<p>Aqui está um símbolo de clipe:<img src='symbol_ID'>"; Para que um clipe de filme incorporado seja exibido adequada e completamente, o ponto de registro de seu símbolo deve ser um ponto (0,0). Especificando os valores de altura e largura Se você especificar os atributos width e height para uma marca <img>, o espaço é reservado no campo de texto para o JPEG, SWF ou clipe de filme. Após o download completo de um arquivo JPEG ou SWF, ele é exibido no espaço reservado. O Flash dimensiona a mídia para cima ou para baixo de acordo com os valores height e width. Se você não especificar os valores height e width, nenhum espaço será reservado para a mídia incorporada. Após o download completo de um arquivo JPEG ou SWF, o Flash insere-o no campo de texto com tamanho completo e quebra novamente o texto em torno dele. 154 Capítulo 8: Trabalhando com texto Controlando a mídia incorporada com o ActionScript O Flash Player cria um novo clipe de filme para cada marca <img> e incorpora esse clipe ao objeto TextField. O atributo id da marca <img> permite atribuir um nome de instância ao clipe de filme criado. Assim, é possível controlar o clipe de filme com o ActionScript. O clipe de filme criado pelo Flash Player é adicionado como um clipe de filme filho ao campo de texto que contém a imagem. Por exemplo, o código a seguir incorpora um arquivo SWF animation.swf ao campo de texto no nível 0 e atribui o nome de instância animation_mc ao clipe de filme que contém o SWF. textField_txt _level0.textField_txt.htmlText = "Aqui está uma animação interessante: <img src='animation.swf' id='animation_mc'> Nesse caso, o caminho totalmente qualificado para o clipe de filme criado recentemente é _level0.textField_txt.animation_mc. Por exemplo, você pode anexar o código a seguir a um botão (na mesma Timeline que textField_txt) que interromperá a reprodução do SWF incorporado. on(press){ textField_txt.animation_mc.stop(); } Criando hiperlinks fora da mídia incorporada Para criar um hiperlink fora de um JPEG, SWF ou clipe de filme incorporado, inclua a marca <img> em uma marca <a>: textField.htmlText = "Clique na imagem para voltar para a página principal<a href='home.htm'><img src='home.jpg'></a>"; Quando o mouse está sobre uma imagem, SWF ou clipe de filme entre marcas <a>, o ponteiro do mouse muda para um ícone de “mão”, como os hiperlinks padrão. Observe que a interatividade, como cliques de mouse e pressionamentos de tecla, não é registrada nos SWFs e clipes de filmes que estão entre marcas <a>. Criando texto de rolagem Há varias maneiras de criar texto de rolagem no Flash. Os campos de texto dinâmico e de entrada poderão ser roláveis se você selecionar a opção Scrollable Mode (Modo rolável) do menu Text ou do menu de contexto, ou, pressionando a tecla Shift, clicar duas vezes na alça do bloco de texto. É possível usar as propriedades scroll e maxscroll do objeto TextField para controlar a rolagem vertical, e as propriedades hscroll e maxhscroll para controlar a rolagem horizontal em um bloco de texto. As propriedades scroll e hscroll especificam as posições de rolagem vertical e horizontal atuais, respectivamente; você pode ler e escrever essas propriedades. As propriedades maxscroll e maxhscroll especificam as posições de rolagem vertical e horizontal máximas, respectivamente; você só pode ler essas propriedades. O componente TextArea no Flash MX 2004 fornece uma maneira fácil de criar campos de texto de rolagem com um mínimo de script escrito. Para obter informações, consulte a entrada do componente TextArea em Usando a Ajuda dos componentes. Criando texto de rolagem 155 Para criar um bloco de texto dinâmico rolável, execute um dos seguintes procedimentos: • Pressione a tecla Shift e clique duas vezes na alça do bloco de texto dinâmico. • Selecione o bloco de texto dinâmico com a ferramenta Arrow (Seta) e selecione Text > Scrollable. • Selecione o bloco de texto dinâmico com a ferramenta Arrow. Clique com o botão direito do mouse (Windows) ou, pressionando Control, clique (Macintosh) no bloco de texto dinâmico e escolha Text > Scrollable. Para usar a propriedade scroll para criar texto de rolagem: 1 Siga um destes procedimentos: • Use a ferramenta Text para arrastar um campo de texto no Stage. Atribua ao campo de texto o nome de instância textField no inspetor Property. • Use o ActionScript para criar um campo de texto dinamicamente com o método MovieClip.createTextField(). Atribua ao campo de texto o nome de instância textField como parâmetro do método. 2 Crie um botão Up (Para cima) e um botão Down (Para baixo) ou escolha Window > Other Panels (Outros painéis) > Common Libraries (Bibliotecas comuns) > Buttons e arraste os botões para o Stage. Esses botões serão usados para rolar o texto para cima e para baixo. 3 Selecione o botão Down no Stage. 4 No painel Actions (Window > Development Panels > Actions), digite o código a seguir para rolar o texto para baixo no campo de texto: on(press){ textField.scroll += 1; } 5 Selecione o botão Up no Stage. 6 No painel Actions, digite o código a seguir para rolar o texto para cima: on(press){ textField.scroll += 1; } 156 Capítulo 8: Trabalhando com texto Exibindo as propriedades do campo de texto para depuração Para obter informações depuradas sobre os objeto TextField, você pode usar o comando Debug (Depurar) > List Variables (Listar variáveis) no modo testar filme. O painel Output usa as seguintes convenções na exibição de objeto TextField: • • • • • • Se uma propriedade não for encontrada no objeto, ela não será exibida. Não mais de quatro propriedades são exibidas em uma linha. Uma propriedade com um valor de seqüência de caracteres é exibida em uma linha separada. Se houver alguma outra propriedade definida para o objeto após as propriedades internas serem processadas, elas serão adicionadas à exibição usando as regras no segundo e terceiro pontos acima. As propriedades de cor são exibidas como números hexadecimais (0x00FF00). As propriedades são exibidas na seguinte ordem: variable, text, htmlText, html, textWidth, textHeight, maxChars, borderColor, backgroundColor, textColor, border, background, wordWrap, password, multiline, selectable, scroll, hscroll, maxscroll, maxhscroll, bottomScroll, type, embedFonts, restrict, length, tabIndex, autoSize. O comando Debug > List Objects no modo de teste lista os objeto TextField. Se um nome de instância for especificado para um campo de texto, o painel Output exibirá o caminho de destino completo incluindo o nome de instância da seguinte forma: Target = "target path" Para obter mais informações sobre o comando List Variables ou List Objects, consulte “Usando o painel Output” na página 73. Exibindo as propriedades do campo de texto para depuração 157 158 Capítulo 8: Trabalhando com texto CAPÍTULO 9 Criando classes com o ActionScript 2 O ActionScript 2 é uma reestruturação da linguagem do ActionScript que contém vários novos recursos de programação eficientes encontrados em outras linguagens de programação, como Java. O ActionScript 2 incentiva estruturas de programa reutilizáveis, dimensionáveis, resistentes e fáceis de manter. Ele também diminui o tempo de desenvolvimento fornecendo aos usuários assistência de código completa e informações de depuração. O ActionScript 2 está em conformidade com os padrões existentes e baseia-se na proposta ECMAScript 4 (www.mozilla.org/js/language/es4/). Os recursos do ActionScript 2 são descritos posteriormente. Modelo familiar OOP (object-oriented programming - programação orientada a objeto) O recurso primário do ActionScript 2 é um modelo familiar para a criação de programas orientados a objeto. O ActionScript 2 introduz vários novos conceitos e palavras-chave orientados a objeto, como class, interface e packages, que parecerão familiares se você já tiver programado com Java. O modelo OOP fornecido pelo ActionScript 2 é uma “formalização sintática” do método de encadeamento de protótipo usado nas versões anteriores do Macromedia Flash para criar objeto e estabelecer herança. Atribuição estrita de tipo de dados O ActionScript 2 também permite especificar explicitamente os tipos de dados para variáveis, parâmetros de função e tipos de retorno de função. Por exemplo, o código a seguir declara uma variável userName de tipo String (um tipo de dados interno do ActionScript ou classe). var userName:String = ""; Os dois recursos anteriores permitem que a ferramenta de criação e o compilador forneçam mensagens de aviso e erro do compilador que ajudam a encontrar falhas nos aplicativos mais rápido que anteriormente no Flash. Avisos e erros do compilador Princípios da programação orientada a objeto Esta seção fornece uma breve introdução aos princípios envolvidos no desenvolvimento de programas orientados a objeto. Esses princípios são descritos mais profundamente no restante deste capítulo, junto com os detalhes sobre como eles são implementados no Macromedia Flash MX 2004 e no Macromedia Flash MX Professional 2004. 159 Objeto Pense em um objeto do mundo real, por exemplo, um gato. Pode-se dizer que um gato tem propriedades (ou estados) como nome, idade e cor; um gato também tem comportamentos, como dormir, comer e ronronar. No mundo da programação orientada a objeto, os objeto também têm propriedades e comportamentos. Com as técnicas orientadas a objeto, você pode modelar um objeto do mundo real (como um gato) ou um objeto mais abstrato (como um processo químico). Classes e membros de classes Continuando com a analogia do mundo real, considere que há gatos de cores, idades e nomes diferentes, com maneiras diferentes de comer e ronronar. Mas todos os gatos pertencem a uma certa classe de objeto, um objeto do tipo “gato”. Cada gato individual (mundo real) é uma instância do tipo de classe gato. Da mesma maneira, em uma programação orientada a objeto, uma classe define um projeto de arquitetura de um tipo de objeto. As características e comportamentos que pertencem a uma classe são tratadas como membros dessa classe. As características (no exemplo do gato, nome, idade e cor) são chamadas de propriedades da classe, que são representadas como variáveis; os comportamentos (comer, dormir) são chamados de métodos da classe e são representados como funções. Por exemplo, você pode criar uma classe Person e criar um indivíduo que será uma instância dessa classe. A instância da pessoa conterá todas as propriedades e métodos da classe Person. No ActionScript, você define uma classe com o comando class (consulte “Criando e usando classes” na página 165). O ActionScript inclui várias classes internas, como MovieClip, TextField e String. Para obter mais informações, consulte Capítulo 6, “Usando as classes internas”, na página 111. Herança Uma das principais vantagens da programação orientada a objeto é que você cria subclasses de uma classe; a subclasse herda todas as propriedades e métodos da superclasse. A subclasse normalmente define métodos e propriedades adicionais ou estende a superclasse. As subclasses também substituem (fornecem suas próprias definições para) os métodos herdados de uma superclasse. Por exemplo, você pode criar uma classe Mamífero, que define certas propriedades e comportamentos comuns a todos os mamíferos. Você pode criar uma classe Gato que estenda a classe Mamífero. Dessa maneira, a herança pode promover a reutilização do código: em vez de recriar todos os códigos comuns às duas classes, você pode simplesmente estender uma classe existente. Outra subclasse, por sua vez, pode estender a classe Gato etc. Em um aplicativo complexo, determinar como estruturar a hierarquia das classes é uma grande parte do projeto. No ActionScript, você usa a palavra-chave extends para estabelecer a herança entre uma classe e sua superclasse. Para obter mais informações, consulte “Criando subclasses” na página 167. 160 Capítulo 9: Criando classes com o ActionScript 2 Interfaces As interfaces em programação orientada a objeto podem ser descritas como classes cujos métodos não são implementados (definidos). Outra classe pode implementar os métodos declarados pela interface. Também é possível considerar uma interface como um “contrato de programação” que pode ser usado para impor os relacionamentos entre classes não relacionadas de outra maneira. Por exemplo, suponha que você esteja trabalhando com uma equipe de programadores, cada um responsável por uma parte diferente (classe) do mesmo aplicativo. Ao projetar o aplicativo, você estabelece um conjunto de métodos que as diferentes classes usarão para se comunicar. Portanto, você cria uma interface que declara esses métodos, seus parâmetros e tipos de retorno. Qualquer classe que implemente essa interface deve fornecer definições para esses métodos; caso contrário, ocorrerá um erro do compilador. Você também pode usar as interfaces para fornecer um forma limitada de “herança múltipla”, que não é permitida no ActionScript 2. Na herança múltipla, uma classe estende mais de uma classe. Por exemplo, no C++, a classe Gato pode estender a classe Mamífero, bem como uma classe Brincalhão, que contém os métodos PerseguirCauda e ComerComidaGato. O ActionScript 2, como o Java, não permite que uma classe estenda várias classes diretamente. Entretanto, você pode criar uma interface Brincalhão que declara os métodos PerseguirCauda e ComerComidaGato. Uma classe Gato, ou qualquer outra classe, pode implementar essa interface e fornecer definições para esses métodos. Usando classes: um exemplo simples Para os que são novos em programação orientada a objeto, esta seção fornece uma visão geral do fluxo de trabalho envolvido na criação e no uso de classes no Flash. Esse fluxo de trabalho inclui, pelo menos, as seguintes etapas: 1 Definir uma classe em um arquivo de classes do ActionScript. 2 Salvar o arquivo de classes em uma pasta do caminho de classe designado (um local em que o Flash procure as classes). 3 Criar uma instância da classe em outro script, em um documento do Flash (FLA) ou em um arquivo de script externo, ou criar uma subclasse baseada na classe original. Nesta seção também é analisado um novo recurso do ActionScript 2 denominado atribuição estrita de tipos de dados, que permite especificar o tipo de dados para uma variável, um parâmetro de função ou um tipo de retorno de função. Apesar de esta seção abordar apenas classes, o fluxo de trabalho geral é o mesmo para usar interfaces. Para obter mais informações, consulte “Criando e usando interfaces” na página 171. Usando classes: um exemplo simples 161 Criando um arquivo de classes Para criar uma classe, primeiro você deve criar um arquivo externo do ActionScript (AS). As classes (e interfaces) só podem ser definidas em arquivos de script externos. Por exemplo, você não pode definir uma classe em um script anexado a um quadro ou botão em um documento do Flash (FLA). Para criar um arquivo externo AS, use o editor ActionScript incluído no Flash ou o seu editor de código ou texto preferido. Observação: O código do ActionScript em arquivos externos é compilado em um arquivo SWF quando você publica, exporta, testa ou depura um arquivo FLA. Portanto, se você fizer alguma alteração em um arquivo externo, precisará salvar o arquivo e recompilar os arquivos FLA que o usam. Nas etapas posteriores, você criará uma classe Person com duas propriedades (age e name) e um único método (showInfo()) que exibe os valores dessas propriedades no painel Output (Saída). Para criar o arquivo de classes: 1 Crie uma nova pasta no disco rígido e chame-a de PersonFiles. Essa pasta conterá todos os arquivos desse projeto. 2 Siga um destes procedimentos: ■ Crie um novo arquivo no editor de texto ou código preferido. ■ (Somente para Flash MX Professional) Selecione File (Arquivo) > New (Novo) para abrir a caixa de diálogo New Document (Novo documento), selecione ActionScript File (Arquivo do ActionScript) na lista de tipos de arquivos e clique em OK. A janela Script é aberta com um arquivo em branco. 3 Salve o arquivo como Person.as na pasta PersonFiles. 4 Na janela Script, digite o código a seguir: class Person { } Essa é a classe declaration. Na sua forma mais básica, uma classe declaration consiste na palavrachave class, seguida pelo nome da classe (Person, neste caso) e chaves ({}). Tudo entre as chave chama-se corpo da classe e é onde as propriedades e os métodos da classe são definidos. Observação: O nome da classe (Person) corresponde ao nome do arquivo AS que a contém (Person.as). Isso é muito importante; se esses dois nomes não corresponderem, a classe não será compilada. 5 Para criar as propriedades da classe Person, use a palavra-chave var para definir duas variáveis age e name, como mostrado posteriormente. class Person { var age:Number; var name:String; } Dica: Por convenção, as propriedades da classe são definidas na parte superior do corpo da classe, o que facilita o entendimento do código, mas isso não é obrigatório. 162 Capítulo 9: Criando classes com o ActionScript 2 Observe a sintaxe dos dois pontos (var age:Number e var name:String) usada nas declarações de variáveis. Esse é um exemplo de atribuição estrita de tipo de dados. Quando você atribui um tipo a uma variável dessa maneira (var variableName:variableType), o compilador do ActionScript 2 verifica se os valores atribuídos a essa variável correspondem ao tipo especificado. Apesar de essa sintaxe não ser obrigatória, ela é recomendável e pode facilitar a depuração de scripts. Para obter mais informações, consulte “Atribuição estrita de tipos de dados” na página 35.) 6 Em seguida, você criará o método showInfo(), que retorna uma seqüência de caracteres préformatada com os valores das propriedades age e name. Adicione a definição da função showInfo() ao corpo da classe, como mostrado a seguir. class Person { var age:Number; var name:String; // Método para retornar valores de propriedades function showInfo():String { return("Olá, meu nome é " + name + " e eu tenho " + age + " anos."); } } Observe o uso da atribuição de tipo de dados (opcional mas recomendada) na definição da função. function showInfo():String {...} Nesse caso, está sendo atribuído um tipo ao valor de retorno da função showInfo() (uma seqüência de caracteres). 7 A última parte do código que você adicionará nesta seção é uma função especial que se chama construtora. Em programação orientada a objeto, a função construtora inicializa cada nova instância de uma classe. A função construtora sempre tem o mesmo nome da classe. Para criar a função construtora da classe, adicione o código a seguir: class Person { var age:Number; var name:String; // Método para retornar valores de propriedades function showInfo():String { return("Olá, meu nome é " + name + " e eu tenho " + age + "anos."); } // Função construtora function Person (myName:String, myAge:Number) { name = myName; age = myAge; } } A função construtora Person() pega dois parâmetros, myName e myAge e os atribui às propriedades name e age. São atribuídos os tipos de dados String e Number, respectivamente, aos dois parâmetros da função. Para obter mais informações sobre as funções construtoras, consulte “Funções construtoras” na página 167. Observação: Se você não criar uma função construtora, uma função vazia é criada automaticamente durante a compilação. Usando classes: um exemplo simples 163 8 Salve o arquivo como Person.as na pasta PersonFiles criada na etapa 1. Se você estiver usando o Flash MX 2004 (não o Flash MX Professional), vá para a próxima seção (consulte “Criando uma instância da classe Person” na página 164.) 9 (Somente Flash MX Professional) Verifique a sintaxe do arquivo de classes selecionando Tools (Ferramentas)> Check Syntax (Verificar sintaxe) ou pressionando Control+T (Windows) ou Command+T (Macintosh). Se algum erro for informado no painel Output, compare o código no script com o código final na etapa 7 anterior. Se você não conseguir corrigir os erros do código, copie o código completo na etapa 7 do painel Help (Ajuda). Criando uma instância da classe Person A próxima etapa é criar uma instância da classe Person em outro script, como um script de quadro em um documento Flash (FLA) ou outro script AS, e atribuí-la a uma variável. Para criar uma instância de uma classe personalizada, use o operador new, como faria ao criar uma instância de uma classe interna ActionScript (como a classe XML ou TextField). Por exemplo, o código a seguir cria uma instância da classe Person e a atribui à variável newPerson. var newPerson:Person = new Person("Nate", 32); Este código chama a função construtora da classe Person, passando como parâmetros os valores "Nate" e 32. A variável newPerson é considerada um objeto Person. A atribuição de um tipo aos objeto permite ao compilador garantir que você não tentará acessar as propriedades ou os métodos que não estão definidos na classe. (A exceção é se você declarar a classe como dinâmica usando a palavra-chave dynamic. Consulte “Criando classes dinâmicas” na página 178.) Para criar uma instância da classe Person no documento Flash: 1 No Flash, selecione File > New e Flash Document (Documento do Flash) na lista de tipos de documentos e clique em OK. 2 Salve o arquivo como createPerson.fla na pasta PersonFiles criada anteriormente. 3 Selecione Layer 1 (Camada 1) na Timeline (Linha de tempo) e abra o painel Actions, em Window (Janela) > Development Panels (Painéis de desenvolvimento) > Actions. 4 No painel Actions, insira o seguinte código: var person_1:Person = new Person("Nate", 32); var person_2:Person = new Person("Jane", 28); trace(person_1.showInfo()); trace(person_2.showInfo()); O código anterior cria duas instâncias da classe Person, person_1 e person_2, e chama o método showInfo() em cada instância. 5 Salve o seu trabalho e selecione Control (Controlar) > Test Movie (Testar filme). Você deve ver o seguinte no painel Output : Olá, meu nome é Nate e eu tenho 32 anos. Olá, meu nome é Jane e eu tenho 28 anos. 164 Capítulo 9: Criando classes com o ActionScript 2 Quando você cria uma instância de uma classe chamando sua função construtora, o Flash procura um arquivo AS de nome igual ao do construtor em um conjunto de locais de pasta predeterminados. Esse grupo de locais de pasta é conhecido coletivamente como caminho de classe (consulte “Noções básicas de caminho de classe” na página 173). Agora você deve ter uma idéia geral de como criar e usar classes nos documentos do Flash. No restante deste capítulo você encontrará informações mais detalhadas sobre as classes e interfaces. Criando e usando classes Como discutido anteriormente, uma classe consiste em duas partes: a declaração e o corpo. A declaração da classe consiste pelo menos no comando class, seguido por um identificador do nome da classe e chaves. Tudo que está entre as chaves é o corpo da classe. class className { // corpo da classe } Você pode definir classes somente nos arquivos ActionScript (AS). Por exemplo, não é possível definir uma classe em um script de quadro no arquivo FLA. Além disso, o nome da classe especificado deve corresponder ao nome do arquivo AS que o contém. Por exemplo, se você criar uma classe Shape, o arquivo AS que contém a definição da classe deve ser chamado Shape.as. // No arquivo Shape.as class Shape { // corpo da classe Shape } Todos os arquivos da classe AS criados devem ser salvos em uma das pastas do caminho de classe designado — pastas em que o Flash procura definições de classe ao compilar os scripts. (Consulte “Noções básicas de caminho de classe” na página 173.) Criando propriedades e métodos Um membro da classe consiste em propriedades (declarações de variáveis) e métodos (declarações de função). Você deve declarar todas as propriedades e métodos dentro do corpo da classe (as chaves); caso contrário, ocorrerá um erro durante a compilação. Qualquer variável declarada em uma classe, mas fora de uma função, é uma propriedade da classe. Por exemplo, a classe Person analisada anteriormente tem duas propriedades, age e name, de tipo Number e String, respectivamente. class Person { var age:Number; var name:String; } Igualmente, qualquer função declarada em uma classe é considerada um método da classe. No exemplo da classe Person, você criou um único método showInfo(). class Person { var age:Number; var name:String; function showInfo() { // definição do método showInfo() } } Criando e usando classes 165 Inicializando as propriedades inline Você pode inicializar as propriedades inline, quando as declara, com os valores padrão, como mostrado aqui: class Person { var age:Number = 50; var name:String = "John Doe"; } Quando você inicializa as propriedades inline, a expressão à direita de uma atribuição deve ser uma constante de tempo de compilação. Ou seja, a expressão não pode se referir a algo definido durante a execução. As constantes de tempo de compilação incluem valores literais da seqüência de caracteres, números, valores booleanos, null, e undefined, bem como funções construtoras para as seguintes classes internas: Array, Boolean, Number, Object e String. Por exemplo, a definição de classe a seguir inicializa várias propriedades inline: class var var var var var CompileTimeTest { foo:String = "my foo"; // OK bar:Number = 5; // OK bool:Boolean = true; // OK name:String = new String("Jane"); // OK who:String = foo; // OK, porque ‘foo’ é uma constante var whee:String = myFunc(); // erro! não é uma expressão constante em tempo de compilação var lala:Number = whee; // erro! não é uma expressão constante em tempo de compilação var star:Number = bar + 25; // OK, ‘bar’ e ‘25’ são constantes function myFunc() { return "Olá mundo"; } } Essa regra aplica-se apenas a variáveis da instância (variáveis que são copiadas em cada instância de uma classe), e não a variáveis de classe (variáveis que pertencem à própria classe). Para obter mais informações sobre esses tipos de variáveis, consulte “Membros de instâncias e classes” na página 169. 166 Capítulo 9: Criando classes com o ActionScript 2 Criando subclasses Em programação orientada a objeto, uma subclasse pode herdar as propriedades e os métodos de outra classe, a superclasse. Para criar esse tipo de relacionamento entre duas classes, use a cláusula extends do comando class. Para especificar uma superclasse, use a seguinte sintaxe. class SubClass extends SuperClass {} A classe especificada em SubClass herda todas as propriedades e métodos definidos pela superclasse. Por exemplo, você pode criar uma classe Mamífero, que defina certas propriedades e métodos comuns a todos os mamíferos. Para criar uma variação da classe Mamífero, por exemplo, uma classe Marsupial, você estenderá a classe Mamífero, ou seja, criará uma subclasse da classe Mamífero. class Marsupial extends Mamífero {} A subclasse herda todas as propriedades e métodos da superclasse, incluindo as propriedades ou os métodos declarados como privados usando a palavra-chave private. (Para obter mais informações sobre variáveis privadas, consulte “Controlando o acesso de membros” na página 168.) A herança múltipla, ou herança de mais de uma classe, não é permitida. Uma classe só pode estender uma única superclasse. Você pode estender suas próprias classes personalizadas, bem como qualquer classe interna do ActionScript, como classe XML, Sound ou MovieClip. Quando você estende uma classe interna do ActionScript, a classe personalizada herda todos os métodos e propriedades da classe interna. Por exemplo, o código a seguir define a classe JukeBox, que estende a classe interna Sound. Ele define um array songList e um método playSong() que toca uma música e chama o método loadSound(), que herda da classe Sound. class JukeBox extends Sound { var songList:Array = new Array("beethoven.mp3", "bach.mp3", "mozart.mp3"); function playSong(songID:Number) { this.loadSound(songList[songID]); } } Funções construtoras 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. A função construtora tem o mesmo nome da classe que a contém. Por exemplo, a classe Person criada anteriormente continha a seguinte função construtora: // Função construtora da classe Person function Person (myName:String, myAge:Number) { name = myName; age = myAge; } Se nenhuma função construtora for explicitamente declarada, ou seja, se você não criar uma função cujo nome corresponda ao da classe, o compilador automaticamente criará uma função construtora vazia. Uma classe pode conter apenas uma função construtora; funções construtoras sobrecarregadas não são permitidas no ActionScript 2. Criando e usando classes 167 Controlando o acesso de membros 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. Entretanto, em alguns casos você pode querer proteger os dados ou métodos de uma classe do acesso de outras classes. Você precisará tornar esses membros privados, disponíveis apenas para a classe que os declara ou define. Especifique membros públicos ou privados usando o atributo de membro public ou private. Por exemplo, o código a seguir declara uma variável privada (uma propriedade) e um método privado (uma função). Por exemplo, a classe a seguir (LoginClass) define uma propriedade privada userName e um método privado getUserName(). class LoginClass { private var userName:String; private function getUserName() { return userName; } // Construtor: function LoginClass(user:String) { this.userName = user; } } 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. As instâncias da classe original, ou as instâncias das subclasses dessa classe, não podem acessar as propriedades e os métodos declarados privadamente; ou seja, os membros privados são acessíveis somente nas definições da classe, e não no nível da instância. Por exemplo, você pode criar uma subclasse de LoginClass chamada NewLoginClass. Essa subclasse pode acessar a propriedade privada (userName) e o método (getUserName()) definidos pela LoginClass. class NewLoginClass extends LoginClass { // pode acessar userName e getUserName() } Entretanto, uma instância da LoginClass ou NewLoginClass não pode acessar esses membros privados. Por exemplo, o código a seguir, adicionado a um script de quadro em um arquivo FLA, resultará em um erro do compilador indicando que o getUserName() é privado e não pode ser acessado. var loginObject:LoginClass = new LoginClass("Maxwell"); var user = loginObject.getUserName(); Observe também que o controle de acesso de membro é um único recurso de tempo de compilação; durante a execução, o Flash Player não distingue entre membros privados ou públicos. 168 Capítulo 9: Criando classes com o ActionScript 2 Membros de instâncias e classes Na programação orientada a objeto, os membros (propriedades ou métodos) de uma classe podem ser membros da instância ou membros da classe. Os membros da instância são criados e copiados, para cada instância da classe; em contraste, os membros da classe são criados apenas uma vez por classe. (Os membros da classe também são conhecidos como membros estáticos.) Para chamar um método da instância ou acessar uma propriedade da instância, você faz referência a uma instância da classe. Por exemplo, o código a seguir chama o método showInfo() em uma instância da classe MovieClip clip_mc: clip_mc.showInfo(); Os membros da classe (estática), entretanto, são atribuídos à própria classe, e não a uma instância da classe. Para chamar um método da classe ou acessar uma propriedade da classe, você faz referência ao próprio nome da classe, em vez de uma instância específica da classe: ClassName.classMember; Por exemplo, a classe Math do ActionScript consiste apenas em métodos e propriedades estáticos. Para chamar qualquer um dos seus métodos, você não cria uma instância da classe Math. Em vez disso, basta chamar os métodos na própria classe Math. O código a seguir chama o método sqrt() da classe Math: var square_root:Number = Math.sqrt(4); Criando membros de classe Para especificar que uma propriedade de uma classe é estática, use o modificador static, como mostrado a seguir. static var variableName; Você também pode declarar que os métodos de uma classe sejam estáticos. static function functionName() { // corpo da função } Os métodos da classe (estáticos) só podem acessar as propriedades da classe (estática), e não as propriedades da instância. Por exemplo, o código a seguir resultará em um erro do compilador, porque o método da classe getName() faz referência à variável da instância name. class StaticTest { var name="Ted"; static function getName() { var local_name = name; // Erro! Não é possível acessar variáveis de instância em funções estáticas. } } Para resolver esse problema, você pode transformar o método em um método da instância ou transformar a variável em uma variável da classe. Membros de instâncias e classes 169 Usando membros de classe: um exemplo simples É possível usar os membros de classe para manter as informações de estado de uma classe e suas instâncias. Por exemplo, para acompanhar o número de instâncias que foram criadas de uma determinada classe. Uma maneira fácil de fazer isso é usar uma propriedade da classe que é incrementada sempre que uma nova instância é criada. No exemplo a seguir, você criará uma classe Widget que define um contador de instância simples e estático chamado widgetCount. Sempre que uma nova instância da classe for criada, o valor de widgetCount será incrementado em 1, e o valor atual de widgetCount será exibido no painel Output. Para criar um contador de instância usando uma variável da classe: 1 Crie um novo arquivo ActionScript (AS). 2 Adicione o código a seguir ao arquivo: class Widget { static var widgetCount:Number = 0; // inicializar a variável de classe function Widget() { trace("Creating widget #" + widgetCount); widgetCount++; } } 3 4 5 6 A variável widgetCount é declarada como estática, portanto, é inicializada como 0 somente uma vez. Sempre que a função construtora da classe Widget é chamada, ela adiciona 1 à widgetCount e exibe o número da instância atual que está sendo criada. Salve o arquivo como Widget.as. Crie um novo documento Flash (FLA) e salve-o como createWidget.fla no mesmo diretório do Widget.as. Nesse arquivo, você criará novas instâncias da classe Widget. Em createWidget.fla, selecione Layer 1 na Timeline e abra o painel Actions (Window > Development Panels > Actions). Adicione o código a seguir ao painel Actions. // Antes que você crie qualquer instância da classe, // widgetCount é zero (0) trace("Widget count at start: " + Widget.widgetCount); var widget_1 = new Widget(); var widget_2 = new Widget(); var widget_3 = new Widget(); 7 Salve o arquivo e teste-o (Control > Test Movie). Você deve ver o seguinte no painel Output: Widget count at Creating widget Creating widget Creating widget 170 start: 0 # 0 # 1 # 2 Capítulo 9: Criando classes com o ActionScript 2 Membros de classe e subclasses Os membros da classe propagam-se para as subclasses da superclasse que define esses membros. No exemplo anterior (consulte “Usando membros de classe: um exemplo simples” na página 170), você usou uma propriedade de classe que acompanha o número de instâncias dessa classe criada. Você pode criar uma subclasse da classe Widget, como mostrado a seguir. class SubWidget extends Widget { function SubWidget() { trace("Creating subwidget # "+Widget.widgetCount); } } Criando e usando interfaces Uma interface na programação orientada a objeto é como uma classe cujos métodos foram declarados, mas que não tem qualquer outra finalidade. Ou seja, uma interface consiste em métodos “vazios”. Uma utilidade das interfaces é impor um protocolo entre classes não relacionadas de outra maneira, como analisado a seguir. Por exemplo, suponha que você faça parte de uma equipe de programadores, cada um trabalhando em uma parte diferente, ou seja, em uma classe diferente, de um grande aplicativo. A maioria dessas classes não está relacionada, mas você precisa fazer com que elas se comuniquem. Ou seja, você precisa definir uma interface ou um protocolo de comunicação, ao qual todas as classes devem aderir. Uma maneira de fazer isso é criar uma classe Communication que defina todos esses métodos e em seguida, fazer com que cada classe seja estendida ou herdada dessa superclasse. Como o aplicativo consiste em classes que não estão relacionadas, não faz sentido impor uma hierarquia de classe comum a elas. Uma solução melhor é criar uma interface que declare os métodos que essas classes usarão para se comunicar e, em seguida, cada classe implementa (fornece suas próprias definições para) esses métodos. Normalmente, você pode programar bem sem usar interfaces. Entretanto, quando usadas apropriadamente, as interfaces podem tornar o projeto dos aplicativos mais elegante, dimensionável e fácil de manter. Criando uma interface O processo de criação de uma interface é igual ao de criação de uma classe. Assim como as classes, você só pode definir interfaces nos arquivos ActionScript (AS) externos. Você declara uma interface usando a palavra-chave interface, seguida pelo nome da interface e por chaves, que definem o corpo da interface. interface interfaceName { // declarações de método de interface } Uma interface só pode conter declarações de métodos (funções), incluindo parâmetros, tipos de parâmetro e tipos de retorno de função. Por exemplo, o código a seguir declara uma interface MyInterface com dois métodos, method_1() e method_2(). O primeiro método não tem parâmetros e tipo de retorno (especificado como Void). A segunda declaração de método tem um único parâmetro de tipo String e especifica um tipo de retorno Boolean. Criando e usando interfaces 171 interface MyInterface { function method_1():Void; function method_2(param:String):Boolean; } As interfaces não podem conter declarações de variável ou atribuições. As funções declaradas em uma interface não podem conter chaves. Por exemplo, a interface a seguir não será compilada. interface BadInterface{ // Erro do compilador. Declarações de variáveis não permitidas em interfaces. var illegalVar; // Erro do compilador. Corpos de função não permitidos em interfaces. function illegalMethod(){ } } Interfaces como tipos de dados Como uma classe, uma interface define um novo tipo de dados. Qualquer classe que implemente uma interface poderá ser considerada como do tipo definido pela interface. Esse recurso é útil para determinar se um objeto específico implementa uma dada interface. Por exemplo, considere as seguinte interface. interface Movable { function moveUp(); function moveDown(); } Agora considere a classe Box que implementa a interface Movable. class Box implements Movable { var x_pos, y_pos; function moveUp() { // definição de método } function moveDown() { // definição de método } } Em seguida, em outro script onde você criou uma instância da classe Box, é possível declarar uma variável do tipo Movable. var newBox:Movable = new Box(); Durante a execução, no Flash Player 7 e versões posteriores, você pode distribuir uma expressão para um tipo de interface. Se a expressão for um objeto que implemente a interface ou tenha uma superclasse que implemente a interface, o objeto será retornado. Caso contrário, será retornado null. Esse recurso é útil para verificar se um determinado objeto implementa uma interface específica. Por exemplo, o código a seguir verifica primeiro se o nome do objeto someObject implementa a interface Movable antes de chamar o método moveUp() no objeto. if(Movable(someObject) != null) { someObject.moveUp(); } 172 Capítulo 9: Criando classes com o ActionScript 2 Noções básicas de caminho de classe Para usar uma classe ou interface definida, o Flash deve poder localizar os arquivos AS externos que contêm a definição da classe ou interface. A lista de pastas na qual o Flash procura as definições de classe e interface chama-se caminho de classe. Quando você cria um arquivo de classes ActionScript, é preciso salvar o arquivo em uma das pastas especificadas no caminho de classe ou em uma subpasta. (Você pode modificar o caminho de classe para incluir o caminho da pasta desejada; consulte “Modificando o caminho de classe” na página 174.) Caso contrário, o Flash não poderá resolver ou localizar a classe ou interface especificada no script. As subpastas criadas em uma pasta do caminho de classe chamam-se pacotes e permitem organizar as classes. Para obter mais informações, consulte “Usando pacotes” na página 175. Caminhos de classe globais e em nível de documento 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. O caminho de classe global aplica-se a arquivos AS e FLA externos e é definido na caixa de diálogo Preferences, em Edit (Editar) > Preferences (Preferências). O caminho de classe em nível de documento aplica-se apenas a arquivos FLA e é definido na caixa de diálogo Publish Settings, em File > Publish Settings (Configurações de publicação), de um determinado FLA. O padrão é que os caminhos de classe globais contenham dois caminhos de pasta: um caminho relativo que aponte para a pasta que contém o documento atual, e a pasta Classes localizada na pasta de configuração do usuário instalada com o Flash. O local desta pasta é mostrado aqui: • Windows 2000 ou XP: C:\Documents and Settings\<user>\Local Settings\Application • • Data\Macromedia\Flash 2004\<language>\Configuration\ Windows 98: C:\Windows\Application Data\Macromedia\Flash 2004\ <language>\Configuration\ Macintosh OS X: Hard Drive/Users/Library/Application Support/Macromedia/Flash 2004/ <language>/Configuration/ O padrão é que o caminho de classe em nível de documento fique vazio. Como o compilador resolve as referências de classe Quando o Flash tenta resolver as referências de classe em um script FLA, ele busca primeiro o caminho de classe em nível de documento especificado para esse FLA. Se a classe não se encontrar nesse caminho de classe, ou se esse caminho de classe estiver vazio, o Flash pesquisará o caminho de classe global. Se a classe não se encontrar no caminho de classe global, ocorrerá um erro do compilador. Quando o Flash tenta resolver as referências de classe em um script AS, ele pesquisa apenas as pastas do caminho de classe global, já que os arquivos AS não têm caminho de classe de documento associado. Noções básicas de caminho de classe 173 Modificando o caminho de classe Você pode modificar o caminho de classe global usando a caixa de diálogo Preferences. Para modificar a configuração do caminho de classe em nível de documento, use a caixa de diálogo Publish Settings para o arquivo FLA. Você pode adicionar caminhos de pasta absolutos (por exemplo, C:/my_classes) e caminhos de pasta relativos (por exemplo, ../my_classes ou “.”). Por padrão, o caminho de classe global contém um caminho absoluto (a pasta Classes na pasta de configuração do usuário) e um caminho de classe relativo, indicado por um único ponto (.), que aponta para a pasta de documentos atual. Saiba que os caminhos de classe relativos podem apontar para pastas diferentes, dependendo do local do documento que está sendo compilado ou publicado. Para obter mais informações, consulte “Caminhos de classe globais e em nível de documento” na página 173. Para modificar o caminho de classe global: 1 Selecione Edit > Preferences para abrir a caixa de diálogo Preferences. 2 Clique na guia ActionScript e no botão ActionScript 2.0 Settings (Configurações do ActionScript 2.0). 3 Utilize um dos seguintes procedimentos: ■ ■ ■ Para adicionar uma pasta ao caminho da classe, clique no botão Browse to Path, procure a pasta desejada e clique em OK. A alternativa é clicar no botão Add New Path para adicionar uma nova linha à lista de caminhos de classe. Clique duas vezes na nova linha, digite um caminho relativo ou absoluto e clique em OK. Para editar uma pasta de caminhos de classe existente, selecione o caminho na lista Classpath e clique no botão Browse to Path, procure a pasta desejada e clique em OK. A alternativa é clicar duas vezes no caminho na lista Classpath, digitar o caminho desejado e clicar em OK. Para excluir uma pasta do caminho de classe, selecione o caminho na lista Classpath e clique no botão Remove from Path. Para modificar o caminho de classe em nível de documento: 1 Selecione File > Publish Settings para abrir a caixa de diálogo Publish Settings. 2 Clique na guia Flash. 3 Clique no botão Settings perto do menu pop-up ActionScript Version (Versão do ActionScript). 4 Utilize um dos seguintes procedimentos: ■ ■ ■ 174 Para adicionar uma pasta ao caminho da classe, clique no botão Browse to Path, procure a pasta desejada e clique em OK. A alternativa é clicar no botão Add New Path para adicionar uma nova linha à lista de caminhos de classe. Clique duas vezes na nova linha, digite um caminho relativo ou absoluto e clique em OK. Para editar uma pasta de caminhos de classe existente, selecione o caminho na lista Classpath e clique no botão Browse to Path, procure a pasta desejada e clique em OK. A alternativa é clicar duas vezes no caminho na lista Classpath, digitar o caminho desejado e clicar em OK. Para excluir uma pasta do caminho de classe, selecione o caminho na lista Classpath e clique no botão Remove from Path. Capítulo 9: Criando classes com o ActionScript 2 Usando pacotes Você pode organizar os arquivos de classe do ActionScript em pacotes. Um pacote é uma pasta que contém um ou mais arquivos de classe e reside em uma pasta designada do caminho da classe. (Consulte “Noções básicas de caminho de classe” na página 173.) Um pacote pode, por sua vez, conter outros pacotes, chamados subpacotes, cada um com seus próprios arquivos de classe. Os pacotes normalmente são usados para organizar classes relacionadas. Por exemplo, você pode ter três classes relacionadas, Square, Circle e Triangle, que são definidas em Square.as, Circle.as e Triangle.as. Suponha que você tenha salvo os arquivos AS em uma pasta especificada no caminho de classe. // Em Square.as: class Square {} // Em Circle.as: class Circle {} // Em Triangle.as: class Triangle {} Como esses três arquivos de classe estão relacionados, você pode decidir colocá-los em um pacote (pasta) Shapes. Nesse caso, o nome da classe totalmente qualificado conterá o caminho do pacote e o nome da classe simples. Os caminhos do pacote são denotados com a sintaxe de ponto, na qual cada ponto indica uma subpasta. Por exemplo, se você colocou cada arquivo AS que define uma forma na pasta Shapes, será necessário alterar o nome de cada arquivo de classe para refletir o novo local, da seguinte maneira: // Em Shapes/Square.as: class Shapes.Square {} // Em Shapes/Circle.as: class Shapes.Circle {} // Em Shapes/Triangle.as: class Shapes.Triangle {} Para fazer referência a uma classe que se encontre em uma pasta de pacotes, você poderá especificar o nome da classe totalmente qualificado ou importar o pacote usando o comando import. Para obter mais informações, consulte “Importando classes” na página 175. Importando classes Para fazer referência a uma classe em outro script, você deve prefixar o nome da classe com o caminho do pacote de classe. A combinação do nome de uma classe e o caminho do pacote é o nome de classe totalmente qualificado da classe. Se uma classe estiver em uma pasta do caminho de classe de nível superior, e não em uma subpasta na pasta do caminho de classe, seu nome de classe totalmente qualificado será o nome da classe. Para especificar os caminhos do pacote, use a notação de ponto para separar os nomes de pastas do pacote. Os caminhos do pacote são hierárquicos, nos quais cada ponto representa uma pasta aninhada. Por exemplo, suponha que você tenha criado uma classe Data que se encontre em com/ network/ package no caminho de classe. Para criar uma instância dessa classe, você pode especificar o nome da classe totalmente qualificado, da seguinte maneira: var dataInstance = new com.network.Data(); Importando classes 175 Você também pode usar o nome da classe totalmente qualificado para digitar as suas variáveis: var dataInstance:com.network.Data = new Data(); Você pode usar o comando import para importar pacotes para um script, o que permite usar o nome abreviado de uma classe em vez do nome totalmente qualificado. Pode também usar o caractere curinga (*) para importar todas as classes de um pacote. Por exemplo, suponha que você tenha criado uma classe UserClass que esteja incluída no caminho da pasta de pacotes macr/util/users: // No arquivo macr/util/users/UserClass.as class macr.util.users.UserClass { ... } Suponha que, em outro script, você tenha importado essa classe da maneira a seguir usando o comando import: import macr.util.users.UserClass; Depois, no mesmo script, você pode fazer referência a essa classe pelo seu nome abreviado: var myUser:UserClass = new UserClass(); Você também pode usar o caractere curinga (*) para importar todas as classes de um pacote específico. Por exemplo, suponha que você tenha um pacote macr.util com dois arquivos de classes ActionScript, foo.as e bar.as. Em outro script, você pode importar as duas classes desse pacote usando o caractere curinga, da maneira mostrada a seguir. import macr.util.*; No mesmo script, você pode fazer referência à classe foo ou bar diretamente. var myFoo:foo = new foo(); var myBar:bar = new bar(); O comando import aplica-se apenas ao script atual (quadro ou objeto) no qual ele é chamado. Por exemplo, suponha que você importe todas as classes do pacote macr.util no Frame 1 de um documento do Flash. Nesse quadro, você pode fazer referência às classes desse pacote por seus nomes simples. // No Quadro 1 de um FLA: import macr.util.*; var myFoo:foo = new foo(); Em outro script do quadro, entretanto, você precisará fazer referência às classes desse pacote por seus nomes totalmente qualificados (var myFoo:foo = new macr.util.foo();) ou adicionar um comando import ao outro quadro que importe as classes desse pacote. Se uma classe importada não for usada em um script, a classe não será incluída no código de byte do SWF resultante. 176 Capítulo 9: Criando classes com o ActionScript 2 Métodos get/set implícitos A prática da programação orientada a objeto não aconselha o acesso direto às propriedades de uma classe. As classes normalmente definem os métodos “get”, que fornecem acesso de leitura, e os métodos “set”, que fornecem acesso de gravação, a uma propriedade específica. Por exemplo, imagine uma classe que contenha uma propriedade userName: var userName:String; Em vez de permitir que as instâncias da classe acessem diretamente essa propriedade (obj.userName = "Jody", por exemplo), a classe pode ter dois métodos, getUserName e setUserName, que serão implementados da seguinte maneira: function getUserName:String() { return userName; } function setUserName(name:String): { userName = name; } Como você pode ver, getUserName retorna o valor atual de userName, e setUserName define o valor de userName como o parâmetro da seqüência de caracteres passado para o método. Uma instância da classe usará a seguinte sintaxe para obter ou definir a propriedade userName. // chamando o método "get" var name = obj.getUserName(); // chamando o método "set" obj.setUserName("Jody"); Entretanto, se você quiser usar uma sintaxe mais concisa, use os métodos get/set implícitos. Os métodos get/set implícitos permitem acessar as propriedades da classe de uma maneira direta e, ao mesmo tempo, manter-se de acordo com os princípios da OOP. Para definir esses métodos, use os atributos de método get e set. Você cria métodos que obtêm ou definem o valor de uma propriedade e adiciona a palavra-chave get ou set antes do nome do método. function get user():String { return userName; } function set user(name:String):Void { userName = name; } Um método get não deve ter parâmetros. Um método set deve ter exatamente um parâmetro obrigatório. Um método set pode ter o mesmo nome de um método get no mesmo escopo. Os métodos get/set não podem ter o mesmo nome de outras propriedades. Por exemplo, no código do exemplo anterior que define os métodos get e set chamados user, você não pode ter também uma propriedade chamada user na mesma classe. Ao contrário dos métodos simples, os métodos get/set são chamados sem parênteses ou argumentos. Por exemplo, agora é possível usar a sintaxe a seguir para acessar ou modificar o valor de userName com os métodos get/set definidos anteriormente. var name = obj.user; obj.user = "Jack"; Observação: Os métodos get/set implícitos são abreviações sintáticas do método Object.addProperty() no ActionScript 1. Consulte “Adicionando propriedades de apanhador/ definidor a objeto no ActionScript 1” na página 875. Métodos get/set implícitos 177 Criando classes dinâmicas O padrão é que as propriedades e os métodos de uma classe sejam fixos. Ou seja, 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. Por exemplo, considere uma classe Person que defina duas propriedades, name e age: class Person { var name:String; var age:Number; } Se, em outro script, você criar uma instância da classe Person e tentar acessar uma propriedade da classe que não existe, o compilador gerará um erro. Por exemplo, o código a seguir cria uma nova instância da classe Person (a_person) e tenta atribuir um valor a uma propriedade hairColor, que não existe. var a_person:Person = new Person(); a_person.hairColor = "blue"; // erro do compilador Esse código gera um erro do compilador porque a classe Person não declarou uma propriedade hairColor. Na maioria dos casos, é exatamente isso que você deseja que aconteça. Em alguns casos, entretanto, você pode adicionar e acessar propriedades ou métodos de uma classe durante a execução, que não foram definidos na classe original. O modificador de classe dynamic permite que você faça exatamente isso. Por exemplo, o código a seguir adiciona o modificador dynamic à classe Person discutida anteriormente: dynamic class Person { var name:String; var age:Number; } Agora, as instâncias da classe Person podem adicionar e acessar propriedades e métodos que não foram definidos na classe original. var a_person:Person = new Person(); a_person.hairColor = "blue"; // nenhum erro de compilador porque a classe é dinâmica 178 Capítulo 9: Criando classes com o ActionScript 2 Como as classes são compiladas e exportadas O padrão é que as classes usadas por um arquivo SWF sejam empacotadas e exportadas no primeiro quadro do SWF. Você também pode especificar o quadro onde as classes são empacotas e exportadas. Esse recurso é útil, por exemplo, quando um arquivo SWF usa muitas classes que exigem muito tempo de download. Se as classes forem exportadas no primeiro quadro, o usuário deverá aguardar o download de todos os códigos das classes antes de o quadro aparecer. Especificando um quadro posterior na Timeline, 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. Para especificar o quadro de exportação das classes de um documento Flash: 1 Com um arquivo FLA aberto, selecione File > Publish Settings. 2 Na caixa de diálogo Publish Settings, clique na guia Flash. 3 Clique no botão Settings perto do menu pop-up da versão do ActionScript para abrir a caixa de diálogo ActionScript Settings. 4 Na caixa de texto Export Frame for Classes (Exportar quadro para classes), digite o número do quadro para o qual deseja exportar o código das classes. Se o quadro especificado não existir na Timeline, você receberá uma mensagem de erro ao publicar o SWF. 5 Clique em OK, para escolher a caixa de diálogo ActionScript Settings, e em OK, para fechar a caixa de diálogo Publish Settings. Como as classes são compiladas e exportadas 179 180 Capítulo 9: Criando classes com o ActionScript 2 Esta parte descreve como incorporar mídia e dados externos aos aplicativos do Macromedia Flash. Capítulo 10: Trabalhando com dados externos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Capítulo 11: Trabalhando com mídia externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Parte IV PARTE IV Trabalhando com mídia e dados externos CAPÍTULO 10 Trabalhando com dados externos No Macromedia Flash MX 2004 e no Macromedia Flash MX Professional 2004, você pode usar o ActionScript para carregar dados de origens externas em um arquivo SWF. Pode também enviar dados de um arquivo SWF para processamento por um servidor de aplicativos (como Macromedia ColdFusion MX ou Macromedia JRun) ou outro tipo de script do servidor, como PHP ou Perl. O Flash Player pode enviar e carregar dados através do HTTP, HTTPS ou de um arquivo de texto local. Você pode criar conexões persistentes de soquete TCP/IP para aplicativos que exijam baixa latência, por exemplo, aplicações de bate-papo ou um serviço de cotação de ações. É possível formatar os dados carregados ou enviados de um arquivo SWF como XML (Extensible Markup Language) ou como pares nome/valor. O Flash Player também pode enviar e receber dados do ambiente de host, um navegador da Web, por exemplo, ou de outra instância do Flash Player no mesmo computador. Por padrão, um arquivo SWF só pode acessar dados residentes no mesmo domínio (por exemplo, www.macromedia.com) no qual o filme do Flash foi originado. Para obter mais informações, consulte “Recursos de segurança do Flash Player” na página 195.) Enviando e carregando variáveis para/de uma origem remota Um SWF é uma janela para a captura e a exibição de informações, que se assemelha a uma página HTML. Contudo, os arquivos SWF podem permanecer carregados no navegador e ser constantemente atualizados com novas informações sem a necessidade do recarregamento da página inteira. Com as funções e os métodos do ActionScript, você pode enviar e receber informações de scripts do servidor, arquivos de texto e arquivos XML. Além disso, os scripts do servidor podem solicitar informações específicas de um banco de dados e retransmiti-las para um arquivo SWF. Os scripts do servidor podem ser escritos em diversas linguagens: as mais comuns são CFML, Perl, ASP (Microsoft Active Server Pages) e PHP. Ao armazenar as informações em um banco de dados e recuperá-las, você pode criar um conteúdo dinâmico e personalizado para o SWF. Por exemplo, pode criar um quadro de mensagens, perfis pessoais de usuários ou um carrinho de compras que controle o que o usuário comprou para poder determinar suas preferências. 183 Várias funções e métodos do ActionScript permitem transferir informações para/de um SWF. Cada função ou método usa um protocolo para transferir as informações e requer que elas sejam formatadas de uma determinada maneira. • As funções e os métodos de MovieClip que usam o protocolo HTTP ou HTTPS para enviar • • • informações em um formato de código URL são getURL(), loadVariables(), loadVariablesNum(), loadMovie() e loadMovieNum(). Os métodos LoadVars que usam o protocolo HTTP ou HTTPS para enviar e carregar informações em formato de código URL são load(), send() e sendAndLoad(). Os métodos que usam o protocolo HTTP ou HTTPS para enviar e carregar informações como XML são XML.send(), XML.load() e XML.sendAndLoad(). Os métodos que criam e usam uma conexão de soquete TCP/IP para enviar e carregar informações como XML são XMLSocket.connect() e XMLSocket.send(). Verificando os dados carregados Todas as funções ou métodos que carregam dados em um arquivo SWF (exceto XMLSocket.send()) são assíncronas: os resultados da ação são retornados em um momento indeterminado. Antes de usar os dados em um SWF, verifique se eles foram carregados. Por exemplo, não é possível carregar variáveis e manipular seus valores no mesmo script. No script a seguir, você só poderá usar a variável lastFrameVisited após certificar-se de que ela tenha sido carregada a partir do arquivo myData.txt: loadVariables("myData.txt", 0); gotoAndPlay(lastFrameVisited); Cada função ou método possui uma técnica específica que pode ser usada para verificar os dados que foram carregados. Se você usar loadVariables() ou loadMovie(), poderá carregar informações no destino de um clipe de filme e usar o evento data do manipulador onClipEvent() para executar um script. Se você usar loadVariables() para carregar os dados, o manipulador onClipEvent(data) será executado quando a última variável for carregada. Se você usar loadMovie() para carregar os dados, o manipulador onClipEvent(data) será executado sempre que um fragmento do SWF for enviado ao Flash Player. Por exemplo, a ação do botão a seguir carrega as variáveis do arquivo myData.txt no clipe de filme loadTargetMC: on (release) { loadVariables("myData.txt", _root.loadTargetMC); } Um manipulador onClipEvent() atribuído à instância loadTargetMC usa a variável lastFrameVisited, que é carregada a partir do arquivo myData.txt. A ação a seguir só será executada depois que todas as variáveis, incluindo lastFrameVisited, tiverem sido carregadas: onClipEvent(data) { goToAndPlay(lastFrameVisited); } 184 Capítulo 10: Trabalhando com dados externos Se você usar os métodos XML.load(), XML.sendAndLoad() e XMLSocket.connect(), deverá definir um manipulador para processar os dados quando eles chegarem. Um manipulador é uma propriedade do objeto XML ou XMLSocket à qual você atribui uma função definida. Os manipuladores são chamados automaticamente quando as informações são recebidas. Para o objeto XML, use XML.onLoad() ou XML.onData(). Para o objeto XMLSocket, use XMLSocket.onConnect(). Para obter mais informações, consulte “Usando a classe XML” na página 188 e “Usando a classe XMLSocket” na página 191. Usando HTTP para conectar a scripts do servidor As funções loadVariables(), loadVariablesNum(), getURL(), loadMovie() e loadMovieNum() e os métodos MovieClip.loadVariables(), MovieClip.loadMovie() e MovieClip.getURL() podem se comunicar com scripts do servidor através dos protocolos HTTP ou HTTPS. Essas funções enviam todas as variáveis da Timeline (Linha do tempo) às quais elas estão anexadas. Quando usadas como métodos do objeto MovieClip, as funções loadVariables(), getURL() e loadMovie() enviam todas as variáveis do clipe de filme especificado; cada função (ou método) manipula sua resposta da seguinte maneira: • • • retorna todas as informações para uma janela do navegador e não para o Flash Player. loadVariables() carrega as variáveis em uma Timeline ou em um nível especificado do Flash Player. loadMovie() carrega um SWF em um nível especificado ou um clipe de filme do Flash Player. getURL() Ao usar a ação loadVariables(), getURL() ou loadMovie(), você pode especificar vários parâmetros: • • • é o arquivo onde residem as variáveis remotas. é o nível ou o destino no SWF que recebe as variáveis. (A função getURL() não requer esse parâmetro.) Para obter mais informações sobre níveis e destinos, consulte “About multiple Timelines and levels” (Sobre várias Timelines e níveis) em Usando a Ajuda do Flash. Variables define o método HTTP, GET ou POST, através do qual as variáveis serão enviadas. Quando omitido, o Flash Player adota como padrão GET, mas nenhuma variável é enviada. URL Local Por exemplo, para controlar as pontuações mais altas de um jogo, você pode armazená-las em um servidor e usar uma função loadVariables() para carregá-las no SWF sempre que alguém jogar esse jogo. A chamada de função seria: loadVariables("http://www.mySite.com/scripts/high_score.php", _root.scoreClip, GET); Essa ação carrega as variáveis do script PHP chamado high_score.php na instância do clipe de filme scoreClip usando o método HTTP GET. Enviando e carregando variáveis para/de uma origem remota 185 Todas as variáveis carregadas com a função loadVariables() devem estar no formato padrão de aplicativo MIME/x-www-form-urlencoded (um formato padrão usado pelos scripts CGI). O arquivo especificado no parâmetro URL de loadVariables() deve criar os pares de valores e de variáveis nesse formato para que o Flash possa lê-los. O arquivo pode especificar qualquer número de variáveis; os pares de valores e de variáveis devem ser separados com um E comercial (&) e as palavras dentro de um valor devem ser separadas com um sinal de mais (+). Por exemplo, esta frase define diversas variáveis: highScore1=54000&playerName1=rockin+good&highScore2=53455&playerName2= bonehelmet&highScore3=42885&playerName3=soda+pop Para obter mais informações, consulte loadVariables() na página 465, getURL() na página 432, loadMovie() na página 463 e a entrada Classe LoadVars em Capítulo 12, “Dicionário do ActionScript”, na página 215. Usando a classe LoadVars Para transferir variáveis entre um arquivo SWF e um servidor, use a classe LoadVars em vez da função loadVariables(). A classe LoadVars permite enviar todas as variáveis de um objeto para um URL especificado e carregar todas as variáveis de um URL especificado em um objeto. A resposta do servidor ativa o método LoadVars.onLoad() e define as variáveis no destino. Use LoadVars para obter informações de erro e indicações de andamento, e para criar um fluxo de dados durante o download. A classe LoadVars é semelhante à classe XML; ela usa os métodos load(), send() e sendAndLoad() para iniciar a comunicação com o servidor. A principal diferença entre as classes LoadVars e XML é que os dados de LoadVars são uma propriedade do objeto LoadVars, em vez de uma árvore DOM XML armazenada no objeto XML. Crie uma nova instância da classe LoadVars para chamar seus métodos. Essa instância é um recipiente que mantém dados carregados. O procedimento a seguir mostra como usar um objeto LoadVars para carregar variáveis de um arquivo de texto e exibi-las em um campo de texto. Para carregar dados com o objeto LoadVars: 1 Em um editor de texto como o Bloco de Notas ou SimpleText, crie um novo arquivo de texto e adicione o seguinte texto ao arquivo: day=11&month=July&year=2003 2 Salve o arquivo como date.txt. 3 No Flash, crie um novo documento. 4 Crie um campo de texto dinâmico no Stage (Palco) e atribua a ele o nome de instância data_txt. 5 Selecione Frame 1 (Quadro 1) na Timeline e abra o painel Actions (Ações), em Window (Janela) > Development Panels (Painéis de desenvolvimento) > Actions, caso ainda não esteja aberto. 186 Capítulo 10: Trabalhando com dados externos 6 Insira o código a seguir no painel Actions: var dateVars = new LoadVars(); dateVars.onLoad = function(ok) { if (ok) { date_txt.text = dateVars.day+"/"+dateVars.month+"/"+dateVars.year; } }; dateVars.load("data.txt"); Esse código carrega as variáveis de data.txt (day, month, year) e, em seguida, formata-as e exibe-as no campo de texto date_txt. 7 Salve o documento como dateReader.fla na mesma pasta que contém data.txt (o arquivo de texto que você salvou na etapa 3). 8 Selecione Control (Controlar) > Test Movie (Testar filme) para testar o documento. Para obter mais informações, consulte a entrada Classe LoadVars em Capítulo 12, “Dicionário do ActionScript”, na página 215. Sobre XML O XML (Extensible Markup Language) está se tornando o padrão para o intercâmbio de dados estruturados em aplicativos de Internet. É possível integrar dados no Flash com servidores que usam a tecnologia XML para criar aplicativos sofisticados, como sistemas de bate-papo ou de corretagem. No XML, assim como no HTML, use marcas para marcar ou especificar um corpo de texto. No HTML, use as marcas predefinidas para indicar como o texto deve aparecer no navegador da Web (por exemplo, a marca <b> indica que o texto deve estar em negrito). No XML, defina as marcas que identificam o tipo dos dados (por exemplo, >password<VerySecret</password>). O XML separa a estrutura das informações da forma como elas são exibidas, de modo que o mesmo documento XML possa ser usado e reutilizado em ambientes diferentes. Toda marca XML é chamada de nó ou elemento. Cada nó possui um tipo (1, que indica um elemento XML, ou 3, que indica um nó de texto), e os elementos também podem ter atributos. Um nó aninhado em outro nó é denominado childNode. Essa estrutura de árvore hierárquica de nós é denominada DOM XML, semelhante ao DOM JavaScript, que é a estrutura de elementos de um navegador da Web. No exemplo a seguir, <PORTFOLIO> é o nó pai; ele não possui atributo algum e contém o nó filho <HOLDING>, que possui os atributos SYMBOL, QTY, PRICE e VALUE: <PORTFOLIO> <HOLDING SYMBOL="RICH" QTY="75" PRICE="245.50" VALUE="18412.50" /> </PORTFOLIO> Enviando e carregando variáveis para/de uma origem remota 187 Usando a classe XML Os métodos da classe ActionScript XML (por exemplo, appendChild(), removeNode() e permitem estruturar os dados XML no Flash para enviá-los a um servidor e para manipular e interpretar os dados XML descarregados. insertBefore()) Os métodos da classe XML a seguir enviam e carregam dados XML em um servidor usando o método POST HTTP: • • • faz o download do XML de um URL e coloca-o em um objeto ActionScript XML. envia um objeto XML para um URL. Todas as informações retornadas são enviadas para outra janela do navegador. sendAndLoad() envia um objeto XML para um URL. Todas as informações retornadas são colocadas em um objeto ActionScript XML. load() send() Por exemplo, é possível criar um sistema de corretagem para a venda de títulos que armazene todas as informações (nomes de usuários, senhas, identificações de sessões, títulos em carteira e informações sobre transações) em um banco de dados. O script do servidor que transfere as informações entre o Flash e o banco de dados lê e grava os dados no formato XML. O ActionScript pode ser usado para converter as informações obtidas no SWF (por exemplo, um nome de usuário e uma senha) em um objeto XML e enviar os dados para o script do servidor como um documento XML. Você também pode usar o ActionScript para carregar o documento XML retornado pelo servidor em um objeto XML para ser usado no SWF. loginReplyXM L Documento XML Resposta loginXML Documento XML Solicitação SQL Script do servidor username Jean Smith password Submit Banco de dados Filme do Flash Player O fluxo e a conversão de dados entre um filme do Flash, um script do servidor e um banco de dados A validação da senha no sistema de corretagem requer dois scripts: uma função definida no Frame 1 e um script que cria e envia os objeto XML anexados ao botão Submit (Enviar) no formulário. Quando os usuários inserem suas informações nos campos de texto do SWF com as variáveis username e password, essas variáveis devem ser convertidas em XML antes de serem enviadas ao servidor. A primeira seção do script carrega as variáveis em um objeto XML criado recentemente chamado loginXML. Quando o usuário clica no botão Submit, o objeto loginXML é convertido em uma seqüência de caracteres do XML e enviado para o servidor. 188 Capítulo 10: Trabalhando com dados externos O script a seguir é anexado ao botão Submit. Para compreender esse script, leia as linhas comentadas (indicadas pelos caracteres //): on (release) { // A. Cria um documento XML com um elemento LOGIN loginXML = new XML(); loginElement = loginXML.createElement("LOGIN"); loginElement.attributes.username = username; loginElement.attributes.password = password; loginXML.appendChild(loginElement); // B. Cria um objeto XML para armazenar a resposta do servidor loginReplyXML = new XML(); loginReplyXML.onLoad = onLoginReply; // C. Envia o elemento LOGIN para o servidor, // coloca a resposta em loginReplyXML loginXML.sendAndLoad("https://www.imexstocks.com/main.cgi", loginReplyXML); } A primeira seção do script gera o seguinte XML quando o usuário clica no botão Submit: <LOGIN USERNAME="JeanSmith" PASSWORD="VerySecret" /> O servidor recebe o XML, gera uma resposta XML e envia-a novamente ao SWF. Se a senha for aceita, o servidor responderá da seguinte maneira: <LOGINREPLY STATUS="OK" SESSION="rnr6f7vkj2oe14m7jkkycilb" /> Esse XML inclui um atributo SESSION que contém a identificação de uma sessão exclusiva, gerada aleatoriamente, que será usada em todas as comunicações entre o cliente e o servidor no restante da sessão. Se a senha for rejeitada, o servidor responderá com a seguinte mensagem: <LOGINREPLY STATUS="FAILED" /> O nó XML LOGINREPLY deve ser carregado em um objeto XML em branco no SWF. O comando a seguir cria o objeto XML loginreplyXML para receber o nó XML: // B. Cria um objeto XML para armazenar a resposta do servidor loginReplyXML = new XML(); loginReplyXML.onLoad = onLoginReply; O segundo comando atribui a função onLoginReply() ao manipulador loginReplyXML.onLoad. Enviando e carregando variáveis para/de uma origem remota 189 O elemento XML LOGINREPLY chega de modo assíncrono, de maneira semelhante aos dados de uma função loadVariables() e é carregado no objeto loginReplyXML. Quando os dados chegam, o manipulador onLoad do objeto loginReplyXML é chamado. Você deve definir a função onLoginReply() e atribuí-la ao manipulador loginReplyXML.onLoad para que processe o elemento LOGINREPLY. Além disso, deve atribuir a função onLoginReply() ao quadro que contém o botão Submit. A função onLoginReply() é definida no primeiro quadro do SWF. (Para compreender esse script, leia as linhas comentadas.) function onLoginReply() { // Obtém o primeiro elemento XML var e = this.firstChild; // Se o primeiro elemento XML for um elemento LOGINREPLY com // status OK, vai para a tela do portfólio. Caso contrário, // vai para a tela de falha de login e permite que o usuário tente novamente. if (e.nodeName == "LOGINREPLY" && e.attributes.status == "OK") { // Salva a identificação de sessão para comunicação futura com o servidor sessionID = e.attributes.session; // Vai para a tela de exibição do portfólio gotoAndStop("portfolioView"); else { // Falha no login! Vai para a tela de falha de login. gotoAndStop("loginFailed"); } } A primeira linha dessa função, var e = this.firstChild, usa a palavra-chave this para se referir ao objeto XML loginReplyXML que acabou de ser carregado com o XML do servidor. É possível usar this porque onLoginReply() foi chamada como loginReplyXML.onLoad; portanto, embora onLoginReply() seja aparentemente uma função simples, ela se comporta realmente como um método de loginReplyXML. 190 Capítulo 10: Trabalhando com dados externos Para enviar o nome do usuário e a senha como XML para o servidor e carregar uma resposta XML novamente no SWF, use o método sendAndLoad(), conforme mostrado a seguir: // C. Envia o elemento LOGIN para o servidor, // coloca a resposta em loginReplyXML loginXML.sendAndLoad("https://www.imexstocks.com/main.cgi", loginReplyXML); Observação: Esse design é apenas um exemplo, e a Macromedia não oferece garantia alguma quanto ao nível de segurança proporcionado. Se você estiver implementando um sistema seguro protegido por senha, deverá ter um bom conhecimento de segurança de rede. Para obter mais informações, consulte “Integrating XML and Flash in a Web Application” (Integrando XML e o Flash em um aplicativo da Web) em www.macromedia.com/support/flash/ interactivity/xml/ e a Classe XML entrada em Capítulo 12, “Dicionário do ActionScript”, na página 215. Usando a classe XMLSocket O ActionScript oferece uma classe XMLSocket interna que permite a abertura de uma conexão contínua com um servidor. Uma conexão de soquete permite que o servidor publique (ou "envie") informações ao cliente assim que elas estiverem disponíveis. Sem uma conexão contínua, o servidor deve aguardar uma solicitação HTTP. Essa conexão aberta elimina os problemas de latência e é normalmente usada para aplicativos em tempo real, como aplicativos de bate-papo. Os dados são enviados através da conexão de soquete como uma seqüência de caracteres e devem estar no formato XML. Você pode usar a classe XML para estruturar os dados. Para criar uma conexão de soquete, é necessário criar um aplicativo do servidor para aguardar a solicitação dessa conexão e enviar uma resposta ao arquivo SWF. É possível criar esse tipo de aplicativo de servidor em uma linguagem de programação, como Java. Você pode usar os métodos connect() e send() da classe XMLSocket para transferir XML para/ de um servidor através de uma conexão de soquete. O método connect() estabelece uma conexão de soquete com uma porta do servidor da Web. O método send() envia um objeto XML para o servidor especificado na conexão de soquete. Quando você chama o método connect(), o Flash Player abre uma conexão TCP/IP com o servidor e mantém a conexão aberta até que ocorra uma das seguintes situações: • • • • O método close() da classe XMLSocket é chamado. Não existe mais nenhuma referência ao objeto XMLSocket. O Flash Player é encerrado. A conexão é interrompida (por exemplo, o modem é desconectado). Enviando e carregando variáveis para/de uma origem remota 191 O exemplo a seguir cria uma conexão de soquete XML e envia os dados do objeto XML myXML. Para compreender o script, leia as linhas comentadas (indicadas pelos caracteres //): // Cria um novo objeto XMLSocket sock = new XMLSocket(); // Chama o seu método connect() para estabelecer uma conexão com a porta 1024 // do servidor no URL sock.connect("http://www.myserver.com", 1024); // Define uma função para atribuir o objeto de soquete que manipula a // resposta do servidor. Se a conexão for bem sucedida, envia o // objeto myXML. Se falhar, fornece uma mensagem de erro em um campo // de texto. function onSockConnect(success){ if (success) { sock.send(myXML); else { msg="Erro ao conectar ao "+serverName; } } // Atribui a função onSockConnect() à propriedade onConnect sock.onConnect = onSockConnect; Para obter mais informações, consulte a entrada Classe XMLSocket em Capítulo 12, “Dicionário do ActionScript”, na página 215. Enviando mensagens para/do Flash Player Para enviar mensagens de um arquivo SWF para o seu ambiente de host (por exemplo, um navegador da Web, um filme do Macromedia Director ou o Flash Player independente), use a função fscommand(). Essa função permite estender o seu SWF usando os recursos do host. Por exemplo, você pode enviar uma função fscommand() para uma função JavaScript em uma página HTML que abra uma nova janela do navegador com propriedades específicas. Para controlar um SWF do Flash Player a partir de linguagens de script do navegador da Web, como JavaScript, VBScript e Microsoft JScript, você pode usar os métodos do Flash Player, funções que enviam mensagens de um ambiente de host para o SWF. Por exemplo, você pode ter um link em uma página HTML que envie o SWF para um quadro específico. 192 Capítulo 10: Trabalhando com dados externos Usando fscommand() Use a função fscommand() para enviar uma mensagem para qualquer programa que esteja hospedando o Flash Player. A função fscommand() tem dois parâmetros: command e arguments. Para enviar uma mensagem para a versão independente do Flash Player, use comandos e argumentos predefinidos. Por exemplo, a ação a seguir define o exibidor independente para dimensionar o SWF para o tamanho de tela cheia quando o usuário solta o botão: on (release) { fscommand("fullscreen", "true"); } A tabela a seguir mostra os valores que podem ser especificados para os parâmetros command e arguments da função fscommand() para controlar um SWF reproduzido no exibidor independente (incluindo projetores): Command Arguments Objetivo quit Nenhum Fecha o projetor. fullscreen true ou false A especificação de true define o Flash Player no modo de tela cheia. A especificação de false retorna o exibidor para a exibição normal de menu. allowscale true ou false A especificação de false define o exibidor para que o SWF seja sempre desenhado em seu tamanho original e nunca dimensionado. A especificação de true faz com que o SWF seja dimensionado para 100% do exibidor. showmenu true ou false A especificação de true ativa o conjunto completo de itens do menu de contexto. A especificação de false torna esmaecidos todos os itens do menu de contexto, exceto Settings (Configurações) e About Flash Player (Sobre o Flash Player). exec Caminho para o Executa um aplicativo no projetor. aplicativo Para usar fscommand() para enviar uma mensagem para uma linguagem de script como JavaScript em um navegador da Web, passe dois parâmetros quaisquer em command e arguments. Esses parâmetros podem ser seqüências de caracteres ou expressões e serão usados em uma função JavaScript que “captura” ou manipula a função fscommand(). Uma função fscommand() chama a função JavaScript moviename_DoFSCommand na página HTML que incorpora o SWF, onde moviename é o nome do Flash Player atribuído pelo atributo NAME da marca EMBED ou pelo atributo ID da marca OBJECT. Se o nome atribuído ao Flash Player for myMovie, a função JavaScript chamada será myMovie_DoFSCommand. Enviando mensagens para/do Flash Player 193 Para usar fscommand() para abrir uma caixa de mensagem em um SWF na página HTML através de JavaScript: 1 Na página HTML que incorpora o SWF, adicione o seguinte código JavaScript: function theMovie_DoFSCommand(command, args) { if (command == "messagebox") { alert(args); } } Na publicação do SWF usando o Flash com o modelo FSCommand na caixa de diálogo HTML Publish Settings (Configurações de publicação HTML), esse código será inserido automaticamente. Os atributos NAME e ID do SWF serão o nome do arquivo. Por exemplo, para o arquivo myMovie.fla, os atributos serão definidos como myMovie. (Para obter mais informações sobre publicação, consulte “Publishing” (Publicando) em Usando a Ajuda do Flash.) Como alternativa, nos aplicativos do Microsoft Internet Explorer, é possível anexar um manipulador de eventos na marca <SCRIPT>, como mostrado neste exemplo: <Script Language = "JavaScript" event="FSCommand (comando, args)" for= "theMovie"> ... </Script> 2 No documento do Flash, adicione a função fscommand() a um botão, como mostrado neste exemplo: on(press){ fscommand("messagebox", "Esta é uma caixa de mensagem chamada no Flash."); } Além disso, é possível usar expressões para fscommand() e parâmetros, como no exemplo a seguir: fscommand("messagebox", "Olá, " + nome + ", bem-vindo(a) ao nosso site na Web!") 3 Escolha File (Arquivo) > Publish Preview (Visualizar publicação) > HTML para testar o documento. A função fscommand() pode enviar mensagens ao Macromedia Director que são interpretadas pelo Lingo como seqüências de caracteres, eventos ou código Lingo executável. Se a mensagem for uma seqüência de caracteres ou um evento, você deverá criar o código Lingo para recebê-la a partir da ação fscommand() e executar uma ação no Director. Para obter mais informações, consulte o Director Support Center em www.macromedia.com/support/director. No Visual Basic, Visual C++ e em outros programas que podem hospedar controles ActiveX, fscommand() envia um evento VB com duas seqüências de caracteres que podem ser manipuladas na linguagem de programação do ambiente. Para obter mais informações, use as palavras-chaves método do Flash e faça uma pesquisa no Centro de Suporte Flash em www.macromedia.com/ support/flash. 194 Capítulo 10: Trabalhando com dados externos Sobre os métodos do Flash Player Você pode usar os métodos do Flash Player para controlar um arquivo SWF no Flash Player a partir de linguagens de script de navegador da Web, como JavaScript e VBScript. Como ocorre em outros métodos, é possível usar os métodos do Flash Player para enviar chamadas aos arquivos SWF do Flash a partir de um ambiente de script diferente do ActionScript. Cada método possui um nome, e a maioria dos métodos contém parâmetros. Um parâmetro especifica o valor com que o método opera. O cálculo executado por alguns métodos retorna um valor que pode ser usado pelo ambiente de script. Há duas tecnologias distintas que permitem a comunicação entre o navegador e o Flash Player: LiveConnect (Netscape Navigator 3.0 ou posterior no Windows 95/98/2000/NT ou Power Macintosh) e ActiveX (Internet Explorer 3.0 e posterior no Windows 95/98/2000/NT). Embora as técnicas de script sejam semelhantes para todos os navegadores e linguagens, há propriedades e eventos adicionais disponíveis para uso com os controles ActiveX. Para obter mais informações, incluindo uma lista completa dos métodos de script do Flash Player, use as palavras-chaves método do Flash para pesquisar o Centro de Suporte Flash em www.macromedia.com/support/flash. Sobre o uso de métodos do Flash JavaScript com o Flash Player O Flash Player 6 versão 40 e posteriores oferece suporte aos métodos do Flash JavaScript e ao FSCommand no Netscape 6.2 e versões posteriores. As versões anteriores não oferecem suporte aos métodos do Flash JavaScript e ao FSCommand no Netscape 6.2 ou versões posteriores. Para o Netscape 6.2 e versões posteriores, não é necessário definir swLiveConnect como true. Entretanto, a definição de swLiveConnect como true não tem efeitos adversos. Recursos de segurança do Flash Player Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na guia Help (Ajuda). Por padrão, o Flash Player 7 e versões posteriores impedem que um arquivo SWF de um domínio acesse os dados fornecidos por outro domínio. Por padrão, os SWFs pertencentes a domínios distintos não podem acessar os objeto e variáveis uns dos outros. Nem um SWF pertencente a um domínio pode carregar dados de outro domínio (usando loadVariables(), por exemplo). Endereços IP numéricos idênticos são compatíveis. Contudo, o nome de domínio não é compatível com o endereço IP, mesmo que o nome do domínio corresponda ao mesmo endereço IP. A tabela a seguir mostra exemplos de domínios compatíveis: www.macromedia.com www.macromedia.com data.macromedia.com data.macromedia.com 65.57.83.12 65.57.83.12 A tabela a seguir mostra exemplos de domínios incompatíveis: www.macromedia.com data.macromedia.com macromedia.com www.macromedia.com Recursos de segurança do Flash Player 195 www.macromedia.com macromedia.com 65.57.83.12 www.macromedia.com (mesmo que esse domínio corresponda a 65.57.83.12 ) www.macromedia.com 65.57.83.12 (mesmo que www.macromedia.com corresponda a esse IP) Além disso, o conteúdo que é carregado através de protocolos não protegidos (não-HTTPS) não pode acessar conteúdos protegidos (HTTPS), mesmo que os dois estejam exatamente no mesmo domínio. Por exemplo, um arquivo SWF localizado em http://www.macromedia.com/main.swf não pode carregar dados de https://www.macromedia.com/data.txt. Para obter informações sobre como essas alterações de segurança afetam o conteúdo criado no Flash MX e versões anteriores, consulte “Sobre compatibilidade com os modelos de segurança anteriores do Flash Player” na página 199. O gráfico a seguir mostra como o Flash Player determina se deve permitir uma solicitação HTTP: Não ESTÁGIO 1 É uma solicitação de dados? ESTÁGIO 1 Sim Sim ESTÁGIO 2 É uma solicitação para um URL relativo? ESTÁGIO 2 Não Sim ESTÁGIO 3 O filme solicitado foi descarregado de um disco local?(O URL começa com o arquivo:) ESTÁGIO 3 Não Não ESTÁGIO 4 O URL solicitado começa com http://, https:// ouftp://? ESTÁGIO 5 O nome de domínio do filme solicitado corresponde ao do URL solicitado? 196 ESTÁGIO 4 Sim Solicitação aceita Sim Capítulo 10: Trabalhando com dados externos Não ESTÁGIO 5 Solicitação rejeitada Sobre a permissão de acesso a dados entre SWFs de domínios diferentes Um SWF pode carregar outro SWF de qualquer local da Internet. Contudo, para que dois arquivos SWF possam acessar os dados correspondentes (variáveis e objeto), os dois arquivos devem ser provenientes do mesmo domínio. Por padrão, no Flash Player 7 e versões posteriores, os dois domínios devem ser exatamente iguais para que os dois arquivos possam compartilhar os dados. Entretanto, um SWF pode conceder acesso a SWFs atendidos por determinados domínios através de System.security.allowDomain(). Por exemplo, suponha que o arquivo main.swf seja atendido por www.macromedia.com. Em seguida, esse SWF carrega outro SWF (data.swf ) de data.macromedia.com em uma instância de clipe de filme (target_mc). // Em macromedia.swf target_mc.loadMovie("http://data.macromedia.com/data.swf"); Além disso, suponha que data.swf defina um método denominado getData() em sua Timeline principal. Por padrão, main.swf não pode chamar o método getData() definido em data.swf depois que esse arquivo tiver sido carregado. Isso ocorre porque os dois SWFs não residem no mesmo domínio. Por exemplo, ocorrerá uma falha na chamada de método a seguir em main.swf, caso data.swf tenha sido carregado. // Em macromedia.swf, após o carregamento de data.swf: target_mc.getData(); // Essa chamada de método falhará Entretanto, data.swf poderá conceder acesso aos SWFs atendidos por www.macromedia.com através do método System.security.allowDomain(). O código a seguir adicionado a data.swf permitirá que qualquer SWF atendido por www.macromedia.com acesse suas variáveis e métodos: // No data.swf System.security.allowDomain("www.macromedia.com"); Observe que allowDomain() permite que qualquer SWF do domínio autorizado crie um script para qualquer outro SWF do domínio permitindo o acesso. Para obter mais informações, consulte “Recursos de segurança do Flash Player” na página 195 e System.security.allowDomain() na página 735. Sobre a autorização de acesso a dados entre domínios Um documento do Flash pode carregar dados de uma origem externa usando uma das seguintes chamadas de carregamento de dados: XML.load(), XML.sendAndLoad(), LoadVars.load(), LoadVars.sendAndLoad(), loadVariables(), loadVariablesNum(). Além disso, um arquivo SWF pode importar bibliotecas compartilhadas ou elementos definidos em outro arquivo SWF durante a execução. Por padrão, os dados ou a mídia do SWF, no caso de bibliotecas compartilhadas durante a execução, devem residir no mesmo domínio do SWF que está carregando esses dados ou mídia externos. Para tornar os dados e elementos das bibliotecas compartilhadas em tempo de execução disponíveis aos SWFs em diferentes domínios, use um arquivo de diretivas entre domínios. Um arquivo de diretivas entre domínios é um arquivo XML que fornece um modo ao servidor para indicar que seus dados e documentos estão disponíveis aos SWFs atendidos por determinados domínios ou por todos os domínios. Todos os SWFs que são atendidos por um domínio especificado pelo arquivo de diretivas do servidor terão permissão para acessar os dados ou elementos daquele servidor. Recursos de segurança do Flash Player 197 Quando um documento do Flash tenta acessar os dados de outro domínio, o Flash Player tenta automaticamente carregar um arquivo de diretivas daquele domínio. Se o domínio do documento do Flash que está tentando acessar os dados estiver incluído no arquivo de diretivas, os dados ficarão automaticamente acessíveis. Os arquivos de diretivas devem ser nomeados como crossdomain.xml e residir no diretório raiz do servidor que está fornecendo os dados. Os arquivos de diretivas funcionam somente nos servidores que se comunicam através de HTTP, HTTPS ou FTP. O arquivo de diretivas é específico da porta e do protocolo do servidor onde ele reside. Por exemplo, um arquivo de diretivas localizado em https://www.macromedia.com:8080/ crossdomain.xml se aplicará somente às chamadas de carregamento de dados feitas a www.macromedia.com através do HTTPS na porta 8080. Uma exceção a essa regra é o uso de um objeto XMLSocket para conectar a um servidor de soquete em outro domínio. Nesse caso, um servidor HTTP executado na porta 80 do mesmo domínio que o servidor de soquete deve fornecer o arquivo de diretivas para a chamada do método. Um arquivo de diretivas XML contém uma única marca <cross-domain-policy>, a qual, por sua vez, contém zero ou mais marcas <allow-access-from>. Cada marca <allow-accessfrom> contém um atributo, domain, que especifica um endereço IP exato, um domínio exato ou um domínio curinga (qualquer domínio). Os domínios curingas são indicados por um asterisco (*), que corresponde a todos os domínios e todos os endereços IP, ou por um asterisco seguido de um sufixo, que corresponde apenas aos domínios terminados com o sufixo especificado. Os sufixos devem ser iniciados com um ponto. Entretanto os domínios curingas com sufixos podem corresponder a domínios compostos somente pelo sufixo, sem o ponto inicial. Por exemplo, foo.com é considerado como parte de *.foo.com. Os curingas não são permitidos nas especificações de domínios IP. Se você especificar um endereço IP, será concedido acesso somente aos SWFs carregados a partir daquele endereço IP por meio da sintaxe IP (por exemplo, http://65.57.83.12/flashmovie.swf ), e não para os carregados utilizando a sintaxe de nome de domínio. O Flash Player não executa a resolução de DNS. A seguir é fornecido um exemplo de arquivo de diretivas que permite acesso aos documentos do Flash provenientes de foo.com, friendOfFoo.com, *.foo.com e 105.216.0.40, a partir de um documento do Flash em foo.com: <?xml version="1.0" ?> <!-- http://www.foo.com/crossdomain.xml --> <cross-domain-policy> <allow-access-from domain="www.friendOfFoo.com" /> <allow-access-from domain="*.foo.com" /> <allow-access-from domain="105.216.0.40" /> <cross-domain-policy> Um arquivo de diretivas que não contenha marcas <allow-access-from> tem o mesmo efeito de não haver uma diretiva no servidor. 198 Capítulo 10: Trabalhando com dados externos Sobre compatibilidade com os modelos de segurança anteriores do Flash Player Em conseqüência das alterações no recurso de segurança do Flash Player (consulte “Recursos de segurança do Flash Player” na página 195), o conteúdo que é executado corretamente no Flash Player 6 ou nas versões anteriores pode não ser executado corretamente no Flash Player 7 ou versões posteriores. Por exemplo, no Flash Player 6, um SWF em www.macromedia.com podia acessar os dados de um servidor localizado em data.macromedia.com. Ou seja, o Flash Player 6 permitia que um SWF de um domínio carregasse dados de um domínio “semelhante”. No Flash Player 7 e versões posteriores, se um SWF da versão 6 (ou anterior) tentar carregar dados de um servidor em outro domínio, e esse servidor não fornecer um arquivo de diretivas que permita acesso a partir do domínio daquele SWF, será exibida a caixa de diálogo Macromedia Flash Player Settings (Configurações do Macromedia Flash Player). A caixa de diálogo solicita que o usuário autorize ou negue o acesso aos dados entre domínios. Se o usuário clicar em Allow (Autorizar), o SWF terá permissão de acesso aos dados solicitados; se o usuário clicar em Deny (Negar), o SWF não terá permissão para acessar os dados solicitados. Para evitar que essa caixa de diálogo seja exibida, crie um arquivo de diretivas de segurança no servidor que está fornecendo os dados. Para obter mais informações, consulte “Sobre a autorização de acesso a dados entre domínios” na página 197. Recursos de segurança do Flash Player 199 200 Capítulo 10: Trabalhando com dados externos CAPÍTULO 11 Trabalhando com mídia externa Se você importar uma imagem ou um som durante a criação de um documento no Macromedia Flash MX 2004 ou no Macromedia Flash MX Professional 2004, a imagem e o som serão empacotados e armazenados no arquivo SWF na publicação do filme. Além de importar mídia durante a criação, é possível carregar mídia externa durante a execução. Há diversos motivos para manter a mídia fora de um documento do Flash. Reduzir o tamanho do arquivo Ao manter os grandes arquivos de mídia fora do documento do Flash e carregá-los durante a execução, você pode reduzir o tempo de download inicial dos aplicativos e apresentações, principalmente em conexões lentas da Internet. Criar módulos de apresentações grandes Você pode dividir uma apresentação ou um aplicativo grande em vários arquivos SWF e depois carregar esses arquivos conforme necessário durante a execução. Isso não somente reduz o tempo de download inicial, como também facilita a manutenção e a atualização do conteúdo da apresentação. Separar o conteúdo da apresentação Este é um tema comum no desenvolvimento de aplicativos, principalmente aplicativos orientados a dados. Por exemplo, um aplicativo de carrinho de compras pode exibir uma imagem JPEG de cada produto. Ao carregar os JPEGs de cada imagem em tempo de execução, você pode atualizar facilmente a imagem de um produto sem modificar o arquivo FLA original. Aproveitar os recursos específicos de tempo de execução Alguns recursos, como fluxo de FLV e reprodução de MP3, só estão disponíveis durante a execução através do ActionScript. 201 Visão geral de carregamento de mídia externa Existem quatro tipos de arquivos de mídia que podem ser carregados em um aplicativo Flash durante a execução: SWF, MP3, JPEG e FLV. O Flash Player pode carregar mídia externa de qualquer endereço HTTP ou FTP, de um disco local usando um caminho relativo ou por meio do protocolo file://. Para carregar SWFs e JPEGs externos, você pode usar a função loadMovie() ou loadMovieNum(), ou o método MovieClip.loadMovie(). Ao carregar um SWF ou JPEG, especifique um clipe de filme ou nível de filme como o destino para aquela mídia. Para obter mais informações sobre como carregar arquivos SWF e JPEG, consulte “Carregando SWFs e JPEGs externos” na página 202. Para reproduzir um arquivo MP3 externo (MPEG Layer 3), use o método loadSound() da classe Sound. Esse método permite especificar se o fluxo ou o download do arquivo MP3 deve ser totalmente concluído antes de ser iniciada a reprodução. Também é possível ler as informações de ID3 incorporadas nos arquivos MP3, se estiverem disponíveis. Para obter mais informações, consulte “Lendo marcas de ID3 em arquivos MP3” na página 205. O Flash Video (FLV) é o formato de vídeo nativo usado pelo Flash Player. É possível reproduzir arquivos FLV através do HTTP ou do sistema local de arquivos. A reprodução de arquivos FLV oferece diversas vantagens em relação à incorporação de vídeo em um documento do Flash, como melhor gerenciamento de desempenho e memória, além de taxas de quadros de vídeo e do Flash independentes. Para obter mais informações, consulte “Reproduzindo arquivos FLV externos dinamicamente” na página 206. Você também pode pré-carregar ou acompanhar o andamento do download da mídia externa. O Flash Player 7 apresenta a classe MovieClipLoader, que pode ser usada para acompanhar o andamento do download de SWFs ou JPEGs. Para pré-carregar arquivos MP3 e FLV, use o método getBytesLoaded() das classes Sound e NetStream. Para obter mais informações, consulte “Pré-carregando mídia externa” na página 208. Carregando SWFs e JPEGs externos Para carregar um arquivo SWF ou JPEG, use a função global loadMovie() ou loadMovieNum(), ou o método loadMovie() da classe MovieClip. Para carregar um SWF ou JPEG em um nível de filme no Flash Player, use loadMovieNum(). Para carregar um SWF ou JPEG em um clique de filme de destino, use a função ou o método loadMovie(). Em qualquer um dos casos, o conteúdo carregado substitui o conteúdo do nível de filme ou do clipe de filme de destino. Quando você carrega um arquivo SWF ou JPEG em um clipe de filme de destino, o canto superior esquerdo do SWF ou JPEG é colocado no ponto de registro do clipe de filme. Como geralmente esse ponto de registro é o centro do clipe de filme, o conteúdo carregado pode não aparecer centralizado. Além disso, quando você carrega uma imagem de SWF ou JPEG em uma Timeline (Linha de tempo) raiz, o canto superior esquerdo da imagem é colocado no canto superior esquerdo do Stage (Palco). O conteúdo carregado herda a rotação e o dimensionamento do clipe de filme, mas o conteúdo original do clipe do filme é removido. Como opção, você pode enviar variáveis do ActionScript com uma chamada loadMovie() ou Isso será útil, por exemplo, se o URL que está sendo especificado na chamada do método for um script do servidor que retorna um JPEG ou SWF de acordo com os dados passados pelo aplicativo do Flash. loadMovieNum(). 202 Capítulo 11: Trabalhando com mídia externa No caso dos arquivos de imagem, o Flash oferece suporte apenas para o tipo de arquivo de imagem JPEG padrão, e não para JPEG progressivos. Ao usar a função loadMovie() ou loadMovieNum(), especifique o nível ou clipe de destino como um parâmetro. Por exemplo, o código a seguir carrega o aplicativo contents.swf do Flash na instância do clipe de filme denominada target_mc: loadMovieNum("contents.swf", target_mc); Do mesmo modo, você pode usar MovieClip.loadMovie() para obter o mesmo resultado: target_mc.loadMovie("contents.swf"); O código a seguir carrega a imagem JPEG flowers.jpg na instância do clipe de filme image_clip: image_clip.loadMovie("flowers.jpg"); Para obter mais informações sobre loadMovie(), loadMovieNum() e MovieClip.loadMovie(), consulte as entradas correspondentes em Capítulo 12, “Dicionário do ActionScript”, na página 215. Sobre SWFs carregados e a Timeline raiz A propriedade ActionScript _root especifica ou retorna uma referência à Timeline raiz de um arquivo SWF. Se você carregar um SWF em um clipe de filme de outro SWF, todas as referências a _root no SWF carregado serão resolvidas para a Timeline do SWF host, e não do SWF carregado. Isso às vezes pode ocasionar um comportamento não esperado durante a execução como, por exemplo, se o SWF host e o SWF carregado usarem _root para especificar uma variável. No Flash Player 7 e posterior, é possível usar a propriedade MovieClip._lockroot para fazer com que as referências a _root feitas por um clipe de filme sejam resolvidas para sua própria Timeline, em vez de para a Timeline do SWF que contém o clipe de filme. Para obter mais informações, consulte “Especificando uma Timeline raiz para arquivos SWF carregados” na página 122. Sobre o acesso a dados em SWFs carregados Um arquivo SWF pode carregar outro arquivo SWF de qualquer local da Internet. Entretanto, para que um SWF acesse os dados (variáveis, métodos etc.) definidos no outro SWF, os dois arquivos devem ter o mesmo domínio como origem. No Flash Player 7 e posterior, os scripts entre domínios são proibidos, a menos que o SWF carregado especifique de outra forma chamando System.security.allowDomain(). Para obter mais informações, consulte “Recursos de segurança do Flash Player” na página 195 e System.security.allowDomain() em Capítulo 12, “Dicionário do ActionScript”, na página 215. Carregando SWFs e JPEGs externos 203 Carregando arquivos MP3 externos Para carregar arquivos MP3 durante a execução, use o método loadSound() da classe Sound. Em primeiro lugar, crie um novo objeto Sound: var song_1_sound = new Sound(); Em seguida, use o novo objeto para chamar loadSound() e carregar um evento ou um fluxo de som. Os sons de evento são totalmente carregados antes da reprodução; os fluxos de som são reproduzidos durante o download. Defina o parâmetro isStreaming de loadSound para especificar um som como um som de evento ou um fluxo de som. Depois de carregar um som de evento, chame o método start() da classe Sound para reproduzir o som. Os fluxos de som começam a ser reproduzidos quando há dados suficientes carregados no SWF; não é necessário usar start(). Por exemplo, o código a seguir cria um novo objeto Sound denominado classical e, em seguida, carrega um arquivo MP3 de nome beethoven.mp3: var classical:Sound = new Sound(); classical.loadSound("http://server.com/mp3s/beethoven.mp3", true); Na maioria dos casos, defina o parâmetro isStreaming como true, principalmente se estiver carregando arquivos de sons grandes que devem iniciar a reprodução assim que for possível, por exemplo, ao criar um aplicativo “jukebox” MP3. Contudo, se estiver fazendo download de clipes de som menores e precisar reproduzi-los em um determinado momento (por exemplo, quando o usuário clica em um botão), defina isStreaming como false. Para determinar se o download de um som foi concluído, use o manipulador de eventos Sound.onLoad. Esse manipulador de eventos recebe automaticamente um valor Booleano (true ou false) que indica se o download do arquivo foi concluído com sucesso. Por exemplo, suponha que você esteja criando um jogo on-line que utilize diferentes sons dependendo do nível que o usuário alcançou no jogo. O código a seguir carrega um arquivo MP3 (blastoff.mp3) em um objeto Sound denominado gameSound e, em seguida, reproduz o som quando o download tiver sido concluído: var gameSound = new Sound(); gameSound.onLoad = function (loadedOK) { if(loadedOK) { gameSound.start(); } } gameSound.loadSound("http://server.com/sounds/blastoff.mp3", false); Nos arquivos de som, o Flash Player só oferece suporte para os tipos de arquivo de som MP3. Para obter mais informações, consulte Sound.loadSound(), Sound.start() e Sound.onLoad em Capítulo 12, “Dicionário do ActionScript”, na página 215. 204 Capítulo 11: Trabalhando com mídia externa Lendo marcas de ID3 em arquivos MP3 As marcas de ID3 são campos de dados adicionados a um arquivo MP3 que contêm informações sobre o arquivo, como o nome da música, o nome do álbum e o nome do artista. Para ler as marcas de ID3 de um arquivo MP3, use a propriedade Sound.ID3 cujas propriedades correspondem aos nomes das marcas ID3 incluídas no arquivo MP3 que está sendo carregado. Para determinar quando as marcas de ID3 de um arquivo MP3 que está sendo carregado estarão disponíveis, use o manipulador de eventos Sound.onID3. O Flash Player 7 oferece suporte às marcas das versões 1.0, 1.1, 2.3 e 2.4; não é fornecido suporte para as marcas da versão 2.2. Por exemplo, o código a seguir carrega um arquivo MP3 denominado favoriteSong.mp3 no objeto Sound denominado song. Quando as marcas de ID3 do arquivo estiverem disponíveis, um campo de texto denominado display_txt exibirá o nome do artista e o nome da música. var song = new Sound(); song.onID3 = function () { display_txt.text = "Artist: " + song.id3.TCOM + newline; display_txt.text += "Song: " + song.id3.TIT2); } song.loadSound("mp3s/favoriteSong.mp3, true"); Como as marcas do ID3 2.0 se localizam no início do arquivo MP3 (antes dos dados de som), elas ficam disponíveis assim que o download do arquivo é iniciado. As marcas do ID3 1.0, entretanto, se localizam no final do arquivo (depois dos dados de som) e, conseqüentemente, só ficarão disponíveis quando o download de todo o arquivo MP3 tiver terminado. O Flash Player mapeia automaticamente um subconjunto das marcas do ID3 2.0 para as marcas do ID3 1.0 equivalentes do seguinte modo: Marca do ID3 2.0 Marca do ID3 1.0 TALB album TPE1 artist TIT2 songname TYER year TRCK track COMM comment TCON gênero Observe que o manipulador de eventos onID3 será chamado sempre que houver novos dados do ID3 disponíveis. Isso significa que se um arquivo MP3 contiver marcas do ID3 2.0 e marcas do ID3 1.0, o manipulador onID3 será chamado duas vezes, pois as marcas estarão localizadas em partes diferentes do arquivo. Para obter uma lista das marcas de ID3 suportadas, consulte Sound.ID3 em Capítulo 12, “Dicionário do ActionScript”, na página 215. Lendo marcas de ID3 em arquivos MP3 205 Reproduzindo arquivos FLV externos dinamicamente Como uma alternativa à importação de vídeos para o ambiente de criação do Flash, você pode usar o ActionScript para reproduzir dinamicamente arquivos FLV externos no Flash Player. Os arquivos FLV podem ser reproduzidos de um endereço HTTP ou do sistema local de arquivos. Para reproduzir arquivos FLV, use as classes NetConnection e NetStream, e o método attachVideo() da classe Video. Você pode criar arquivos FLV importando o vídeo para a ferramenta de criação do Flash e exportando-o como um arquivo FLV. Consulte “Macromedia Flash Video” em Usando a Ajuda do Flash. Se você tiver o Flash MX Professional 2004, poderá usar o plug-in FLV Export para exportar arquivos FLV dos aplicativos de edição de vídeo suportados. Consulte “Exporting FLV files from video-editing applications (Flash Professional only)” (Exportando arquivos FLV de aplicativos de edição de vídeo (somente Flash Professional)) em Usando a Ajuda do Flash. O uso de arquivos FLV externos oferece certos recursos que não estão disponíveis quando você usa vídeo importado: • É possível usar clipes de vídeo mais longos nos documentos do Flash sem diminuir a velocidade • • • de reprodução. Os arquivos FLV externos são reproduzidos usando a memória cache. Desse modo, os arquivos grandes são armazenados em pequenas partes e acessados de modo dinâmico, e não requerem tanta memória quanto os arquivos de vídeo incorporados. Um arquivo FLV externo tem uma taxa de quadros diferente do documento do Flash no qual é reproduzido. Por exemplo, você pode definir a taxa de quadros do documento do Flash como 30 qps e a taxa de quadros do vídeo como 21 qps. Isso proporciona um maior controle para garantir uma reprodução suave do vídeo. Com os arquivos FLV externos, a reprodução de documentos do Flash não precisa ser interrompida enquanto o arquivo de vídeo está sendo carregado. Os arquivos de vídeo importados às vezes podem interromper a reprodução do documento para executar determinadas funções; por exemplo, acessar uma unidade de CD-ROM. Os arquivos FLV podem executar funções independentemente do documento do Flash e, desse modo, não interrompem a reprodução. A legendagem do conteúdo do vídeo é mais fácil com arquivos FLV externos, pois é possível usar as funções de retorno para acessar os metadados do vídeo. Os métodos e propriedades a seguir das classes NetConnection e NetStream são usados para controlar a reprodução do FLV. (Para obter informações completas sobre essas classes, consulte as entradas Classe NetConnection e Classe NetStream em Capítulo 12, “Dicionário do ActionScript”, na página 215.) 206 Capítulo 11: Trabalhando com mídia externa Método ou propriedade Objetivo new NetConnection() Cria um novo objeto NetConnection para armazenar os objeto NetStream. NetConnection.connect(null) O valor null prepara o objeto NetConnection para esperar downloads de FLVs locais ou do HTTP em vez de fazer o download de um Macromedia Flash Communication Server. new NetStream() Cria um novo objeto NetStream. NetStream.close() Fecha o fluxo mas não limpa o objeto de vídeo. NetStream.pause() Interrompe a reprodução e limpa o buffer. Esse comando ativa e desativa a pausa a menos que seja passado true ou false. NetStream.seek() Busca um tempo específico no FLV. O tempo de busca é especificado em segundos. Por exemplo, para buscar 2 minutos e 20 segundos, especifique o seguinte : NetStream.seek(140); NetStream.setBufferTime() Define a quantidade de tempo no buffer, em segundos. NetStream.bufferLength Informa o tamanho atual do buffer. NetStream.bufferTime Informa o tamanho que foi definido para o buffer, e não o valor atual. NetStream.currentFps Informa o número atual de quadros por segundo. Essa informação é útil para determinar se os quadros estão sendo eliminados durante a reprodução. NetStream.time A posição atual da qual o FLV está sendo reproduzido, em segundos. NetStream.onStatus Manipulador de retorno chamado quando ocorre um erro ou uma alteração no status de NetStream. É passado um objeto ao manipulador que contém duas propriedades: status, cujo valor pode ser level ou error, e code, cujo valor pode ser um dos seguintes: • NetStream.Play.Start Começa a reprodução de um arquivo FLV. • NetStream.Play.Stop Termina a reprodução de um FLV. • NetStream.Buffer.Full O buffer está cheio. • NetStream.Buffer.Empty Os dados não estão sendo recebidos com rapidez suficiente para encher o buffer. Essa mensagem também é gerada em caso de pausa na reprodução. • NetStream.Play.StreamNotFound O FLV passado para o método play() não foi encontrado. Para usar NetStream.onStatus, adicione este código: _root.myNetStream.onStatus = function(infoObj){ // Este é um exemplo básico de um código de manipulador // que informa as duas propriedades do objeto de informação. trace(infoObj.code); trace(infoObj.level); } Reproduzindo arquivos FLV externos dinamicamente 207 Para reproduzir um arquivo FLV externo em um documento do Flash: 1 Com o documento aberto na ferramenta de criação do Flash, no painel Library (Biblioteca), 2 3 4 5 6 7 acessado a partir de Window (Janela) > Library, selecione New Video (Novo vídeo) no menu de opções da biblioteca para criar um objeto de vídeo. Arraste uma instância do objeto de vídeo do painel Library para o Stage. Com o objeto de vídeo selecionado no Stage, no inspetor Property (Propriedades), em Window > Properties, informe myVideo na caixa de texto Instance Name (Nome da instância). Abra o painel Components (Componentes), em Window > Development Panels (Painéis de desenvolvimento) > Components, e arraste o componente TextArea para o Stage. Com o objeto TextArea selecionado no Stage, insira status na caixa de texto Instance Name do inspetor Property. Selecione Frame 1 na Timeline e abra o painel Actions (Ações) em Window > Development Panels > Actions. Adicione o seguinte código ao painel Actions: // Cria um objeto NetConnection: var netConn:NetConnection = new NetConnection(); // Criar uma conexão de fluxo local: netConn.connect(null); // Cria um objeto NetStream e define uma função onStatus(): var netStream:NetStream = new NetStream(netConn); netStream.onStatus = function(infoObject) { status.text += "Status (NetStream)" + newline; status.text += "Level: "+infoObject.level + newline; status.text += "Code: "+infoObject.code + newline; }; // Anexa o vídeo NetStream ao objeto Video: myVideo.attachVideo(netStream); // Define o tempo do buffer: netStream.setBufferTime(5); // Reproduz o arquivo FLV: netStream.play("videoFile.flv"); Pré-carregando mídia externa O ActionScript oferece diversas formas de pré-carregar ou acompanhar o andamento do download de mídia externa. Para pré-carregar arquivos SWF e JPEG, use a classe MovieClipLoader, que fornece um mecanismo de ouvinte de eventos para verificar o andamento do download. Essa classe é nova no Flash Player 7. Para obter mais informações, consulte “Précarregando arquivos SWF e JPEG” na página 209. Para controlar o andamento do download de arquivos MP3, use os métodos Sound.getBytesLoaded() e Sound.getBytesTotal(); para controlar o andamento do download de arquivos FLV, use as propriedades NetStream.bytesLoaded e NetStream.bytesTotal. Para obter mais informações, consulte “Pré-carregando arquivos MP3 e FLV” na página 211. 208 Capítulo 11: Trabalhando com mídia externa Pré-carregando arquivos SWF e JPEG Para pré-carregar arquivos SWF e JPEG em instâncias de clipes de filmes, use a classe MovieClipLoader. Essa classe fornece um mecanismo de ouvinte de eventos para informar sobre o status dos downloads de arquivos em clipes de filmes. Para usar MovieClipLoader para précarregar SWFs e JPEGs, observe as etapas a seguir: Criar um novo objeto MovieClipLoader Você pode usar um único objeto MovieClipLoader para controlar o andamento do download de vários arquivos ou criar um objeto separado para o andamento de cada arquivo. var loader:MovieClipLoader = new MovieClipLoader(); O objeto ouvinte pode ser qualquer objeto do ActionScript, como um objeto genérico Object, um clipe de filme ou um componente personalizado. A tabela a seguir lista as funções de retorno chamadas pelos objeto MovieClipLoader: Criar um objeto ouvinte e criar funções de retorno Função de retorno do ouvinte Descrição onLoadStart(target) Chamada quando o download para target é iniciado por uma chamada de MovieClipLoader.loadClip(). onLoadProgress(target, bytesLoaded, bytesTotal) Chamada quando o download para target progrediu de acordo com um incremento determinado pelo Flash Player. onLoadComplete(target) Chamada quando o download para target termina. onLoadError(target, errorCode) Chamada quando ocorre uma falha no download para target. onLoadInit(target) Chamada quando as ações do Frame 1 do arquivo SWF descarregado foram concluídas, mas o quadro ainda não foi desenhado. Por exemplo, o código a seguir cria um objeto ouvinte genérico denominado loadListener e define para ele mesmo as funções onLoadStart, onLoadProgress e onLoadComplete. // Cria objeto ouvinte: var loadListener:Object = new Object(); loadListener.onLoadStart = function (loadTarget) { trace("Loading into " + loadTarget + " has started."); } loadListener.onLoadProgress = function(loadTarget, bytesLoaded, bytesTotal) { var percentLoaded = bytesLoaded/bytesTotal * 100; trace("%" + percentLoaded + " into target " + loadTarget); } loadListener.onLoadComplete = function(loadTarget) { trace("Load completed into: " + loadTarget); } Pré-carregando mídia externa 209 Registrar o objeto ouvinte com o objeto MovieClipLoader Para que o objeto ouvinte receba os eventos de carregamento, registre-o com o objeto MovieClipLoader. loader.addListener(loadListener); Começar a carregar o arquivo (JPEG ou SWF) em um clipe de destino Para iniciar o download do JPEG ou SWF, use o método MovieClipLoader.loadClip(). loader.loadClip("scene_2.swf"); Observação: Somente os métodos MovieClipLoader podem ser usados para controlar o andamento do download de arquivos carregados com o método MovieClipLoader.loadClip(). Não é possível usar a função loadMovie() nem o método MovieClip.loadMovie(). O exemplo a seguir usa o método setProgress() do componente ProgressBar para exibir o andamento do download de um arquivo SWF. (Consulte “ProgressBar component” (Componente ProgressBar) em Usando a Ajuda de componentes). Para exibir o andamento do download usando o componente ProgressBar: 1 Em um novo documento do Flash, crie um clipe de filme no Stage e atribua o nome de target_mc. 2 Abra o painel Components (Window > Development Panels > Components). 3 Arraste um componente ProgressBar do painel Components até o Stage. 4 No inspetor Property, atribua o nome pBar ao componente ProgressBar e, na guia Parameters (Parâmetros), selecione Manual no menu pop-up Mode (Modo). 5 Selecione Frame 1 na Timeline e abra o painel Actions (Window > Development Panels > Actions). 6 Adicione o seguinte código ao painel Actions: // cria um objeto MovieClipLoader e um objeto ouvinte myLoader = new MovieClipLoader(); myListener = new Object(); // adiciona os retornos de MovieClipLoader ao seu objeto ouvinte myListener.onLoadStart = function(clip) { //esse evento é ativado uma vez, no início do carregamento pBar.label = "Now loading: " + clip; }; myListener.onLoadProgress = function(clip, bytesLoaded, bytesTotal) { var percentLoaded = int (100*(bytesLoaded/bytesTotal)); pBar.setProgress(bytesLoaded, bytesTotal); };myLoader.addListener(myListener); myLoader.loadClip("veryLargeFile.swf", target_mc); 7 Teste o documento selecionando Control (Controlar) > Test Movie (Testar filme). Para obter mais informações, consulte a entrada Classe MovieClipLoader em Capítulo 12, “Dicionário do ActionScript”, na página 215. 210 Capítulo 11: Trabalhando com mídia externa Pré-carregando arquivos MP3 e FLV Para pré-carregar arquivos MP3 e FLV, use a função setInterval() a fim de criar um mecanismo de “pesquisa” que verifique os bytes carregados para um objeto Sound ou NetStream em intervalos predeterminados. Para controlar o andamento do download de arquivos MP3, use os métodos Sound.getBytesLoaded() e Sound.getBytesTotal(); para controlar o andamento do download de arquivos FLV, use as propriedades NetStream.bytesLoaded e NetStream.bytesTotal. O código a seguir usa setInterval() para verificar os bytes carregados para um objeto Sound ou NetStream em intervalos predeterminados. // Cria um novo objeto Sound para reproduzir o som. var songTrack = new Sound(); // Cria a função de pesquisa que controla o andamento do download. // Esta é a função que é “pesquisada”. Ela verifica // o andamento do download do objeto Sound passado como referência. checkProgress = function (soundObj) { var bytesLoaded = soundObj.getBytesLoaded(); var bytesTotal = soundObj.getBytesTotal(); var percentLoaded = Math.floor(bytesLoaded/bytesTotal * 100); trace("%" + percentLoaded + " loaded."); } // Quando o arquivo tiver sido carregado, limpa a pesquisa do intervalo. songTrack.onLoad = function () { clearInterval(poll); } // Carrega o arquivo MP3 de fluxo e começa a chamar checkProgress() songTrack.loadSound("beethoven.mp3", true); var poll = setInterval(checkProgress, 1000, songTrack); É possível usar esse mesmo tipo de técnica de pesquisa para pré-carregar arquivos FLV externos. Para obter o total de bytes e o número atual de bytes carregados para um arquivo FLV, use as propriedades NetStream.bytesLoaded e NetStream.bytesTotal. Outra maneira de pré-carregar arquivos FLV é usar o método NetStream.setBufferTime(). Esse método usa um único parâmetro que indica o número de segundos do fluxo de FLV para download antes de a reprodução ser iniciada. Para obter mais informações, consulte MovieClip.getBytesLoaded(), MovieClip.getBytesTotal(), NetStream.bytesLoaded, NetStream.bytesTotal, NetStream.setBufferTime(), setInterval(), Sound.getBytesLoaded() e Sound.getBytesTotal() em Capítulo 12, “Dicionário do ActionScript”, na página 215. Pré-carregando mídia externa 211 212 Capítulo 11: Trabalhando com mídia externa Esta parte contém o Dicionário ActionScript, que fornece informações sobre a sintaxe e o uso de cada elemento da linguagem ActionScript. Ela também contém apêndices com o material de referência a ser consultado durante a criação dos scripts. Capítulo 12: Dicionário do ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Apêndice A: Mensagens de erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 Apêndice B: Associatividade e precedência de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 Apêndice C: Teclas do teclado e valores de códigos de teclas. . . . . . . . . . . . . . . . . . . . . . . . . . 859 Apêndice D: Criando Scripts para versões anteriores do Flash Player . . . . . . . . . . . . . . . . . . . 865 Apêndice E: Programação orientada a objeto com o ActionScript 1 . . . . . . . . . . . . . . . . . . . . 869 Parte V PARTE V Referência CAPÍTULO 12 Dicionário do ActionScript Este dicionário descreve a sintaxe e o uso dos elementos do ActionScript no Macromedia Flash MX 2004 e no Macromedia Flash MX Professional 2004. Para usar exemplos em um script, copie o código de exemplo deste capítulo e cole-o no painel Script ou em um arquivo de script externo. O dicionário lista todos os elementos do ActionScript: operadores, palavras-chave, comandos, ações, propriedades, funções, classes e métodos. Para ter uma visão geral de todas as entradas do dicionário, consulte “Conteúdo do dicionário” na página 217. As tabelas desta seção representam um bom começo para a verificação dos operadores simbólicos ou métodos cuja classe seja desconhecida. Para obter informações sobre componentes, consulte Usando componentes. O ActionScript segue o padrão ECMA-262 (a especificação escrita pela Associação Européia de Fabricantes de Computadores), salvo indicação em contrário. Alguns elementos do ActionScript do Flash 5 (e anteriores) ficaram obsoletos e foram substituídos por novos elementos do ActionScript que correspondem ao padrão ECMA. A Macromedia recomenda que se utilizem os elementos mais recentes, embora o Flash Player 5 ainda suporte os elementos obsoletos. Há dois tipos de entradas neste dicionário: • Entradas individuais para operadores, palavras-chave, funções, variáveis, propriedades, • métodos e comandos Entradas de classes, que fornecem informações gerais sobre classes internas Use as informações nas entradas de exemplo para interpretar a estrutura e as convenções usadas nesses dois tipos de entradas. Exemplo de entrada da maioria dos elementos do ActionScript O exemplo de entrada do dicionário a seguir explica as convenções usadas para todos os elementos do ActionScript que não são classes. Título da entrada Todas as entradas são listadas em ordem alfabética. A ordem ignora maiúsculas e minúsculas, sublinhados no início e assim por diante. 215 Disponibilidade Esta seção informa as versões do Flash Player que oferecem suporte ao elemento. Isso não é o mesmo que a versão do Flash usada para criar o conteúdo. Por exemplo, se o Macromedia Flash MX 2004 ou o Macromedia Flash MX Professional 2004 forem usados para criar conteúdo para o Flash Player 6, somente os elementos do ActionScript que estiverem disponíveis para o Flash Player 6 poderão ser usados. Uso Esta seção fornece a sintaxe correta para usar o elemento do ActionScript em seu código. A parte obrigatória da sintaxe está em codigo fonte e o código fornecido pelo usuário está em código fonte em itálico. Os colchetes ([]) indicam parâmetros opcionais. Parâmetros Esta seção descreve qualquer parâmetro listado na sintaxe. Retorna Se houver valores, esta seção identifica qual será retornado pelo elemento. Descrição Esta seção identifica o tipo de elemento (por exemplo, um operador, um método, uma função etc.) e, em seguida, descreve como usá-lo. Exemplo Esta seção fornece um exemplo de código que demonstra como usar o elemento. Consulte também Esta seção lista entradas do dicionário ActionScript relacionadas. Exemplo de entrada de classes O seguinte exemplo de entrada do dicionário explica as convenções usadas para exibir classes internas do ActionScript. As classes são apresentadas em ordem alfabética com todos os outros elementos do dicionário. Título da entrada O título da entrada fornece o nome da classe. O nome da classe é seguido por informações descritivas gerais. Tabelas de resumo de método e propriedade Cada entrada de classe contém uma tabela com todos os métodos associados. Se a classe tiver propriedades (normalmente constantes), manipuladores de eventos ou ouvintes de eventos, esses elementos serão apresentados resumidamente em tabelas adicionais. Todos os elementos listados nessas tabelas também possuem suas próprias entradas de dicionário, que seguem a entrada da classe. 216 Capítulo 12: Dicionário do ActionScript Construtor Caso uma classe exija o uso de um construtor para acessar seus métodos e propriedades, o construtor será descrito em cada entrada de classe. Essa descrição tem todos os elementos padrões (sintaxe, descrição etc.) das outras entradas do dicionário. Listagens de métodos e propriedades Os métodos e propriedades de uma classe são apresentados em ordem alfabética depois da entrada da classe. Conteúdo do dicionário Todas as entradas do dicionário são listadas em ordem alfabética. Contudo, alguns operadores são símbolos e são apresentados na ordem ASCII. Além disso, os métodos associados a uma classe são apresentados junto com o nome da classe, por exemplo, o método abs() da classe Math aparece como Math.abs(). As duas tabelas a seguir o ajudarão a localizar esses elementos. A primeira lista os operadores simbólicos na ordem em que ocorrem no dicionário. A segunda lista todos os outros elementos do ActionScript. Operadores simbólicos Consulte a entrada –– –– (decremento) ++ ++ (incremento) ! ! (NOT lógico) != != (diferença) !== !== (diferença estrita) % % (módulo) %= %= (atribuição de módulo) & & (operador AND bit a bit) && && (AND lógico) &= &= (atribuição AND bit a bit) () () (parênteses) – – (menos) * * (multiplicação) *= *= (atribuição de multiplicação) , , (vírgula) . . (ponto) : : (tipo) ?: ?: (condicional) / / (divisão) // // (delimitador de comentário) Conteúdo do dicionário 217 Operadores simbólicos Consulte a entrada /* /* (delimitador de comentário) /= /= (atribuição de divisão) [] [] (acesso de array) ^ ^ (XOR bit a bit) ^= ^= (atribuição XOR bit a bit) {} {} (inicializador de objeto) | | (OR bit a bit) || || (OR lógico) |= |= (atribuição OR bit a bit) ~ ~ (NOT bit a bit) + + (adição) += += (atribuição de adição) < < (menor que) << << (deslocamento para a esquerda bit a bit) <<= <<= (deslocamento para a esquerda bit a bit e atribuição) <= <= (menor ou igual que) <> <> (diferença) = = (atribuição) -= -= (atribuição de subtração) == == (igualdade) === === (igualdade estrita) > > (maior que) >= >= (maior ou igual a) >> >> (deslocamento para a direita bit a bit) >>= >>= (deslocamento para a direita bit a bit e atribuição) >>> >>> (deslocamento para a direita bit a bit sem sinal) >>>= >>>= (deslocamento para a direita bit a bit sem sinal e atribuição) A tabela a seguir lista todos os elementos do ActionScript que não são operadores simbólicos. 218 Elemento do ActionScript Consulte a entrada #endinitclip #endinitclip #include #include #initclip #initclip __proto__ Object.__proto__ _accProps _accProps Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada _alpha MovieClip._alpha, Button._alpha, TextField._alpha _currentframe MovieClip._currentframe _droptarget MovieClip._droptarget _focusrect _focusrect, Button._focusrect, MovieClip._focusrect _framesloaded MovieClip._framesloaded _global _global object _height Button._height, MovieClip._height, TextField._height _highquality _highquality, Button._highquality, MovieClip._highquality, TextField._highquality _lockroot MovieClip._lockroot _name Button._name, MovieClip._name, TextField._name _parent _parent, Button._parent, MovieClip._parent, TextField._parent _quality _quality, Button._quality, TextField._quality _root _root _rotation Button._rotation, MovieClip._rotation, TextField._rotation _soundbuftime _soundbuftime, Button._soundbuftime, MovieClip._soundbuftime, TextField._soundbuftime _target Button._target, MovieClip._target, TextField._target _totalframes MovieClip._totalframes _url Button._url, MovieClip._url, TextField._url _visible Button._visible, MovieClip._visible, TextField._visible _width Button._width, MovieClip._width, TextField._width _x Button._x, MovieClip._x, TextField._x _xmouse Button._xmouse, MovieClip._xmouse, TextField._xmouse _xscale Button._xscale, MovieClip._xscale, TextField._xscale _y Button._y, MovieClip._y, TextField._y _ymouse Button._ymouse, MovieClip._ymouse, TextField._ymouse _yscale Button._yscale, MovieClip._yscale, TextField._yscale abs Math.abs() Acessibilidade Classe Accessibility acos Math.acos() activityLevel Camera.activityLevel, Microphone.activityLevel add add addListener Key.addListener(), Mouse.addListener(), MovieClipLoader.addListener() , Selection.addListener(), Stage.addListener(), TextField.addListener() Conteúdo do dicionário 219 220 Elemento do ActionScript Consulte a entrada addPage PrintJob.addPage() addProperty Object.addProperty() addRequestHeader LoadVars.addRequestHeader(), XML.addRequestHeader() align Stage.align, TextFormat.align allowDomain LocalConnection.allowDomain, System.security.allowDomain() and and appendChild XML.appendChild() apply Function.apply() Argumentos Classe Arguments Array Classe Array, Array() asfunction asfunction asin Math.asin() atan Math.atan() atan2 Math.atan2() attachAudio MovieClip.attachAudio() attachMovie MovieClip.attachMovie() attachSound Sound.attachSound() attachVideo Video.attachVideo() attributes XML.attributes autosize TextField.autoSize avHardwareDisable System.capabilities.securityLimits.avHardwareDisable background TextField.background backgroundColor TextField.backgroundColor BACKSPACE Key.BACKSPACE bandwidth Camera.bandwidth beginFill MovieClip.beginFill() beginGradientFill MovieClip.beginGradientFill() blockIndent TextFormat.blockIndent bold TextFormat.bold Booleano Boolean(), Classe Boolean border TextField.border borderColor TextField.borderColor bottomScroll TextField.bottomScroll break break bufferLength NetStream.bufferLength Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada bufferTime NetStream.bufferTime builtInItems ContextMenu.builtInItems bullet TextFormat.bullet Button Classe Button bytesLoaded NetStream.bytesLoaded bytesTotal NetStream.bytesTotal call call(), Function.call() callee arguments.callee caller arguments.caller Camera Classe Camera capabilities System.capabilities object CAPSLOCK Key.CAPSLOCK caption ContextMenuItem.caption case case catch try..catch..finally ceil Math.ceil() charAt String.charAt() charCodeAt String.charCodeAt() childNodes XML.childNodes chr chr class class clear MovieClip.clear(), SharedObject.clear(), Video.clear() clearInterval clearInterval() cloneNode XML.cloneNode() close LocalConnection.close(), NetStream.close(), XMLSocket.close() Cor Classe Color, TextFormat.color concat Array.concat(), String.concat() connect LocalConnection.connect(), NetConnection.connect(), XMLSocket.connect() condenseWhite TextField.condenseWhite constructor Classe Array, Classe Boolean, Classe Camera, Classe Color, Classe ContextMenu, Classe ContextMenuItem, Classe Date, Classe Error, Classe LoadVars, Classe LocalConnection, Classe Microphone, Classe NetConnection, Classe NetStream, Classe Number, Classe Object, Classe PrintJob, Classe SharedObject, Classe Sound, Classe String, Classe TextField.StyleSheet, Classe TextFormat, Classe XML, Classe XMLSocket Conteúdo do dicionário 221 222 Elemento do ActionScript Consulte a entrada contentType LoadVars.contentType, XML.contentType ContextMenu Classe ContextMenu ContextMenuItem Classe ContextMenuItem continue continue CONTROL Key.CONTROL copy ContextMenu.copy(), ContextMenuItem.copy() cos Math.cos() createElement XML.createElement() createEmptyMovieClip MovieClip.createEmptyMovieClip() createTextField MovieClip.createTextField() createTextNode XML.createTextNode() currentFps Camera.currentFps, NetStream.currentFps curveTo MovieClip.curveTo() CustomActions Classe CustomActions customItems ContextMenu.customItems data SharedObject.data Date Classe Date deblocking Video.deblocking default default delete delete DELETEKEY Key.DELETEKEY do while do while docTypeDecl XML.docTypeDecl domain LocalConnection.domain() DOWN Key.DOWN duplicateMovieClip duplicateMovieClip(), MovieClip.duplicateMovieClip() duration Sound.duration dynamic dynamic E Math.E else else else if else if embedFonts TextField.embedFonts enabled Button.enabled, ContextMenuItem.enabled, MovieClip.enabled END Key.END endFill MovieClip.endFill() Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada ENTER Key.ENTER eq eq (igual — específico de seqüência de caracteres) Error Classe Error ESCAPE (constante) Key.ESCAPE escape (função) escape eval eval() exp Math.exp() extends extends false false finally try..catch..finally firstChild XML.firstChild floor Math.floor() flush SharedObject.flush() focusEnabled MovieClip.focusEnabled fonte TextFormat.font for for for..in for..in fps Camera.fps fromCharCode String.fromCharCode() fscommand fscommand() function function, Classe Function gain Microphone.gain ge ge (maior ou igual a — específico de seqüências de caracteres) get Camera.get(), CustomActions.get(), get, Microphone.get() getAscii Key.getAscii() getBeginIndex Selection.getBeginIndex() getBounds MovieClip.getBounds() getBytesLoaded LoadVars.getBytesLoaded(), MovieClip.getBytesLoaded(), Sound.getBytesLoaded(), XML.getBytesLoaded() getBytesTotal LoadVars.getBytesTotal(), MovieClip.getBytesTotal(), Sound.getBytesTotal(), XML.getBytesTotal() getCaretIndex Selection.getCaretIndex() getCode Key.getCode() getDate Date.getDate() getDay Date.getDay() Conteúdo do dicionário 223 224 Elemento do ActionScript Consulte a entrada getDepth Button.getDepth(), MovieClip.getDepth(), TextField.getDepth() getEndIndex Selection.getEndIndex() getFocus Selection.getFocus() getFontList TextField.getFontList() getFullYear Date.getFullYear() getHours Date.getHours() getInstanceAtDepth MovieClip.getInstanceAtDepth() getLocal SharedObject.getLocal() getMilliseconds Date.getMilliseconds() getMinutes Date.getMinutes() getMonth Date.getMonth() getNewTextFormat TextField.getNewTextFormat() getNextHighestDepth MovieClip.getNextHighestDepth() getPan Sound.getPan() getProgress MovieClipLoader.getProgress() getProperty getProperty getRGB Color.getRGB() getSeconds Date.getSeconds() getSize SharedObject.getSize() getStyle TextField.StyleSheet.getStyle() getStyleNames TextField.StyleSheet.getStyleNames() getSWFVersion MovieClip.getSWFVersion() getTextExtent TextFormat.getTextExtent() getTextFormat TextField.getTextFormat() getTime Date.getTime() getTimer getTimer getTimezoneOffset Date.getTimezoneOffset() getTransform Color.getTransform(), Sound.getTransform() getURL getURL(), MovieClip.getURL() getUTCDate Date.getUTCDate() getUTCDay Date.getUTCDay() getUTCFullYear Date.getUTCFullYear() getUTCHours Date.getUTCHours() getUTCMilliseconds Date.getUTCMilliseconds() getUTCMinutes Date.getUTCMinutes() Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada getUTCMonth Date.getUTCMonth() getUTCSeconds Date.getUTCSeconds() getVersion getVersion getVolume Sound.getVolume() getYear Date.getYear() globalToLocal MovieClip.globalToLocal() goto gotoAndPlay(), gotoAndStop() gotoAndPlay gotoAndPlay(), MovieClip.gotoAndPlay() gotoAndStop gotoAndStop(), MovieClip.gotoAndStop() gt gt (maior que — específico de seqüência de caracteres) hasAccessibility System.capabilities.hasAccessibility hasAudio System.capabilities.hasAudio hasAudioEncoder System.capabilities.hasAudioEncoder hasChildNodes XML.hasChildNodes() hasEmbeddedVideo System.capabilities.hasEmbeddedVideo hasMP3 System.capabilities.hasMP3 hasPrinting System.capabilities.hasPrinting hasScreenBroadcast System.capabilities.hasScreenBroadcast hasScreenPlayback System.capabilities.hasScreenPlayback hasStreamingAudio System.capabilities.hasStreamingAudio hasStreamingVideo System.capabilities.hasStreamingVideo hasVideoEncoder System.capabilities.hasVideoEncoder height Camera.height, Stage.height, Video.height hide Mouse.hide() hideBuiltInItems ContextMenu.hideBuiltInItems() hitArea MovieClip.hitArea hitTest MovieClip.hitTest() HOME Key.HOME hscroll TextField.hscroll html TextField.html htmlText TextField.htmlText ID3 Sound.ID3 if if ifFrameLoaded ifFrameLoaded ignoreWhite XML.ignoreWhite Conteúdo do dicionário 225 226 Elemento do ActionScript Consulte a entrada implements implements import import indent TextFormat.indent index Camera.index, Microphone.index indexOf String.indexOf() Infinity Infinity -Infinity -Infinity INSERT Key.INSERT insertBefore XML.insertBefore() install CustomActions.install() instanceof instanceof int int interface interface isActive Accessibility.isActive() isDebugger System.capabilities.isDebugger isDown Key.isDown() isFinite isFinite isNaN isNaN() isToggled Key.isToggled() italic TextFormat.italic join Array.join() Key Classe key language System.capabilities.language lastChild XML.lastChild lastIndexOf String.lastIndexOf() le le (menor ou igual a — específico de seqüência de caracteres) leading TextFormat.leading LEFT Key.LEFT leftMargin TextFormat.leftMargin length length, arguments.length, Array.length, String.length, TextField.length level _level lineStyle MovieClip.lineStyle() lineTo MovieClip.lineTo() list CustomActions.list() LN10 Math.LN10 Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada LN2 Math.LN2 load LoadVars.load(), TextField.StyleSheet.load(), XML.load(), loadClip MovieClipLoader.loadClip() loaded LoadVars.loaded, XML.loaded loadMovie loadMovie(), MovieClip.loadMovie() loadMovieNum loadMovieNum() loadSound Sound.loadSound() loadVariables loadVariables(), MovieClip.loadVariables() loadVariablesNum loadVariablesNum() LoadVars Classe LoadVars LocalConnection Classe LocalConnection localFileReadDisable System.capabilities.securityLimits.localFileReadDisable localToGlobal MovieClip.localToGlobal() log Math.log() LOG10E Math.LOG10E LOG2E Math.LOG2E lt lt (menor que — seqüência de caracteres específica) manufacturer System.capabilities.manufacturer Math Classe Math max Math.max() MAX_VALUE Number.MAX_VALUE maxChars TextField.maxChars maxhscroll TextField.maxhscroll maxscroll maxscroll, TextField.maxscroll mbchr mbchr mblength mblength mbord mbord mbsubstring mbsubstring menu Button.menu, MovieClip.menu, TextField.menu message Error.message Microphone Classe Microphone min Math.min() MIN_VALUE Number.MIN_VALUE motionLevel Camera.motionLevel motionTimeOut Camera.motionTimeOut Conteúdo do dicionário 227 228 Elemento do ActionScript Consulte a entrada Mouse Classe Mouse mouseWheelEnabled TextField.mouseWheelEnabled moveTo MovieClip.moveTo() MovieClip Classe MovieClip MovieClipLoader Classe MovieClipLoader multiline TextField.multiline muted Camera.muted, Microphone.muted name Error.name, Microphone.name names Camera.names, Microphone.names NaN NaN, Number.NaN ne ne (diferente — específico de seqüência de caracteres) NEGATIVE_INFINITY Number.NEGATIVE_INFINITY NetConnection Classe NetConnection NetStream Classe NetStream new (operador) new newline newline nextFrame nextFrame(), MovieClip.nextFrame() nextScene nextScene() nextSibling XML.nextSibling nodeName XML.nodeName nodeType XML.nodeType nodeValue XML.nodeValue not not null null Number Number(), Classe Number Object Classe Object, Object() on on() onActivity Camera.onActivity, Microphone.onActivity onChanged TextField.onChanged onClipEvent onClipEvent() onClose XMLSocket.onClose() onConnect XMLSocket.onConnect() onData LoadVars.onData, MovieClip.onData, XML.onData, XMLSocket.onData() onDragOut Button.onDragOut, MovieClip.onDragOut onDragOver Button.onDragOver, MovieClip.onDragOver Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada onEnterFrame MovieClip.onEnterFrame onID3 Sound.onID3 onKeyDown Button.onKeyDown, Key.onKeyDown, MovieClip.onKeyDown onKeyUp Button.onKeyUp, Key.onKeyUp, MovieClip.onKeyUp onKillFocus Button.onKillFocus, MovieClip.onKillFocus, TextField.onKillFocus onLoad LoadVars.onLoad, MovieClip.onLoad, Sound.onLoad, TextField.StyleSheet.onLoad, XML.onLoad() onLoadComplete MovieClipLoader.onLoadComplete() onLoadError MovieClipLoader.onLoadError() onLoadInit MovieClipLoader.onLoadInit() onLoadProgress MovieClipLoader.onLoadProgress() onLoadStart MovieClipLoader.onLoadStart() onMouseDown Mouse.onMouseDown, MovieClip.onMouseDown onMouseMove Mouse.onMouseMove, MovieClip.onMouseMove onMouseUp Mouse.onMouseUp, MovieClip.onMouseUp onMouseWheel Mouse.onMouseWheel onPress Button.onPress, MovieClip.onPress onRelease Button.onRelease, MovieClip.onRelease onReleaseOutisde Button.onReleaseOutside, MovieClip.onReleaseOutside onResize Stage.onResize onRollOut Button.onRollOut, MovieClip.onRollOut onRollOver Button.onRollOver, MovieClip.onRollOver onScroller TextField.onScroller onSelect ContextMenu.onSelect, ContextMenuItem.onSelect onSetFocus Button.onSetFocus, MovieClip.onSetFocus, Selection.onSetFocus, TextField.onSetFocus onSoundComplete Sound.onSoundComplete onStatus Camera.onStatus, LocalConnection.onStatus, Microphone.onStatus, NetStream.onStatus, SharedObject.onStatus() onUnload MovieClip.onUnload onUpdate onUpdate onXML XMLSocket.onXML() or (OR lógico) or ord ord os System.capabilities.os Conteúdo do dicionário 229 230 Elemento do ActionScript Consulte a entrada parentNode XML.parentNode parseCSS TextField.StyleSheet.parseCSS() parseFloat parseFloat() parseInt parseInt parseXML XML.parseXML() password TextField.password pause NetStream.pause() PGDN Key.PGDN PGUP Key.PGUP PI Math.PI pixelAspectRatio System.capabilities.pixelAspectRatio play play(), MovieClip.play(), NetStream.play() playerType System.capabilities.playerType pop Array.pop() position Sound.position POSITIVE_INFINITY Number.POSITIVE_INFINITY pow Math.pow() prevFrame prevFrame(), MovieClip.prevFrame() previousSibling XML.previousSibling prevScene prevScene() print print() printAsBitmap printAsBitmap() printAsBitmapNum printAsBitmapNum() PrintJob Classe PrintJob printNum printNum() private private prototype Function.prototype public public push Array.push() quality Camera.quality random random, Math.random() rate Microphone.rate registerClass Object.registerClass() removeListener Key.removeListener(), Mouse.removeListener(), Selection.removeListener(), Stage.removeListener(), TextField.removeListener() Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada removeMovieClip removeMovieClip(), MovieClip.removeMovieClip() removeNode XML.removeNode() removeTextField TextField.removeTextField() replaceSel TextField.replaceSel() replaceText TextField.replaceText resolutionX System.capabilities.screenResolutionX resolutionY System.capabilities.screenResolutionY restrict TextField.restrict return return reverse Array.reverse() RIGHT Key.RIGHT rightMargin TextFormat.rightMargin round Math.round() scaleMode Stage.scaleMode screenColor System.capabilities.screenColor screenDPI System.capabilities.screenDPI screenResolutionX System.capabilities.screenResolutionX screenResolutionY System.capabilities.screenResolutionY scroll scroll, TextField.scroll seek NetStream.seek() selectable TextField.selectable Selection Classe Selection send LoadVars.send(), LocalConnection.send(), PrintJob.send(), XML.send(), XMLSocket.send() sendAndLoad LoadVars.sendAndLoad(), XML.sendAndLoad() separatorBefore ContextMenuItem.separatorBefore serverString System.capabilities.serverString set set set variable set variable setBufferTime NetStream.setBufferTime() setDate Date.setDate() setFocus Selection.setFocus() setFullYear Date.setFullYear() setGain Microphone.setGain() setHours Date.setHours() setInterval setInterval() Conteúdo do dicionário 231 232 Elemento do ActionScript Consulte a entrada setMask MovieClip.setMask() setMilliseconds Date.setMilliseconds() setMinutes Date.setMinutes() setMode Camera.setMode() setMonth Date.setMonth() setMotionLevel Camera.setMotionLevel() setNewTextFormat TextField.setNewTextFormat() setPan Sound.setPan() setProperty setProperty() setQuality Camera.setQuality() setRate Microphone.setRate() setRGB Color.setRGB() setSeconds Date.setSeconds() setSelection Selection.setSelection() setSilenceLevel Microphone.setSilenceLevel() setStyle TextField.StyleSheet.setStyle() setTextFormat TextField.setTextFormat() setTime Date.setTime() setTransform Color.setTransform(), Sound.setTransform() setUseEchoSuppression Microphone.setUseEchoSuppression() setUTCDate Date.setUTCDate() setUTCFullYear Date.setUTCFullYear() setUTCHours Date.setUTCHours() setUTCMilliseconds Date.setUTCMilliseconds() setUTCMinutes Date.setUTCMinutes() setUTCMonth Date.setUTCMonth() setUTCSeconds Date.setUTCSeconds() setVolume Sound.setVolume() setYear Date.setYear() SharedObject Classe SharedObject SHIFT (constante) Key.SHIFT shift (método) Array.shift() show Mouse.show() showMenu Stage.showMenu showSettings System.showSettings() Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada silenceLevel Microphone.silenceLevel() silenceTimeout Microphone.silenceTimeout() sin Math.sin() tamanho TextFormat.size slice Array.slice(), String.slice() smoothing Video.smoothing sort Array.sort() sortOn Array.sortOn() Som Classe Sound SPACE Key.SPACE splice Array.splice() split String.split() sqrt Math.sqrt() SQRT1_2 Math.SQRT1_2 SQRT2 Math.SQRT2 Stage Classe Stage start PrintJob.start(), Sound.start() startDrag startDrag(), MovieClip.startDrag() static static status XML.status stop stop(), MovieClip.stop(), Sound.stop() stopAllSounds stopAllSounds() stopDrag stopDrag(), MovieClip.stopDrag() String Classe String, String() StyleSheet (classe) Classe TextField.StyleSheet styleSheet (propriedade) TextField.styleSheet substr String.substr() substring substring, String.substring() super super swapDepths MovieClip.swapDepths() switch switch System Classe System TAB Key.TAB tabChildren MovieClip.tabChildren tabEnabled Button.tabEnabled, MovieClip.tabEnabled, TextField.tabEnabled Conteúdo do dicionário 233 234 Elemento do ActionScript Consulte a entrada tabIndex Button.tabIndex, MovieClip.tabIndex, TextField.tabIndex tabStops TextFormat.tabStops tan Math.tan() target TextFormat.target targetPath targetPath tellTarget tellTarget text TextField.text textColor TextField.textColor TextField Classe TextField TextFormat Classe TextFormat textHeight TextField.textHeight textWidth TextField.textWidth this this throw throw time NetStream.time toggleHighQuality toggleHighQuality() toLowerCase String.toLowerCase() toString Array.toString(), Boolean.toString(), Date.toString(), Error.toString(), LoadVars.toString(), Number.toString(), Object.toString(), XML.toString() toUpperCase String.toUpperCase() trace trace() trackAsMenu Button.trackAsMenu, MovieClip.trackAsMenu true true try try..catch..finally type TextField.type typeof typeof undefined undefined underline TextFormat.underline unescape unescape uninstall CustomActions.uninstall() unloadClip MovieClipLoader.unloadClip() unloadMovie unloadMovie(), MovieClip.unloadMovie() unLoadMovieNum unloadMovieNum() unshift Array.unshift() unwatch Object.unwatch() Capítulo 12: Dicionário do ActionScript Elemento do ActionScript Consulte a entrada UP Key.UP updateAfterEvent updateAfterEvent() updateProperties Accessibility.updateProperties() url TextFormat.url useCodePage System.useCodepage useEchoSuppression Microphone.useEchoSuppression() useHandCursor Button.useHandCursor, MovieClip.useHandCursor UTC Date.UTC() valueOf Boolean.valueOf(), Number.valueOf(), Object.valueOf() var var variable TextField.variable version System.capabilities.version Video Classe Video visible ContextMenuItem.visible void void watch Object.watch() while while width Camera.width, Stage.width, Video.width with with wordwrap TextField.wordWrap XML Classe XML xmlDecl XML.xmlDecl XMLNode Classe XMLNode XMLSocket Classe XMLSocket Conteúdo do dicionário 235 –– (decremento) Disponibilidade Flash Player 4. Uso ––expressão expressão–– Parâmetros Nenhum. Retorna Nada. Descrição Operador (aritmético); um operador unitário pré-decremento e pós-decremento que subtrai 1 da expressão. A forma pré-decremento do operador (––expressão) subtrai 1 da expressão e retorna o resultado. A forma pós-decremento do operador (expressão––) subtrai 1 da expressão e retorna o valor inicial da expressão (o resultado anterior à subtração). Exemplo A forma pré-decremento do operador decrementa x para 2 (x - 1 = 2) e retorna o resultado como y: x = 3; y = --x; //y é igual a 2 A forma pós-decremento do operador decrementa x para 2 (x - 1 = 2) e retorna o valor original de x como o resultado y: x = 3; y = x-//y é igual a 3 236 Capítulo 12: Dicionário do ActionScript ++ (incremento) Disponibilidade Flash Player 4. Uso ++expressão expressão++ Parâmetros Nenhum. Retorna Nada. Descrição Operador (aritmético); um operador unário pré-incremento e pós-incremento que adiciona 1 à expressão. A expressão pode ser uma variável, um elemento em uma matriz ou uma propriedade de um objeto. A forma pré-incremento do operador (++expressão) adiciona 1 à expressão e retorna o resultado. A forma pós-incremento do operador (expressão++) adiciona 1 à expressão e retorna o valor inicial da expressão (o resultado anterior à adição). A forma pré-incremento do operador incrementa x para 2 (x + 1 = 2) e retorna o resultado como y: x = 1; y = ++x //y é igual a 2 A forma pós-incremento do operador incrementa x para 2 (x + 1 = 2) e retorna o valor original de x como o resultado y: x = 1; y = x++; //y é igual a 1 ++ (incremento) 237 Exemplo O exemplo a seguir usa ++ como operador pós-incremento para fazer com que um loop while seja executado cinco vezes. i = 0; while(i++ < 5){ trace("isto é execução " + i); } Este exemplo usa ++ como operador pré-incremento: var a = []; var i = 0; while (i < 10) { a.push(++i); } trace(a.join()); Este script exibe o seguinte resultado no painel Output (Saída): 1,2,3,4,5,6,7,8,9,10 O exemplo a seguir usa ++ como operador pós-incremento: var a = []; var i = 0; while (i < 10) { a.push(i++); } trace(a.join()); Este script exibe o seguinte resultado no painel Output (Saída): 0,1,2,3,4,5,6,7,8,9 238 Capítulo 12: Dicionário do ActionScript ! (NOT lógico) Disponibilidade Flash Player 4. Uso !expressão Parâmetros Nenhum. Retorna Nada. Descrição Operador (lógico); inverte o valor booleano de uma variável ou expressão. Se expressão for uma variável com o valor absoluto ou convertido true, o valor de !expressão será false. Se a expressão x && y for avaliada como false, a expressão !(x && y) será avaliada como true. As expressões a seguir ilustram o resultado do uso do operador !: ! true retorna false ! false retorna true Exemplo No exemplo a seguir, a variável happy é definida como false. A condição if avalia a condição !happy e, se ela for true, a ação trace() enviará uma seqüência de caracteres para o painel Output (Saída). happy = false; if (!happy){ trace("don’t worry be happy"); } ! (NOT lógico) 239 != (diferença) Disponibilidade Flash Player 5. Uso expressão1 != expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (diferença); testa o oposto exato do operador ==. Se expressão1 for igual a expressão2, o resultado será false. Como com o operador ==, a definição de igual depende dos tipos de dados comparados. • Números, seqüências de caracteres e valores booleanos são comparados por valor. • Variáveis, objetos, matrizes e funções são comparadas por referência. Exemplo O exemplo a seguir ilustra o resultado do operador !=: 5 != 8 retorna true 5 != 5 retorna false Este exemplo ilustra o uso do operador != em um comando if. a = "David"; b = "Fool" if (a != b){ trace("David is not a fool"); } Consulte também !== (diferença estrita), == (igualdade), === (igualdade estrita) 240 Capítulo 12: Dicionário do ActionScript !== (diferença estrita) Disponibilidade Flash Player 6. Uso expressão1 !== expressão2 Descrição Operador; testa o oposto exato do operador ===. O operador diferença estrita executa a mesma operação que o operador diferença, exceto a conversão dos tipos de dados. Se expressão1 for igual a expressão2 e os tipos de dados forem iguais, o resultado será false. Da mesma forma que o operador ===, a definição de igual depende dos tipos de dados comparados. • Números, seqüências de caracteres e valores booleanos são comparados por valor. • Variáveis, objetos, matrizes e funções são comparadas por referência. Exemplo O código a seguir exibe o valor retornado de operações que usam os operadores de igualdade, igualdade estrita e diferença estrita. s1 = new String("5"); s2 = new String("5"); s3 = new String("Hello"); n = new Number(5); b = new Boolean(true); s1 s1 s1 s1 == == == == s2; // true s3; // false n; // true b; // false s1 s1 s1 s1 === === === === s2; // true s3; // false n; // false b; // false s1 s1 s1 s1 !== !== !== !== s2; // false s3; // true n; // true b; // true Consulte também != (diferença), == (igualdade), === (igualdade estrita) !== (diferença estrita) 241 % (módulo) Disponibilidade Flash Player 4. Em arquivos do Flash 4, o operador % é expandido no arquivo SWF como x int(x/y) * y e pode não ser tão rápido e preciso quanto nas versões posteriores do Flash Player. Uso expressão1 % expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (aritmético); calcula o resto da expressão1 dividida por expressão2. Se um dos parâmetros expressão não for numérico, o operador módulo tentará convertê-lo(s) em números. A expressão pode ser um número ou uma seqüência de caracteres convertida em um valor numérico. Exemplo A seguir é apresentado um exemplo numérico que usa o operador módulo (%). trace (12 % 5); // retorna 2 trace (4,3 % 2,1); // retorna aproximadamente 0,1 242 Capítulo 12: Dicionário do ActionScript %= (atribuição de módulo) Disponibilidade Flash Player 4. Uso expressão1 %= expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (atribuição composta aritmética); atribui a expressão1 o valor de expressão1 % Por exemplo, as duas expressões a seguir são idênticas: expressão2. x %= y x = x % y Exemplo O exemplo a seguir atribui o valor 4 à variável x. x = 14; y = 5; trace(x %= y); // retorna 4 Consulte também % (módulo) %= (atribuição de módulo) 243 & (operador AND bit a bit) Disponibilidade Flash Player 5. No Flash 4, o operador & era usado para concatenar seqüências de caracteres. No Flash 5 e posteriores, o operador & é um AND bit a bit e os operadores add e + devem ser usados para concatenar seqüências de caracteres. Os arquivos do Flash 4 que usam o operador & são atualizados automaticamente para usarem add quando trazidos para o ambiente de criação do Flash 5 ou posterior. Uso expressão1 & expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (bit a bit); converte expressão1 e expressão2 em inteiros não assinados de 32 bits e executa uma operação AND booleana em cada bit dos parâmetros inteiros. O resultado é um novo inteiro não assinado de 32 bits. 244 Capítulo 12: Dicionário do ActionScript && (AND lógico) Disponibilidade Flash Player 4. Uso expressão1 && expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (lógico); executa uma operação booleana nos valores de uma ou de ambas as expressões. Avalia expressão1 (a expressão do lado esquerdo do operador) e retorna false se a expressão for avaliada como false. Se expressão1 for avaliada como true, expressão2 (a expressão do lado direito do operador) será avaliada. Se expressão2 for avaliada como true, o resultado final será true; caso contrário, será false. Exemplo Este exemplo usa o operador && para realizar um teste e determinar se um jogador venceu o jogo. As variáveis turns e score são atualizadas quando for a vez de um jogador ou quando esse marcar um ponto durante o jogo. O script abaixo exibe a mensagem “Você venceu o jogo!” no painel Output (Saída) quando a pontuação do jogador atingir 75, ou mais, em 3 voltas, ou menos. rodadas=2; placar=77; vencedor = (rodadas< = 3) && (placar >= 75); if (vencedor) { trace("Você venceu o jogo!"); else { trace("Tente novamente!"); } && (AND lógico) 245 &= (atribuição AND bit a bit) Disponibilidade Flash Player 5. Uso expressão1 &= expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador; atribui o valor de expressão1 & expressão2 para expressão1. Por exemplo, as duas expressões a seguir são idênticas. x &= y; x = x & y; Exemplo O exemplo a seguir atribui o valor 9 a x. x = 15; y = 9; trace(x &= y); // retorna 9 Consulte também & (operador AND bit a bit) 246 Capítulo 12: Dicionário do ActionScript () (parênteses) Disponibilidade Flash Player 4. Uso (expressão1, expressão2); função(parâmetro1,..., parâmetroN); Parâmetros expressão1, expressão2 função Números, seqüências de caracteres, variáveis ou texto. A função a ser executada no conteúdo entre parênteses. Uma série de parâmetros que devem ser executados antes de os resultados serem transferidos como parâmetros para a função fora dos parênteses. parâmetro1...parâmetroN Retorna Nada. Descrição Operador; executa uma operação de agrupamento em um ou mais parâmetros, ou envolve um ou mais parâmetros e os passa como parâmetros para uma função fora dos parênteses. Uso 1: Controla a ordem de execução dos operadores na expressão. Os parênteses substituem a ordem de precedência normal e fazem com que as expressões neles inseridas sejam avaliadas em primeiro lugar. Quando os parênteses estão aninhados, o conteúdo dos parênteses mais internos é avaliado antes do conteúdo dos mais externos. Uso 2: Envolve um ou mais parâmetros e os passa como parâmetros para a função fora dos parênteses. Exemplo Uso 1: Os comandos a seguir ilustram o uso de parênteses para controlar a ordem de execução das expressões. O valor de cada expressão é exibido abaixo de cada linha da seguinte maneira: trace((2 + 3) * (4 + 5)); // exibe 45 trace(2 + (3 * (4 + 5))); // exibe 29 trace(2 + (3 * 4) + 5); // exibe 19 Uso 2: Os exemplos a seguir ilustram o uso de parênteses com funções. getDate(); invoice(item, quantidade); function traceParameter(param){ trace(param); } traceParameter(2*2); Consulte também with () (parênteses) 247 – (menos) Disponibilidade Flash Player 4. Uso (Negação) -expressão (Subtração) expressão1 - expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (aritmético); usado para negação ou subtração. Uso 1: Quando usado para negação, reverte o sinal da expressão numérica. Uso 2: Quando usado para subtração, executa uma subtração aritmética em duas expressões numéricas, subtraindo expressão2 de expressão1. Quando ambas as expressões são inteiras, a diferença é um inteiro. Quando uma ou ambas as expressões são números de ponto flutuante, a diferença é um número de ponto flutuante. Exemplo Uso 1: O comando a seguir reverte o sinal da expressão 2 + 3. -(2 + 3) O resultado é -5. Uso 2: O comando a seguir subtrai o inteiro 2 do inteiro 5. 5 - 2 O resultado é 3, que é um inteiro. Uso 2: O comando a seguir subtrai o número de ponto flutuante 1.5 do número de ponto flutuante 3.25. 3.25 - 1.5 O resultado é 1.75, que é um número de ponto flutuante. 248 Capítulo 12: Dicionário do ActionScript * (multiplicação) Disponibilidade Flash Player 4. Uso expressão1 * expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (aritmético); multiplica duas expressões numéricas. Se ambas as expressões forem inteiras, o produto será um inteiro. Se uma ou ambas as expressões forem números de ponto flutuante, o produto será um número de ponto flutuante. Exemplo O comando a seguir multiplica os inteiros 2 e 3: 2 * 3 O resultado é 6, que é um inteiro. Exemplo Este comando multiplica os números de ponto flutuante 2,0 e 3,1416. 2.0 * 3.1416 O resultado é 6,2832, que é um número de ponto flutuante. * (multiplicação) 249 *= (atribuição de multiplicação) Disponibilidade Flash Player 4. Uso expressão1 *= expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador (atribuição composta aritmética); atribui a expressão1 o valor da expressão1 * expressão2. Por exemplo, as duas expressões a seguir são idênticas: x *= y x = x * y Exemplo O exemplo a seguir atribui o valor 50 à variável x. x = 5; y = 10; trace (x *= y); // retorna 50 Exemplo A segunda e a terceira linhas do exemplo a seguir calculam as expressões do lado direito do sinal de igual e atribuem os resultados a x e y. i = 5; x = 4 - 6; y = i + 2; trace(x *= y); // retorna -14 Consulte também * (multiplicação) 250 Capítulo 12: Dicionário do ActionScript , (vírgula) Disponibilidade Flash Player 4. Uso expressão1, expressão2 Parâmetros Nenhum. Retorna Nada. Descrição Operador; avalia expressão1, depois expressão2 e retorna o valor de expressão2. Esse operador é principalmente usado com o comando de loop for. Exemplo O exemplo de código a seguir usa um operador vírgula: var a=1, b=2, c=3; Isso é equivalente a escrever o seguinte código: var a=1; var b=2; var c=3; , (vírgula) 251 . (ponto) Disponibilidade Flash Player 4. Uso objeto.propriedade_ou_metodo nome_da_instância.variável nome_da_instância.instância_filha.variável Parâmetros objeto Uma instância de uma classe. O objeto pode ser uma instância de qualquer uma das classes internas do ActionScript ou de uma classe personalizada. Esse parâmetro está sempre à esquerda do operador ponto (.). propriedade_ou_método O nome de uma propriedade ou de um método associado ao objeto. Todas as propriedades e métodos válidos das classes internas são apresentados nas tabelas de resumo de métodos e propriedades da classe. Esse parâmetro sempre está à direita do operador ponto (.). nome_da_instância O nome da instância de um clipe de filme. Uma instância do clipe de filme que seja filha do clipe do filme principal, ou que esteja nele aninhada. instância_filha Uma variável na Timeline (Linha do tempo) do nome da instância do clipe de filme à esquerda do operador ponto (.). variável Retorna Nada. Descrição Operador; usado para navegar por hierarquias de clipes de filmes, para acessar clipes de filmes, variáveis ou propriedades (filha) aninhados. O operador ponto é usado também para testar ou definir as propriedades de um objeto, executar um método de um objeto ou criar uma estrutura de dados. 252 Capítulo 12: Dicionário do ActionScript Exemplo O comando a seguir identifica o valor atual da variável corCabelo no clipe de filme person_mc. pessoa_mc.corCabelo Isso equivale à seguinte sintaxe do Flash 4: /pessoa_mc:corCabelo O código a seguir ilustra como o operador ponto pode ser usado para criar a estrutura de uma matriz: account.name = "Gary Smith"; account.address = "123 Main St"; account.city = "Any Town"; account.state = "CA"; account.zip = "12345"; Consulte também [] (acesso de array) . (ponto) 253 : (tipo) Disponibilidade Flash Player 6. Uso [modificadores] [var] nomeVariável:[tipo] function nomeFunção():[tipo] { ... } function nomeFunção(parâmetro1[:tipo], ... , parâmetroN[:tipo]) { ... } Parâmetros nomeVariável Um identificador de uma variável. Um tipo de dados nativo, um nome de classe que tenha sido definido ou um nome de interface. tipo nomeFunção parâmetro Um identificador de uma função. Um identificador de um parâmetro de uma função. Descrição Operador; especifica o tipo da variável, o tipo de retorno da função ou o tipo de parâmetro da função. Quando usado em uma atribuição ou em uma declaração de variável, esse operador especifica o tipo da variável; quando usado em uma declaração ou definição de função, esse operador especifica o tipo de retorno da função; quando usado com um parâmetro de função em uma definição de função, esse operador especifica o tipo da variável esperado para esse parâmetro. Os tipos são um recurso de tempo de compilação somente. Todos os tipos são verificados em tempo de compilação e geram-se erros quando há incompatibilidades. Para obter mais informações, consulte Apêndice A, “Mensagens de erro”, na página 851. Incompatibilidade de tipos podem ocorrer durante operações de atribuição, chamadas de função e referência a membro de classe usando o operador ponto (.). Para evitar a incompatibilidade de tipos, use a atribuição explícita de tipos (consulte “Atribuição estrita de tipos de dados” na página 35). Os tipos que podem ser usados incluem todos os tipos de objetos nativos, classes e interfaces que sejam definidos pelo usuário e Void e Function (que existem somente como tipos, não como objetos). Os tipos nativos reconhecidos são Array, Boolean, Button, Color, CustomActions, Date, Function, LoadVars, LocalConnection, Microphone, MovieClip, NetConnection, NetStream, Number, Object, SharedObject, Sound, String, TextField, TextFormat, Video, Void, XML, XMLNode e XMLSocket. 254 Capítulo 12: Dicionário do ActionScript Exemplo Uso 1: O exemplo a seguir declara uma variável pública denominada nomeUsuario cujo tipo é String e atribui uma seqüência de caracteres vazia a ela. public var nomeUsuario:String = ""; Uso 2: Este exemplo demonstra como especificar o tipo de parâmetro de uma função. O código a seguir define uma função denominada setData() que requer um parâmetro denominado dataAtual do tipo Date. function setData(dataAtual:Date) { this.data = dataAtual; } Uso 3: O código a seguir define uma função denominada raizQuad() que requer um parâmetro denominado val do tipo Number e retorna a raiz quadrada de val, também um tipo Number. function raizQuad(val:Number):Number { return Math.sqrt(val); } : (tipo) 255 ?: (condicional) Disponibilidade Flash Player 4. Uso expressão1 ? expressão2 : expressão3 Parâmetros expressão1 Uma expressão que é avaliada para um valor booleano, normalmente uma expressão de comparação como x < 5. expressão2, expressão3 Valores de qualquer tipo. Retorna Nada. Descrição Operador; instrui o Flash a avaliar expressão1 e, se o valor de expressão1 for true, ele retornará o valor de expressão2; caso contrário, retornará o valor de expressão3. Exemplo O comando a seguir atribui o valor de variável x a variável z, pois expressão1 foi avaliada como true: x = 5; y = 10; z = (x < 6) ? x: y; trace (z); // retorna 5 256 Capítulo 12: Dicionário do ActionScript / (divisão) Disponibilidade Flash Player 4. Uso expressão1 / expressão2 Parâmetros expressão Um número ou uma variável que avalia um número. Retorna Nada. Descrição Operador (aritmético); divide expressão1 por expressão2. O resultado da operação de divisão é um número de dupla precisão e ponto flutuante. Exemplo O comando a seguir divide o número de ponto flutuante 22,0 por 7,0 e exibe o resultado no painel Output (Saída). trace(22,0 / 7,0); O resultado é 3,1429, que é um número de ponto flutuante. / (divisão) 257 // (delimitador de comentário) Disponibilidade Flash 1. Uso // comentário Parâmetros comentário Qualquer caractere. Retorna Nada. Descrição Comentário; indica o início de um comentário de script. Qualquer caractere que apareça entre o delimitador de comentário // e o caractere de fim de linha será interpretado como comentário e ignorado pelo interpretador ActionScript. Exemplo Este script usa delimitadores de comentário para identificar a primeira, terceira, quinta e sétima linhas como comentários. // registra a posição ballX = ball._x; // registra a posição ballY = ball._y; // registra a posição batX = bat._x; // registra a posição batY = bat._y; X do clipe de filme ball Y do clipe de filme ball X do clipe de filme bat Y do clipe de filme bat Consulte também /* (delimitador de comentário) 258 Capítulo 12: Dicionário do ActionScript /* (delimitador de comentário) Disponibilidade Flash Player 5. Uso /* comentário */ /* comentário comentário */ Parâmetros comentário Qualquer caractere. Retorna Nada. Descrição Comentário; indica uma ou mais linhas de comentários de script. Quaisquer caracteres que apareçam entre a marca de começo de comentário /* e a marca de fechamento de comentário */ são interpretados como comentários e ignorados pelo interpretador ActionScript. Use o primeiro tipo de sintaxe para identificar comentários de uma linha. Use o segundo tipo de sintaxe para identificar comentários de várias linhas sucessivas. Se não for usada a marca de fechamento */ com essa forma de delimitador de comentário, será gerada uma mensagem de erro. Exemplo Este script usa delimitadores de comentário no início do script. /* grava as posições X e Y dos clipes de filme ball e bat */ ballX = ball._x; ballY = ball._y; batX = bat._x; batY = bat._y; Consulte também // (delimitador de comentário) /* (delimitador de comentário) 259 /= (atribuição de divisão) Disponibilidade Flash Player 4. Uso expressão1 /= expressão2 Parâmetros expressão1,expressão2 Um número ou uma variável que é avaliada para um número. Retorna Nada. Descrição Operador (atribuição composta aritmética); atribui a expressão1 o valor da expressão1 / expressão2. Por exemplo, os dois comandos a seguir são equivalentes: x /= y x = x / y Exemplo O código a seguir ilustra o uso do operador /= com variáveis e números. x = 10; y = 2; x /= y; // x agora contém o valor 5 260 Capítulo 12: Dicionário do ActionScript [] (acesso de array) Disponibilidade Flash Player 4. Uso meu_array = ["a0", a1,...aN]; meu_arrayMultiDimensional = [["a0",...aN],...["a0",...aN]] meu_array[E] = valor meu_arrayMultiDimensional[E][E] = valor objeto["valor"]; Parâmetros meu_array O nome de um array. a0, a1,...aN Elementos em uma matriz. meu_arrayMultiDimensional E O nome de um array multidimensional simulado. O número (ou índice) de um elemento em uma matriz. objeto valor O nome de um objeto. Uma seqüência de caracteres ou expressão que dá nome a uma propriedade do objeto. Retorna Nada. Descrição Operador; inicializa uma nova matriz ou uma matriz multidimensional com os elementos especificados (a0, e assim por diante), ou acessa elementos em uma matriz. O operador de acesso de matriz permite definir e recuperar dinamicamente nomes de instância, de variável e de objeto. Além disso, permite o acesso às propriedades de objeto. Uso 1: Um array é um objeto cujas propriedades são denominadas elementos, que são identificados individualmente por um número chamado de índice. Na criação de uma matriz, os elementos ficam entre o operador de acesso de matriz (ou colchetes). Uma matriz pode conter elementos de vários tipos. Por exemplo, a matriz a seguir, denominada funcionário, possui três elementos; o primeiro é um número e os outros dois são seqüências de caracteres (dentro de aspas). funcionário = [15, "Bárbara", "Érico"]; Uso 2: Para simular matrizes multidimensionais, é possível aninhar os colchetes. O código a seguir cria uma matriz denominada ticTacToe com três elementos; cada um deles também é uma matriz com três elementos. ticTacToe = [[1,2,3],[4,5,6],[7,8,9]]; // escolha Debug (Depurar) > List Variables (Listar variáveis) no modo de teste de filme // para visualizar uma lista dos elementos de matriz [] (acesso de array) 261 Uso 3: Coloque o índice de cada elemento entre colchetes para acessá-lo diretamente. É possível adicionar um novo elemento e alterar ou recuperar o valor de um elemento existente no array. O primeiro elemento de uma matriz é sempre 0: meu_array[0] = 15; meu_array[1] = "Olá"; meu_array[2] = true; Use colchetes para adicionar um quarto elemento, como no exemplo a seguir: meu_array[3] = "George"; Uso 4: Para acessar um elemento em uma matriz multidimensional, use colchetes. O primeiro conjunto de colchetes identifica o elemento na matriz original, e o segundo conjunto identifica o elemento na matriz aninhada. A linha de código a seguir envia o número 6 para o painel Output (Saída). ticTacToe = [[1,2,3],[4,5,6],[7,8,9]]; trace(ticTacToe[1][2]); // retorna 6 Uso 5: É possível usar o operador de acesso de array em vez da função eval para atribuir e recuperar dinamicamente valores de nomes de clipes de filme ou qualquer propriedade de um objeto: Nome["mc" + i] = "canto_esquerdo"; Exemplo Uso 1: Os exemplos de código a seguir mostram duas maneiras diferentes de criar um novo objeto Array vazio; a primeira linha usa colchetes. meu_array =[]; meu_array = new Array(); Usos 1 e 2: O exemplo a seguir cria um array chamado array_funcionários e usa a ação trace() para enviar os elementos para o painel Output (Saída). Na quarta linha, um elemento do array é alterado e a quinta linha envia o array recentemente modificado para o painel Output (Saída): array_funcionários = ["Bárbara", "George", "Maria"]; trace(array_funcionários); // Bárbara, George, Maria array_funcionários[2]="Sam"; trace(array_funcionários); // Bárbara, George, Sam Uso 3: No exemplo a seguir, a expressão entre parênteses ("piece" + i) é avaliada e o resultado é usado como o nome da variável a ser recuperada do clipe de filme my_mc. Neste exemplo, a variável i deve estar na mesma Timeline que o botão. Se a variável i for igual a 5, por exemplo, o valor da variável piece5 no clipe de filme my_mc será exibido no painel Output (Saída): on (release) { x = meu_mc["trecho"+i]; trace(x); } 262 Capítulo 12: Dicionário do ActionScript Uso 3: No código a seguir, a expressão dentro dos colchetes é avaliada e o resultado é usado como o nome da variável a ser recuperada do clipe de filme nome_mc: nome_mc["A" + i]; Caso conheça a sintaxe de barra do ActionScript do Flash 4, use a função eval para obter o mesmo resultado: eval("name.A" & i); Uso 3: Também é possível usar o operador de acesso de array do lado esquerdo de um comando de atribuição para definir dinamicamente a instância, a variável e os nomes de objeto: name[index] = "Gary"; Consulte também Classe Array, Classe Object, eval() [] (acesso de array) 263 ^ (XOR bit a bit) Disponibilidade Flash Player 5. Uso expressão1 ^ expressão2 Parâmetros expressão1,expressão2 Um número. Retorna Nenhum. Descrição Operador (bit a bit); converte expressão1 e expressão2 em inteiros sem sinal de 32 bits e retorna um 1 em cada posição de bit onde os bits correspondentes na expressão1 ou expressão2, mas não em ambas, sejam 1. Exemplo O exemplo a seguir usa o operador XOR bit a bit nos decimais 15 e 9 e atribui o resultado à variável x. // 15 decimal = 1111 binário // 9 decimal = 1001 binário x = 15 ^ 9 trace(x) // 1111 ^ 1001 = 0110 // retorna 6 decimal( = 0110 binário) 264 Capítulo 12: Dicionário do ActionScript ^= (atribuição XOR bit a bit) Disponibilidade Flash Player 5. Uso expressão1 ^=expressão2 Parâmetros expressão1,expressão2 Inteiros e variáveis. Retorna Nenhum. Descrição Operador (atribuição composta bit a bit); atribui a expressão1 o valor de expressão1 ^ Por exemplo, os dois comandos a seguir são equivalentes: expressão2. x ^= y x = x ^ y Exemplo A seguir, há o exemplo de uma operação ^=. // 15 decimal = 1111 binário x = 15; // 9 decimal = 1001 binário y = 9; trace(x ^= y); //retorna 6 decimal ( = 0110 binário) Consulte também ^ (XOR bit a bit) ^= (atribuição XOR bit a bit) 265 {} (inicializador de objeto) Disponibilidade Flash Player 5. Uso objeto = {nome1: valor1, nome2: valor2,...nomeN: valorN}; Parâmetros objeto O objeto a ser criado. nome1,2,...N valor1,2,...N Os nomes das propriedades. Os valores correspondentes de cada propriedade nome. Retorna Nenhum. Descrição Operador; cria um novo objeto e o inicializa com os pares de propriedades nome e valor especificados. Usar este operador é o mesmo que usar a sintaxe new Object e preencher os pares de propriedades com o operador de atribuição. O protótipo do objeto recém-criado é genericamente denominado como objeto Object. Exemplo A primeira linha do código a seguir cria um objeto vazio usando o operador de inicialização do objeto; a segunda cria um novo objeto usando uma função construtora. object = {}; object = new Object(); O exemplo a seguir cria um objeto account e inicializa as propriedades nome, endereço, cidade, estado, cep e saldo com os respectivos valores. conta = { nome: "Bete Silva", endereço: "Rua Principal, 123", cidade: "Cidade Flash", estado: "São Paulo", cep: "12345", saldo: "1000" }; O exemplo a seguir mostra como inicializadores de matriz e de objeto podem ser aninhados um no outro. pessoa = { nome: "Gina Vechio", filhos: [ "Ruby", "Chickie", "Puppa"] }; O exemplo a seguir usa as informações do exemplo anterior e apresenta o mesmo resultado usando as funções construtoras. person = new Person(); person.name = 'Gina Vechio'; person.children = new Array(); person.children[0] = 'Ruby'; person.children[1] = 'Chickie'; person.children[2] = 'Puppa'; Consulte também [] (acesso de array), new, 266 Classe Object Capítulo 12: Dicionário do ActionScript | (OR bit a bit) Disponibilidade Flash Player 5. Uso expressão1 | expressão2 Parâmetros expressão1,expressão2 Um número. Retorna Nenhum. Descrição Operador (bit a bit); converte expressão1 e expressão2 em inteiros não assinados de 32 bits e retorna um 1 em cada posição de bit onde os bits correspondentes na expressão1 ou expressão2 sejam 1. Exemplo A seguir, há o exemplo de uma operação OR bit a bit. // 15 decimal = 1111 binário x = 15; // 9 decimal = 1001 binário y = 9; trace(x | y); // 1111 | 0011 = 1111 // retorna 15 decimal (= 1111 binário) | (OR bit a bit) 267 || (OR lógico) Disponibilidade Flash Player 4. Uso expressão1 || expressão2 Parâmetros expressão1,expressão2 Um valor ou uma expressão booleana convertida em um valor booleano. Retorna Nenhum. Descrição Operador (lógico); avalia a expressão1 e a expressão2. O resultado será (true) se uma ou ambas as expressões forem avaliadas como true; o resultado será (false) apenas se ambas as expressões forem avaliadas como false. É possível usar o operador OR lógico com qualquer número de operandos; se algum operando for avaliado como true, o resultado será true. Com expressões não-booleanas, o operador lógico OR faz com que o Flash avalie a expressão da esquerda; se ela puder ser convertida em true, o resultado será true. Caso contrário, ele avaliará a expressão da direita e o resultado será o valor dessa expressão. Exemplo O exemplo a seguir usa o operador || em um comando if: A segunda expressão é avaliada como true para que o resultado final seja true: x = 10 y = 250 start = false if(x >25 || y > 200 || start){ trace('o teste de OR lógico passou'); } Exemplo Este exemplo demonstra como uma expressão não-booleana pode apresentar um resultado inesperado. Se a expressão da esquerda for convertida em true, esse resultado será retornado sem converter a expressão da direita. function fx1(){ trace ("fx1 chamado"); retorna true; } function fx2(){ trace ("fx2 chamado"); retorna true; } if (fx1() || fx2()){ trace ("entrou no comando IF"); } //O que se segue é enviado para o painel Output (Saída): // fx1 chamado // comando IF inserido 268 Capítulo 12: Dicionário do ActionScript |= (atribuição OR bit a bit) Disponibilidade Flash Player 5. Uso expressão1 |= expressão2 Parâmetros expressão1,expressão2 Um número ou uma variável. Retorna Nenhum. Descrição Operador (atribuição bit a bit); atribui a expressão1 o valor de expressão1 | expressão2. Por exemplo, os dois comandos a seguir são equivalentes: x |= y; x = x | y; Exemplo O exemplo a seguir usa o operador |=: // 15 decimal = 1111 binário x = 15; // 9 decimal = 1001 binário y = 9; trace(x |= y); // 1111 |= 1001 // retorna 15 decimal (= 1111 binário) Consulte também | (OR bit a bit) |= (atribuição OR bit a bit) 269 ~ (NOT bit a bit) Disponibilidade Flash Player 5. Uso ~ expressão Parâmetros expressão Um número. Retorna Nenhum. Descrição Operador (bit a bit); converte a expressão em um inteiro sem sinal de 32 bits, depois inverte os bits. Uma operação NOT bit a bit altera o sinal de um número e subtrai 1. Exemplo O exemplo a seguir mostra uma operação NOT bit a bit executada em uma variável. a = 0; trace ("quando a = 0, ~a = "+~a); // quando a = 0, ~a = -1 a = 1; trace ("quando a = 1, ~a = "+~a); // quando a = 0, ~a = -2 // portanto, ~0=-1 e ~1=-2 270 Capítulo 12: Dicionário do ActionScript + (adição) Disponibilidade Flash Player 4; Flash Player 5. No Flash 5 e posteriores, + é um operador numérico ou concatenador de seqüências de caracteres, dependendo dos tipos de dados dos parâmetros. No Flash 4, + é somente um operador numérico. Os arquivos do Flash 4 trazidos para o ambiente de criação Flash 5 ou posteriores passam por um processo de conversão para manter a integridade dos tipos de dados. O exemplo a seguir ilustra a conversão de um arquivo do Flash 4 que contém uma comparação do tipo numérica. Arquivo do Flash 4: x + y Arquivo do Flash 5, ou posterior, convertido: Number(x) + Number(y) Uso expressão1 + expressão2 Parâmetros expressão1,expressão2 Números ou seqüências de caracteres. Retorna Nenhum. Descrição Operador; adiciona expressões numéricas ou concatena (combina) seqüências de caracteres. Se uma expressão for uma seqüência de caracteres, todas as outras expressões são convertidas em seqüências de caracteres e concatenadas. Se ambas as expressões forem inteiras, a soma será um inteiro; se uma ou ambas as expressões forem números de ponto flutuante, a soma será um número de ponto flutuante. Exemplo O exemplo a seguir concatena duas seqüências de caracteres e exibe o resultado no painel Output (Saída). nome = "Cola"; instrumento = "Baterias"; trace (nome + " toca " + instrumento); + (adição) 271 Exemplo As variáveis associadas a campos de texto dinâmico e de entrada têm a seqüência de caracteres como tipo de dado. No exemplo a seguir, o depósito da variável é um campo de texto de entrada no Palco. Depois que um usuário inserir um valor, o script tenta adicionar o depósito a SaldoAnterior. Contudo, como depósito é um tipo de dado de seqüência de caracteres, o script concatena (combina os dados para formar uma seqüência de caracteres) os valores da variável em vez de somá-los. SaldoAnterior = 1345,23; SaldoAtual = depósito + SaldoAnterior; trace (SaldoAtual); Por exemplo, se um usuário inserir 475 no campo de texto de depósito, a ação trace() envia o valor 4751345.23 para o painel Output (Saída). Para corrigir isso, use a função Number() para converter a seqüência de caracteres em um número, como no exemplo a seguir: currentBalance = Number(deposit) + oldBalance; Exemplo Este comando adiciona os inteiros 2 e 3 e exibe o inteiro resultante, 5, no painel Output (Saída): trace (2 + 3); Este comando adiciona os números de ponto flutuante 2,5 e 3,25 e exibe o resultado, 5,75, que é um número de ponto flutuante, no painel Output (Saída): trace (2,5 + 3,25); Consulte também _accProps 272 Capítulo 12: Dicionário do ActionScript += (atribuição de adição) Disponibilidade Flash Player 4. Uso expressão1 += expressão2 Parâmetros expressão1,expressão2 Números ou seqüências de caracteres. Retorna Nada. Descrição Operador (atribuição composta aritmética); atribui a expressão1 o valor de expressão1 + Por exemplo, os dois comandos a seguir têm o mesmo resultado: expressão2. x += y; x = x + y; Este operador também executa concatenação de seqüências de caracteres. Todas as regras do operador de adição (+) são aplicadas ao operador de atribuição de adição (+=). Exemplo O exemplo a seguir mostra um uso numérico do operador +=. x = 5; y = 10; x += y; trace(x); //x retorna 15 Este exemplo usa o operador += com uma expressão de seqüência de caracteres e envia "Meu nome é Gilberto" para o painel Output (saída). x = "Meu nome é" x += "Gilberto" trace (x) // retorna "Meu nome é Gilberto" Consulte também + (adição) += (atribuição de adição) 273 < (menor que) Disponibilidade Flash Player 4; Flash Player 5. No Flash 5 e posteriores, o operador < (menor que) é um operador de comparação capaz de gerenciar vários tipos de dados. No Flash 4, < é um operador numérico. Os arquivos do Flash 4 trazidos para o ambiente de criação Flash 5 ou posteriores passam por um processo de conversão para manter a integridade dos tipos de dados. O exemplo a seguir ilustra a conversão de um arquivo do Flash 4 que contém uma comparação do tipo numérica. Arquivo do Flash 4: x < y Arquivo do Flash 5, ou posterior, convertido: Number(x) < Number(y) Uso expression1 < expression2 Parâmetros expressão1,expressão2 Números ou seqüências de caracteres. Descrição Operador (comparação); compara duas expressões e determina se expressão1 é menor que expressão2; em caso positivo, o operador retorna true. Se expressão1 for maior ou igual a expressão2, o operador retorna false. As expressões de seqüência de caracteres são avaliadas em ordem alfabética; todas as letras maiúsculas vêm antes das minúsculas. Exemplo Os exemplos a seguir ilustram retornos true e false para comparações entre números e entre seqüências de caracteres: 3 < 10; // true 10 < 3; //false "Alex" < "Carlos"; // true "Carlos" < "Alex"; //false "11" < "3"; //true "11" < 3; // comparação numérica //false "C" < "abc"; //false "A" < "a"; // true 274 Capítulo 12: Dicionário do ActionScript << (deslocamento para a esquerda bit a bit) Disponibilidade Flash Player 5. Uso expression1 << expression2 Parâmetros expressão1 Número ou expressão a ser deslocada para a esquerda. expressão2 Um número ou expressão que pode ser transformada em um inteiro de 0 a 31. Retorna Nada. Descrição Operador (bit a bit); converte expressão1 e expressão2 em inteiros de 32 bits e desloca todos os bits em expressão1 para a esquerda de acordo com o número de casas especificado pelo inteiro que resulta da conversão de expressão2. As posições dos bits que ficarem vazias como resultado dessa operação são preenchidas com 0. Deslocar um valor uma posição para a esquerda é o equivalente a multiplicá-lo por 2. Exemplo No exemplo a seguir, o inteiro 1 é deslocado 10 bits para a esquerda. x = 1 << 10 O resultado dessa operação é x = 1024. Isso é porque 1 decimal é igual a 1 binário, 1 binário deslocado 10 para a esquerda é 10000000000 binário e 10000000000 binário é 1024 decimal. No exemplo a seguir, o inteiro 7 é deslocado 8 bits para a esquerda. x = 7 << 8 O resultado dessa operação é x = 1792. Isso é porque 7 decimal é igual a 111 binário, 111 binário deslocado 8 bits para a esquerda é 11100000000 binário e 11100000000 binário é 1792 decimal. Consulte também >>= (deslocamento para a direita bit a bit e atribuição), >> (deslocamento para a direita bit a bit), <<= (deslocamento para a esquerda bit a bit e atribuição) << (deslocamento para a esquerda bit a bit) 275 <<= (deslocamento para a esquerda bit a bit e atribuição) Disponibilidade Flash Player 5. Uso expressão1 <<= expressão2 Parâmetros expressão1 Número ou expressão a ser deslocada para a esquerda. expressão2 Um número ou expressão que pode ser transformada em um inteiro de 0 a 31. Retorna Nada. Descrição Operador (atribuição composta bit a bit); esse operador executa uma operação de deslocamento para esquerda bit a bit e armazena o conteúdo como um resultado na expressão1. As duas expressões a seguir são equivalentes. A <<= B A = (A << B) Consulte também << (deslocamento para a esquerda bit a bit), >>= (deslocamento para a direita bit a bit e atribuição), >> (deslocamento para a direita bit a bit) 276 Capítulo 12: Dicionário do ActionScript <= (menor ou igual que) Disponibilidade Flash Player 4. Arquivo do Flash 4: x <= y Arquivo do Flash 5, ou posterior, convertido: Number(x) <= Number(y) Uso expressão1 < = expressão2 Parâmetros expressão1,expressão2 Números ou seqüências de caracteres. Retorna Nada. Descrição Operador (comparação); compara duas expressões e determina se expressão1 é menor ou igual a expressão2 ; em caso positivo, o operador retorna true. Se expressão1 for maior que expressão2, o operador retorna false. As expressões de seqüência de caracteres são avaliadas em ordem alfabética; todas as letras maiúsculas vêm antes das minúsculas. No Flash 5 ou posteriores, o operador menor ou igual a (<=) é um operador de comparação, com capacidade para gerenciar vários tipos de dados. No Flash 4, <= é um operador numérico. Os arquivos do Flash 4 trazidos para o ambiente de criação Flash 5 ou posteriores passam por um processo de conversão para manter a integridade dos tipos de dados. O exemplo a seguir ilustra a conversão de um arquivo do Flash 4 que contém uma comparação do tipo numérica. <= (menor ou igual que) 277 Exemplo Os exemplos a seguir ilustram resultados true e false para comparações entre números e entre seqüências de caracteres: 5 <= 10; // true 2 <= 2; // true 10 <= 3; //false "Alex" <= "Carlos"; // true "Carlos" <= "Alex"; //false "11" <= "3"; //true "11" <= 3; // comparação numérica //false "C" <= "abc"; //false "A" <= "a"; // true 278 Capítulo 12: Dicionário do ActionScript <> (diferença) Disponibilidade Flash 2. Uso expression1 <> expression2 Parâmetros expression1,expression2 Número, seqüência de caracteres, valor booleano, variável, objeto, array ou função. Retorna Nada. Descrição Operador (diferença); testa o oposto exato do operador ==. Se expressão1 for igual a expressão2, o resultado será false. Assim como o operador ==, a definição de igual depende dos tipos de dados comparados. • Números, seqüências de caracteres e valores booleanos são comparados por valor. • Variáveis, objetos, matrizes e funções são comparadas por referência. Este operador tornou-se obsoleto no Flash 5 e a Macromedia recomenda o uso do operador !=. Consulte também != (diferença) <> (diferença) 279 = (atribuição) Disponibilidade Flash Player 4. Arquivo do Flash 4: x = y Arquivo do Flash 5, ou posterior, convertido: Number(x) == Number(y) Uso expressão1 = expressão2 Parâmetros expressão1 Variável, elemento de uma matriz ou propriedade de um objeto. expressão2 Valor de qualquer tipo. Retorna Nada. Descrição Operador; atribui o tipo de expressão2 (o parâmetro da direita) à variável, ao elemento da matriz ou à propriedade em expressão1. No Flash 5 ou posterior, = é um operador de atribuição e o operador == é usado para avaliar a igualdade. No Flash 4, = é um operador de igualdade numérico. Os arquivos do Flash 4 trazidos para o ambiente de criação Flash 5 ou posteriores passam por um processo de conversão para manter a integridade dos tipos de dados. Exemplo O exemplo a seguir usa o operador de atribuição para atribuir o tipo de dado numérico à variável x. x = 5 O exemplo a seguir usa o operador de atribuição para atribuir o tipo de dado de seqüência de caracteres à variável x. x = "hello" Consulte também == (igualdade) 280 Capítulo 12: Dicionário do ActionScript -= (atribuição de subtração) Disponibilidade Flash Player 4. Uso expressão1 -= expressão2 Parâmetros expressão1,expressão2 Número ou expressão que avalia um número. Retorna Nada. Descrição Operador (atribuição composta aritmética); atribui a expressão1 o valor de expressão1Por exemplo, os dois comandos a seguir são equivalentes: expressão2. x -= y; x = x - y; As expressões de seqüência de caracteres devem ser convertidas em números ou será retornado NaN. Exemplo O exemplo a seguir usa o operador -= para subtrair 10 de 5 e atribui o resultado à variável x. x = 5; y = 10; x -= y trace(x); //retorna -5 Exemplo O exemplo a seguir mostra como converter seqüências de caracteres em números. x = "5"; y = "10"; x -= y; trace(x); // retorna -5 -= (atribuição de subtração) 281 == (igualdade) Disponibilidade Flash Player 5. Uso expressão1 == expressão2 Parâmetros expression1,expression2 Número, seqüência de caracteres, valor booleano, variável, objeto, array ou função. Retorna Nada. Descrição Operador (igualdade); testa a igualdade de duas expressões. O resultado será true se as expressões forem iguais. A definição de igual depende do tipo de dado do parâmetro: • Números e valores booleanos são comparados por valor e, se tiverem o mesmo valor, são considerados iguais. • Expressões de seqüência de caracteres são iguais se tiverem o mesmo número de caracteres e os caracteres forem idênticos. • Variáveis, objetos, matrizes e funções são comparadas por referência. Duas variáveis são iguais se fizerem referência ao mesmo objeto, matriz ou função. Dois arrays separados nunca são considerados iguais, mesmo que tenham o mesmo número de elementos. Exemplo O exemplo a seguir usa o operador == com um comando if: a = "David" , b = "David"; if (a == b){ trace("David é David"); } Exemplo Estes exemplos mostram os resultados de operações que comparam tipos misturados. x = "5"; y = "5"; trace(x == y); // true x = "5"; y = "66"; trace(x ==y); //false x = "chris"; y = "steve"; trace (x == y); //false Consulte também != (diferença), === (igualdade estrita), !== (diferença estrita) 282 Capítulo 12: Dicionário do ActionScript === (igualdade estrita) Disponibilidade Flash Player 6. Uso expressão1 === expressão2 Descrição Operador; testa a igualdade de duas expressões; o operador de igualdade estrita é executado da mesma forma que o operador de igualdade, exceto pela conversão dos tipos de dados. Se ambas as expressões forem idênticas, inclusive os tipos de dados, o resultado será true. A definição de igual depende do tipo de dado do parâmetro: • Números e valores booleanos são comparados por valor e, se tiverem o mesmo valor, são considerados iguais. • Expressões de seqüência de caracteres são iguais se tiverem o mesmo número de caracteres e os caracteres forem idênticos. • Variáveis, objetos, matrizes e funções são comparadas por referência. Duas variáveis são iguais se fizerem referência ao mesmo objeto, matriz ou função. Dois arrays separados nunca são considerados iguais, mesmo que tenham o mesmo número de elementos. Exemplo O código a seguir exibe o valor retornado de operações que usam os operadores de igualdade, igualdade estrita e diferença estrita. s1 = new String("5"); s2 = new String("5"); s3 = new String("Hello"); n = new Number(5); b = new Boolean(true); s1 s1 s1 s1 == == == == s2; // true s3; // false n; // true b; // false s1 s1 s1 s1 === === === === s2; // true s3; // false n; // false b; // false s1 s1 s1 s1 !== !== !== !== s2; // false s3; // true n; // true b; // true Consulte também == (igualdade), != (diferença), === (igualdade estrita) === (igualdade estrita) 283 > (maior que) Disponibilidade Flash Player 5. Uso expression1 > expression2 Parâmetros expressão1,expressão2 Um inteiro, um número de ponto flutuante ou uma seqüência de dados. Retorna Nada. Descrição Operador (comparação); compara duas expressões e determina se expressão1 é maior que expressão2 (true) ou se expressão1 é menor ou igual a expressão2 (false). >= (maior ou igual a) Disponibilidade Flash Player 4. Arquivo do Flash 4: x > y Arquivo do Flash 5, ou posterior, convertido: Number(x) > Number(y) Uso expressão1 > = expressão2 Parâmetros expressão1, expressão2 Uma seqüência de dados, um inteiro ou um número de ponto flutuante. Retorna Nada. Descrição Operador (comparação); compara duas expressões e determina se expressão1 é maior ou igual a expressão2 (true) ou se expressão1 é menor que expressão2 (false). No Flash 5 ou posteriores, maior ou igual a (>) é um operador de comparação com capacidade para gerenciar vários tipos de dado. No Flash 4, > é um operador numérico. Os arquivos do Flash 4 trazidos para o ambiente de criação Flash 5 ou posteriores passam por um processo de conversão para manter a integridade dos tipos de dados. 284 Capítulo 12: Dicionário do ActionScript >> (deslocamento para a direita bit a bit) Disponibilidade Flash Player 5. Uso expression1 >> expression2 Parâmetros expressão1 Número ou expressão a ser deslocada para a direita. expressão2 Um número ou expressão que pode ser transformada em um inteiro de 0 a 31. Retorna Nada. Descrição Operador (bit a bit); converte expressão1 e expressão2 em inteiros de 32 bits e desloca todos os bits em expressão1 para a direita de acordo com o número de casas especificado pelo inteiro que resulta da conversão de expressão2. Bits deslocados para a direita são descartados. Para preservar o sinal da expressão original, os bits na esquerda serão preenchidos com 0 se o bit mais significativo (o mais à esquerda) de expressão1 for 0, e preenchidos com 1 se o bit mais significativo for 1. O deslocamento de um valor em uma posição para a direita equivale à divisão por 2 e ao descarte do resto. Exemplo O exemplo a seguir converte 65535 em um inteiro de 32 bits e o desloca 8 bits para a direita. x = 65535 >> 8 O resultado da operação acima é: x = 255 Isso é porque 65535 decimal é igual a 1111111111111111 binário (dezesseis 1), 1111111111111111 binário deslocado 8 bits para a direita é 11111111 binário e 11111111 binário é 255 decimal. O bit mais significativo é 0, pois os inteiros são de 32 bits, portanto o bit de preenchimento é 0. O exemplo a seguir converte -1 em um inteiro de 32 bits e o desloca 1 bit para a direita. x = -1 >> 1 O resultado da operação acima é: x = -1 Isso é porque -1 decimal é igual a 11111111111111111111111111111111 binário (trinta e dois 1), o deslocamento de um bit para a direita faz com que o bit menos significativo (bit mais à direita) seja descartado e o bit mais significativo seja preenchido com 1. O resultado é 11111111111111111111111111111111 (trinta e dois 1) binário, que representa o inteiro de 32 bits -1. Consulte também >>= (deslocamento para a direita bit a bit e atribuição) >> (deslocamento para a direita bit a bit) 285 >>= (deslocamento para a direita bit a bit e atribuição) Disponibilidade Flash Player 5. Uso expressão1 >= expressão2 Parâmetros expressão1 Número ou expressão a ser deslocada para a esquerda. expressão2 Um número ou expressão que pode ser transformada em um inteiro de 0 a 31. Retorna Nada. Descrição Operador (atribuição composta bit a bit); este operador executa uma operação de deslocamento para direita bit a bit e armazena o conteúdo como um resultado em expressão1. Exemplo As duas expressões a seguir são equivalentes. A <= B A = (A >> B) O código comentado a seguir usa o operador bit a bit (>-). Ele também é um exemplo do uso de todos os operadores bit a bit. function convertToBinary(number){ var result = ""; for (var i=0; i32; i++) { // Extrai o bit menos significativo pelo uso de AND bit a bit var lsb = number & 1; // Adiciona esse bit a nossa seqüência de caracteres de resultado result = (bms ? "1" : "0") + result; // Desloca o número um bit para a direita para ver próximo bit numero >= 1;} return result; } trace(convertToBinary(479)); // Retorna a seqüência de caracteres 00000000000000000000000111011111 //A seqüência de caracteres acima é a representação binária do número decimal // 479 Consulte também << (deslocamento para a esquerda bit a bit) 286 Capítulo 12: Dicionário do ActionScript >>> (deslocamento para a direita bit a bit sem sinal) Disponibilidade Flash Player 5. Uso expression1 >>> expression2 Parâmetros expressão1 Número ou expressão a ser deslocada para a direita. expressão2 Um número ou expressão que pode ser transformada em um inteiro entre 0 e 31. Retorna Nada. Descrição Operador (bit a bit); o mesmo que o operador de deslocamento para a direita bit a bit, exceto que ele não mantém o sinal da expressão original, pois os bits da esquerda sempre são preenchidos com 0. Exemplo O exemplo a seguir converte -1 em um inteiro de 32 bits e o desloca 1 bit para a direita. x = -1 >>> 1 O resultado da operação acima é: x = 2147483647 Isso é porque -1 decimal é 11111111111111111111111111111111 binário (trinta e dois 1) e, quando é deslocado um bit (sem sinal) para a direita, o bit menos significativo (mais à direita) é descartado e o bit mais significativo (mais à esquerda) é preenchido com um 0. O resultado é 01111111111111111111111111111111 binário, que representa o inteiro de 32 bits 2147483647. Consulte também >>= (deslocamento para a direita bit a bit e atribuição) >>> (deslocamento para a direita bit a bit sem sinal) 287 >>>= (deslocamento para a direita bit a bit sem sinal e atribuição) Disponibilidade Flash Player 5. Uso expressão1>>> = expressão2 Parâmetros expressão1 Número ou expressão a ser deslocada para a esquerda. expressão2 Um número ou expressão que pode ser transformada em um inteiro de 0 a 31. Retorna Nada. Descrição Operador (atribuição composta bit a bit); executa uma operação de deslocamento para direita bit a bit não assinada e armazena o conteúdo como um resultado em expressão1. As duas expressões a seguir são equivalentes: A >>>= B A = (A >>> B) Consulte também >>> (deslocamento para a direita bit a bit sem sinal), >>= (deslocamento para a direita bit a bit e atribuição) Classe Accessibility Disponibilidade Flash Player 6. Descrição A classe Accessibility gerencia a comunicação com leitores de tela. Os métodos da classe Accessibility são estáticos, ou seja, não é preciso criar uma instância da classe para usar seus métodos. Para obter e definir propriedades acessíveis para um objeto específico, como um botão, clipe de filme ou campo de texto, use a propriedade global _accProps. Para registrar as alterações feitas nas propriedades de acessibilidade de um objeto usando _accProps com um aplicativo leitor de tela, use o método Accessibility.updateProperties(). Resumo de métodos da classe Accessibility 288 Método Descrição Accessibility.isActive() Indica se um programa leitor de tela está ativo. Accessibility.updateProperties() Atualiza a descrição de objetos na tela para leitores de tela. Capítulo 12: Dicionário do ActionScript Accessibility.isActive() Disponibilidade Flash Player 6. Uso Accessibility.isActive() Parâmetros Nenhum. Retorna Um valor booleano true, se houver clientes ativos do Microsoft Active Accessibility (MSAA), caso contrário, false. Descrição Método; indica se um programa leitor de tela MSAA está ativo no momento. Use este método quando desejar que seu aplicativo tenha um comportamento diferente diante de um leitor de tela. Observação: No Flash Player 6, se este método for chamado dentro de, aproximadamente, um ou dois segundos depois que aparecer pela primeira vez a janela do Flash na qual o seu documento está sendo reproduzido, o valor false poderá ser retornado mesmo que haja um cliente ativo do MSAA. Isso ocorre devido a um mecanismo de comunicação assíncrono entre o Flash e clientes do MSAA. O usuário pode solucionar essa limitação garantindo que vá ocorrer um atraso de um ou dois segundos depois de carregar o documento antes de chamar esse método. Consulte também Accessibility.updateProperties(), _accProps, System.capabilities.hasAccessibility Accessibility.isActive() 289 Accessibility.updateProperties() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Accessibility.updateProperties() Parâmetros Nenhum. Retorna Nada. Descrição Método; faz com que o Flash Player reexamine todas as propriedades de acessibilidade, atualize sua descrição de objetos para leitores de tela e, se necessário, envie eventos para os leitores de tela para indicar que ocorreram alterações. O usuário pode aplicar propriedades de acessibilidade em todo o arquivo SWF ou em um clipe de filme específico e pode defini-las através do painel Acessibility (Acessibilidade) durante a criação e através da variável global _accProps em tempo de execução. Consulte também Accessibility.isActive(), _accProps, System.capabilities.hasAccessibility _accProps Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Consulte também Accessibility.isActive(), Accessibility.updateProperties(), System.capabilities.hasAccessibility 290 Capítulo 12: Dicionário do ActionScript add Disponibilidade Flash Player 4. Uso seq_caract1 add seq_caract2 Parâmetros seqüência de caracteres1, seqüência de caracteres2 Uma seqüência de caracteres. Retorna Nada. Descrição Operador; concatena (combina) duas ou mais seqüências de caracteres. O operador add substitui o operador add (&) do Flash 4. Os arquivos do Flash Player 4 que usam o operador & são convertidos automaticamente para usar o operador add na concatenação de seqüências de caracteres quando trazidos para o ambiente de criação do Flash 5 ou posteriores. Entretanto, o operador add tornou-se obsoleto no Flash Player 5 e a Macromedia recomenda que o operador + seja usado criar conteúdo para o Flash Player 5 ou posteriores. Use o operador add para concatenar seqüências de caracteres se estiver criando conteúdo para o Flash 4 ou versões anteriores do Flash Player. Consulte também + (adição) and Disponibilidade Flash Player 4. Uso condição1 and condição2 Parâmetros condição1,condição2 Condições ou expressões que avaliam como true ou false. Retorna Nada. Descrição Operador; executa uma operação lógica AND no Flash Player 4. Se ambas as expressões forem avaliadas como true, toda a expressão é true. Este operador tornou-se obsoleto no Flash 5, e a Macromedia recomenda que o operador && seja usado. Consulte também && (AND lógico) and 291 Classe Arguments Disponibilidade Flash Player 6. Descrição A classe Arguments é um array que contém os valores passados como parâmetros para qualquer função. Toda vez que uma função é chamada no ActionScript, um objeto Arguments é criado automaticamente para essa função. Além disso, é criada uma variável local, arguments, que permite a consulta ao objeto Arguments. Resumo de propriedades da classe Arguments Propriedade Descrição arguments.callee Refere-se à função sendo chamada. arguments.caller Refere-se ao objeto Arguments da função que chama. arguments.length O número de parâmetros passados para uma função. arguments.callee Disponibilidade Flash Player 5. Uso arguments.callee Descrição Propriedade; refere-se à função que está sendo chamada atualmente. Exemplo É possível usar a propriedade arguments.callee para tornar uma função anônima repetitiva, como no exemplo a seguir: factorial = function (x) { if (x <= 1) { return 1; else { return x * arguments.callee(x-1); } }; A seguir é apresentada uma função repetitiva nomeada: function factorial (x) { if (x <= 1) { return 1; else { return x * factorial(x-1); } } 292 Capítulo 12: Dicionário do ActionScript arguments.caller Disponibilidade Flash Player 6. Uso arguments.caller Descrição Propriedade; refere-se ao objeto Arguments da função chamada. arguments.length Disponibilidade Flash Player 5. Uso arguments.length Descrição Propriedade; o número de parâmetros realmente passados para uma função. Classe Array Disponibilidade Flash Player 5 (tornou-se um objeto nativo no Flash Player 6, o que melhorou significativamente o desempenho). Descrição A classe Array permite acessar e manipular arrays. Uma matriz é um objeto cujas propriedades são identificadas por números que representam suas posições na matriz. Esse número é chamado de índice. Todas as matrizes são de base zero, o que significa que o primeiro elemento na matriz é [0], o segundo é [1], etc. No exemplo a seguir, meu_array contém os meses do ano. meu_array[0] meu_array[1] meu_array[2] meu_array[3] = = = = "Janeiro" "Fevereiro" "Março" "Abril" Para criar um objeto Array, use o construtor new Array() ou o operador de acesso de matriz ([]). Para acessar os elementos de um array, use o operador de acesso de array ([]). Classe Array 293 Resumo de métodos da classe Array Método Descrição Array.concat() Concatena os parâmetros e os retorna como uma nova matriz. Array.join() Reúne todos os elementos de uma matriz em uma seqüência de caracteres. Array.pop() Remove o último elemento de uma matriz e retorna seu valor. Array.push() Adiciona um ou mais elementos ao fim de um array e retorna o novo tamanho do array. Array.reverse() Inverte a direção de uma matriz. Array.shift() Remove o primeiro elemento de uma matriz e retorna seu valor. Array.slice() Extrai uma seção de uma matriz e a retorna como uma nova matriz. Array.sort() Classifica uma matriz no local. Array.sortOn() Classifica uma matriz com base em um campo da matriz. Array.splice() Adiciona e remove elementos de um array. Array.toString() Retorna um valor de seqüência de caracteres que representa os elementos no objeto Array. Array.unshift() Adiciona um ou mais elementos ao início de uma matriz e retorna o novo tamanho da matriz. Resumo de propriedades da classe Array Propriedade Descrição Array.length Um inteiro maior que zero que especifica o número de elementos no array. Construtor da classe Array Disponibilidade Flash Player 5. Uso new Array() new Array(tamanho) new Array(elemento0, elemento1, elemento2,...elementoN) Parâmetros Um inteiro que especifica o número de elementos na matriz. No caso de elementos não contíguos, o parâmetro tamanho especifica o número do índice do último elemento na matriz mais 1. tamanho elemento0...elementoN Uma lista de dois ou mais valores arbitrários. Os valores podem ser números, seqüências de caracteres, objetos ou outras matrizes. O primeiro elemento em uma matriz sempre tem um índice, ou posição 0. 294 Capítulo 12: Dicionário do ActionScript Retorna Nada. Descrição Construtor; permite a criação de uma matriz. É possível usar o construtor para criar diferentes tipos de arrays: um array vazio, um array com tamanho específico mas cujos elementos não possuem valores ou um array cujos elementos possuem valores específicos. Uso 1: Se os parâmetros não forem especificados, será criado um array com tamanho 0. Uso 2: Se apenas um tamanho for especificado, será criado um array com tamanho elementos, sem valores. Uso 3: Se os parâmetros elemento forem usados para especificar os valores, será criado um array com valores específicos. Exemplo Uso 1: O exemplo a seguir cria um novo objeto Array com um tamanho inicial 0. meu_array = new Array(); trace(meu_array.length); // retorna 0 Uso 2: O exemplo a seguir cria um novo objeto Array com um tamanho inicial 4. meu_array = new Array(4); trace(meu_array.length); // retorna 4 Uso 3: O exemplo a seguir cria um novo objeto Array chamado go_gos_array, com tamanho inicial 5. go_gos_array = new Array("Belinda", "Gina", "Kathy", "Charlotte", "Jane"); trace(go_gos_array.length); // retorna 5 trace(go_gos_array.join(", ")); // exibe elementos Os elementos iniciais da matriz go_gos são estes: go_gos_array[0] go_gos_array[1] go_gos_array[2] go_gos_array[3] go_gos_array[4] = = = = = "Belinda"; "Gina"; "Kathy"; "Charlotte"; "Jane"; O código a seguir adiciona um sexto elemento ao array go_gos_array e altera o segundo elemento: go_gos_array[5] = "Donna"; go_gos_array[1] = "Nina" trace(go_gos_array.join(" + ")); Consulte também Array.length, [] (acesso de array) Classe Array 295 Array.concat() Disponibilidade Flash Player 5. Uso meu_array.concat(valor0,valor1,...valorN) Parâmetros valor0,...valorN Números, elementos ou seqüências de caracteres a serem concatenados em uma nova matriz. Retorna Nada. Descrição Método; concatena os elementos especificados nos parâmetros com os elementos em meu_array e cria um novo array. Se os parâmetros valor especificarem uma matriz, os elementos dessa matriz serão concatenados, em vez da própria matriz. O array meu_array permanece inalterado. Exemplo O código a seguir concatena duas matrizes: alpha_array = new Array("a","b","c"); numeric_array = new Array(1,2,3); alphaNumeric_array=alpha_array.concat(numeric_array); trace(alphaNumeric_array); // cria matriz ["a","b","c",1,2,3] O código a seguir concatena três matrizes: num1_array = [1,3,5]; num2_array = [2,4,6]; num3_array = [7,8,9]; nums_array=num1_array.concat(num2_array,num3_array) trace(nums_array); // cria matriz [1,3,5,2,4,6,7,8,9] As matrizes aninhadas não são achatadas da mesma forma que as matrizes comuns. Os elementos de um array aninhado não são desmembrados em elementos separados no array x_array, como pode ser observado no exemplo abaixo: a_array = new Array ("a","b","c"); // 2 e 3 são elementos de uma matriz aninhada n_array = new Array(1, [2, 3], 4); x_array = a_array.concat(n_array); trace(x_array[0]); // "a" trace(x_array[1]); // "b" trace(x_array[2]); // "c" trace(x_array[3]); // "b" trace(x_array[4]); // 2, 3 trace(x_array[5]); // 4 296 Capítulo 12: Dicionário do ActionScript Array.join() Disponibilidade Flash Player 5. Uso meu_array.join([separador]) Parâmetros Um caractere ou uma seqüência de caracteres que separa elementos da matriz na seqüência de caracteres retornada. A omissão desse parâmetro resulta no uso de uma vírgula como separador padrão. separador Retorna String. Descrição Método; converte os elementos de uma matriz em seqüências de caracteres, insere o separador especificado entre eles, concatena esses elementos e retorna a seqüência de caracteres resultante. Um vetor aninhado é sempre separado por vírgulas e não pelo separador definido no método join(). Exemplo O exemplo a seguir cria um array com três elementos: Terra, Lua e Sol. Depois, reúne o array três vezes — primeiro, usando o separador padrão (uma vírgula e um espaço), depois usando um traço e, em seguida, usando um sinal de mais (+) — e os exibe no painel Output (Saída): a_array = new Array("Terra","Lua","Sol") trace(a_array.join()); // retorna Terra, Lua, Sol trace(a_array.join(" - ")); // retorna Terra - Lua - Sol trace(a_array.join(" + ")); // retorna Terra + Lua + Sol Array.join() 297 Array.length Disponibilidade Flash Player 5. Uso meu_array.length Descrição Propriedade; um inteiro maior que zero que especifica o número de elementos no array. Essa propriedade é atualizada automaticamente quando são adicionados novos elementos à matriz. Quando o usuário atribuir um valor ao elemento de um array (por exemplo, meu_array[índice] = valor), se índice for um número e índice+1 for maior do que a propriedade length, a propriedade length será atualizada para índice + 1. Exemplo O código a seguir explica como a propriedade length é atualizada. meu_array = new Array(); trace(meu_array.length); meu_array[0] = 'a'; trace(meu_array.length); meu_array[1] = 'b'; trace(meu_array.length); meu_array[9] = 'c'; trace(meu_array.length); // o tamanho inicial é 0 // meu_array.length é atualizado para 1 // meu_array.length é atualizado para 2 // meu_array.length é atualizado para 10 Array.pop() Disponibilidade Flash Player 5. Uso meu_array.pop() Parâmetros Nenhum. Retorna O valor do último elemento no array especificado. Descrição Método; remove o último elemento de um array e retorna o valor desse elemento. Exemplo O código a seguir cria o array myPets, com quatro elementos, depois remove seu último elemento. myPets = ["gato", "cachorro", "pássaro", "peixe"]; popped = myPets.pop(); trace(popped); // retorna peixe 298 Capítulo 12: Dicionário do ActionScript Array.push() Disponibilidade Flash Player 5. Uso meu_array.push(valor,...) Parâmetros valor Um ou mais valores a serem anexados à matriz. Retorna O tamanho da nova matriz. Descrição Método; adiciona um ou mais elementos ao fim de um array e retorna o novo tamanho do array. Exemplo O exemplo a seguir cria a matriz myPets com dois elementos, gato e cachorro. A segunda linha adiciona dois elementos à matriz. Depois que o método push() for chamado, a variável pushed conterá quatro elementos. Como o método push() retorna o novo tamanho do array, a ação na última linha envia o novo tamanho de myPets (4) para o painel Output (Saída): myPets = ["gato", "cachorro"]; pushed = myPets.push("pássaro", "peixe"); trace(pushed); Array.reverse() Disponibilidade Flash Player 5. Uso meu_array.reverse() Parâmetros Nenhum. Retorna Nada. Descrição Método; reverte a matriz no local. Exemplo O exemplo a seguir mostra o uso deste método. var numbers_array = [1, 2, 3, 4, 5, 6]; trace(numbers_array.join()); //1,2,3,4,5,6 numbers_array.reverse(); trace(numbers_array.join()); // 6,5,4,3,2,1 Array.reverse() 299 Array.shift() Disponibilidade Flash Player 5. Uso meu_array.shift() Parâmetros Nenhum. Retorna O primeiro elemento de uma matriz. Descrição Método; remove o primeiro elemento de uma matriz e retorna esse elemento. Exemplo O código a seguir cria a matriz myPets e, em seguida, remove o primeiro elemento da matriz e o atribui à variável shifted. var myPets_array = ["gato", "cachorro", "pássaro", "peixe"]; shifted = myPets_array.shift(); trace(shifted); // retorna "gato" Consulte também Array.pop() Array.slice() Disponibilidade Flash Player 5. Uso meu_array.slice(início, fim) Parâmetros Um número que especifica o índice do ponto inicial da fatia. Se início for um número negativo, o ponto inicial começará no fim da matriz, onde -1 é o último elemento. início Um número que especifica o índice do ponto final da fatia. Se esse argumento for omitido, a fatia incluirá todos os elementos do início ao fim da matriz. Se fim for um número negativo, o ponto final será especificado a partir do fim da matriz, onde -1 é o último elemento. fim Retorna Uma matriz. Descrição Método; extrai um segmento ou subseqüência de caracteres da matriz e o retorna como uma nova matriz, sem modificar a matriz original. A matriz retornada inclui o elemento início e todos os elementos até, mas não incluindo, o elemento fim. 300 Capítulo 12: Dicionário do ActionScript Array.sort() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 5. Uso meu_array.sort([compareFunction]) Parâmetros Uma função de comparação opcional usada para determinar a ordem de classificação de elementos de uma matriz. Dados os elementos A e B, o parâmetro orderfunc pode ter um dos três seguintes valores: compareFunction • -1 se A aparecer antes de B na seqüência classificada • 0 se A = B • 1 se A aparecer depois de B na seqüência classificada Retorna Nada. Descrição Método; classifica a matriz no local, sem fazer uma cópia. Se o parâmetro compareFunction for omitido, o Flash ordenará as posições dos elementos usando o operador de comparação <. Exemplo O exemplo a seguir usa Array.sort() sem especificar o parâmetro compareFunction: var frutas_array = ["laranjas", "maçãs", "morangos", "abacaxis", "cerejas"]; trace(frutas_array.join()); frutas_array.sort(); trace(frutas_array.join()); Saída: laranjas, maçãs, morangos, abacaxis, cerejas abacaxis, cerejas, laranjas, maçãs, morangos Array.sort() 301 Array.sortOn() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso meu_array.sortOn(nomeCampo) Parâmetros Uma seqüência de caracteres que identifica um campo em um elemento do Array para usar valor de classificação. fieldName Retorna Nenhum. Descrição Método; classifica os elementos de uma matriz com base em um campo da matriz. Se nenhum parâmetro nomeCampo for passado, a função falhará. Se vários parâmetros fieldName forem passados, o primeiro campo será convertido em um valor de seqüência de caracteres e os parâmetros remanescentes serão ignorados. Se algum dos elementos comparados não tiver o campo especificado no parâmetro fieldName, a ordenação adotará o comportamento padrão descrito em Array.sort(). Exemplo O exemplo a seguir cria uma nova matriz e a classifica com base no campo cidade: var rec_array = new Array(); rec_array.push( { nome: "beto", cidade: "olinda", cep: 68144 } ); rec_array.push( { nome: "gregório", cidade: "joão pessoa", cep: 72345 } ); rec_array.push( { nome: "cris", cidade: "boa vista", cep: 94010 } ); for(i=0; i<rec_array.length; i++) { trace(rec_array[i].nome + ", " + rec_array[i].cidade); } // resulta em // beto, olinda // gregório, joão pessoa // cris, boa vista rec_array.sortOn("cidade"); for(i=0; i<rec_array.length; i++) { trace(rec_array[i].nome + ", " + rec_array[i].cidade); } // resulta em // cris, boa vista // gregório, joão pessoa // beto, olinda Consulte também Array.sort() 302 Capítulo 12: Dicionário do ActionScript Array.splice() Disponibilidade Flash Player 5. Uso meu_array.splice(início, deleteCount [, valor0, valor1...valorN]) Parâmetros início O índice do elemento na matriz onde a inserção e/ou exclusão começa. O número de elementos a serem excluídos. Esse número inclui o elemento especificado no parâmetro início. Se não houver valores especificados para deleteCount, o método exclui todos os valores a partir do elemento início até o último elemento na matriz. Se o valor for 0, nenhum elemento será excluído. deleteCount valor Um parâmetro opcional que especifica os valores a serem inseridos no array no ponto de inserção especificado no parâmetro start. Retorna Nada. Descrição Método; adiciona e remove elementos de uma matriz. Esse método modifica a matriz sem fazer uma cópia. Array.splice() 303 Array.toString() Disponibilidade Flash Player 5. Uso meu_array.toString() Parâmetros Nenhum. Retorna Uma seqüência de caracteres. Descrição Método; retorna um valor de seqüência de caracteres que representa os elementos no objeto Array especificado. Todos os elementos do array, iniciando pelo índice 0 e terminando no índice meu_array.length-1, são convertidos em uma seqüência de caracteres concatenados e separados por vírgulas. Exemplo O exemplo a seguir cria meu_array, a converte em uma seqüência de caracteres e exibe 1, 2, 3, 4, 5 no painel Output (Saída). meu_array = new Array(); meu_array[0] = 1; meu_array[1] = 2; meu_array[2] = 3; meu_array[3] = 4; meu_array[4] = 5; trace(meu_array.toString()); Array.unshift() Disponibilidade Flash Player 5. Uso meu_array.unshift(valor1,valor2,...valorN) Parâmetros valor1,...valorN Um ou mais números, elementos ou variáveis a serem inseridos no início da matriz. Retorna O novo tamanho da matriz. Descrição Método; adiciona um ou mais elementos ao início de um array e retorna o novo tamanho do array. 304 Capítulo 12: Dicionário do ActionScript Array() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 5. Uso Array(expressão) Parâmetros expressão Uma expressão a ser convertida em array Retorna Um array, como descrito a seguir. Descrição Função de conversão; cria um novo array vazio, ou converte os elementos especificados em um array. Esse comando é similar à criação de um array usando o construtor Array (consulte “Construtor da classe Array” na página 294). Consulte também Classe Array Array() 305 asfunction Disponibilidade Flash Player 5. Uso asfunction:function,"parâmetro" Parâmetros função Um identificador para uma função. parâmetro function. Uma seqüência de caracteres que é passada para a função identificada no parâmetro Retorna Nada. Descrição Protocolo; um protocolo especial para URLs em campos de texto HTML. Nos campos de texto HTML, o texto pode ter um hiperlink usando a marca A de HTML. O atributo HREF da marca A contém um URL que pode servir para um protocolo padrão como HTTP, HTTPS ou FTP. O protocolo asfunction é um protocolo adicional, específico do Flash, que faz com que o link chame uma função do ActionScript. Exemplo Neste exemplo, a função MyFunc() é definida nas três primeiras linhas de código. A variável textField é associada a um campo de texto HTML. O texto "Clique em mim!" é um hiperlink dentro do campo de texto. A função MyFunc() será chamada quando o usuário clicar no hiperlink: function MyFunc(arg){ trace ("Você me clicou! O parâmetro foi "+arg); } myTextField.htmlText ="<A HREF=\"asfunction:MyFunc,Foo \">Clique em mim!</A>"; Ao clicar no hiperlink, os resultados a seguir são exibidos no painel Output (Saída): Você clicou em mim! 306 O parâmetro foi Foo Capítulo 12: Dicionário do ActionScript Classe Boolean Disponibilidade Flash Player 5 (tornou-se um objeto nativo no Flash Player 6, o que melhorou significativamente o desempenho). Descrição A classe Boolean é um objeto envoltório que funciona da mesma forma que o objeto Boolean padrão do JavaScript. Use a classe Boolean para recuperar o tipo de dados primitivo ou a representação de uma seqüência de caracteres de um objeto Boolean. Use o construtor new Boolean() para criar um objeto Boolean antes de chamar seus métodos. Resumo de métodos da classe Boolean Método Descrição Boolean.toString() Retorna uma seqüência de caracteres (true ou false) que representa o valor do objeto Boolean. Boolean.valueOf() Retorna o tipo de valor primitivo do objeto Boolean especificado. Construtor da classe Boolean Disponibilidade Flash Player 5. Uso new Boolean(x) Parâmetros x Qualquer expressão. Este parâmetro é opcional. Retorna Nada. Descrição Construtor; cria um objeto Boolean. Se o parâmetro x for omitido, o objeto Boolean será inicializado com um valor false. Caso especifique um valor para o parâmetro x, o método o avalia e retorna o resultado como um valor booleano de acordo com as regras estabelecidas na função Boolean(). Observação: Para manter a compatibilidade com o Flash Player 4, a manipulação de seqüências de caracteres pela classe Boolean não usa o padrão ECMA-262. Exemplo O código a seguir cria um novo objeto Boolean vazio denominado myBoolean. myBoolean = new Boolean(); Classe Boolean 307 Boolean.toString() Disponibilidade Flash Player 5. Uso myBoolean.toString() Parâmetros Nenhum. Retorna Um valor booleano. Descrição Método; retorna a representação da seqüência de caracteres (true ou false) do objeto Boolean. Boolean.valueOf() Disponibilidade Flash Player 5. Uso myBoolean.valueOf() Parâmetros Nenhum. Retorna Um valor booleano. Descrição Método; retorna o tipo de valor primitivo do objeto Boolean especificado. 308 Capítulo 12: Dicionário do ActionScript Boolean() Disponibilidade Flash Player 5. Uso Booleano(expressão) Parâmetros expressão Uma expressão a ser convertida em um valor booleano. Retorna Um valor booleano ou a expressão do valor, como descrito a seguir. Descrição Função; converte a expressão do parâmetro em um valor booleano e retorna um valor da seguinte maneira: • Se expressão for um valor booleano, o valor de retorno será expressão. • Se expressão for um número e esse não for zero, o valor de retorno será true, caso contrário, • • • o valor de retorno será false. Se expressão for uma seqüência de caracteres, o método toNumber será chamado e o valor de retorno será true se o número não for zero, caso contrário, o valor de retorno será false. Se expressão for indefinida, o valor de retorno será false. Se expressão for um clipe de filme ou um objeto, o valor de retorno será true. Consulte também Classe Boolean Boolean() 309 break Disponibilidade Flash Player 4. Uso break Parâmetros Nenhum. Retorna Nada. Descrição Comando; é exibido em um loop (for, for..in, do while ou while) ou em um bloco de comandos associados a um case em uma ação switch. A ação break instrui o Flash a ignorar o resto do corpo do loop, parar a ação de loop e executar o comando após o comando loop. Ao usar a ação break, o interpretador Flash ignora o resto dos comandos nesse bloco case e vai para o primeiro comando subseqüente à ação switch anexada. Use a ação break para interromper uma série de loops aninhados. Exemplo O exemplo a seguir usa a ação break para sair de um loop infinito. i = 0; while (true) { if (i >= 100) { break; } i++; } Consulte também break, for, for..in, do while, while, switch, case 310 Capítulo 12: Dicionário do ActionScript Classe Button Disponibilidade Flash Player 6. Descrição Todos os símbolos de botão em um arquivo SWF são instâncias do objeto Button. É possível dar um nome de instância a um botão no inspetor Property (Propriedades) e usar os métodos e as propriedades da classe Button para manipular botões com o ActionScript. Nomes de instância de botão são exibidos no Movie Explorer e na caixa de diálogo Inserir caminho de destino no painel Actions. A classe Button herda da Classe Object. Resumo de métodos da classe Button Método Descrição Button.getDepth() Retorna a profundidade de uma instância de botão. Resumo de propriedades da classe Button Propriedade Descrição Button._alpha O valor de transparência de uma instância de botão. Button.enabled Indica se o botão está ativo. Button._focusrect Indica se um botão focalizado tem um retângulo amarelo em volta dele. Button._height A altura de uma instância de botão, em pixels. Button._highquality O nível de eliminação de serrilhado aplicado ao arquivo SWF atual. Button.menu Associa um objeto ContextMenu ao objeto Button Button._name O nome de uma instância de botão. Button._parent Uma referência ao clipe de filme ou objeto que contém o clipe de filme ou objeto atual. Button._quality Indica a qualidade de renderização do arquivo SWF. Button._rotation O grau de rotação de uma instância de botão. Button._soundbuftime Número de segundos para que um som seja pré-carregado. Button.tabEnabled Indica se um botão está incluído na ordenação de guia automática. Button.tabIndex Indica a ordem de guias de um objeto. Button._target O caminho de destino de uma instância de botão. Button.trackAsMenu Indica se outros botões podem receber eventos de liberação de mouse. Button._url O URL do arquivo SWF que criou a instância de botão. Button.useHandCursor Indica se, quando o mouse passa sobre um botão, exibe-se a mão indicadora. Classe Button 311 Propriedade Descrição Button._visible Um valor booleano que indica se a instância de botão está oculta ou visível. Button._width A largura de uma instância de botão, em pixels. Button._x A coordenada x de uma instância de botão. Button._xmouse A coordenada x do ponteiro do mouse relativa à instância de um botão. Button._xscale O valor que especifica a porcentagem para o dimensionamento horizontal de uma instância de botão. Button._y A coordenada y de uma instância de botão. Button._ymouse A coordenada y do ponteiro do mouse relativa à instância de um botão. Button._yscale O valor que especifica a porcentagem para o dimensionamento vertical de uma instância de botão. Resumo dos manipuladores de eventos da classe Button Identificador de eventos Descrição Button.onDragOut Chamado quando o botão do mouse é pressionado sobre o botão e, em seguida, o ponteiro é arrastado para fora do botão. Button.onDragOver Chamado quando o usuário pressiona o botão do mouse fora do botão e, em seguida, arrasta o mouse passando sobre o botão. Button.onKeyUp Chamada quando uma tecla é liberada. Button.onKillFocus Chamada quando o foco é removido de um botão. Button.onPress Chamada quando o mouse é pressionado enquanto o ponteiro está sobre um botão. Button.onRelease Chamada quando o mouse é liberado enquanto o ponteiro está sobre um botão. Button.onReleaseOutside Chamada quando o mouse é liberado enquanto o ponteiro está fora de um botão, depois que o botão é pressionado enquanto o ponteiro está dentro do botão. 312 Button.onRollOut Chamada quando o ponteiro rola para fora da área de um botão. Button.onRollOver Chamada quando o ponteiro do mouse rola sobre um botão. Button.onSetFocus Chamada quando um botão tem o foco de entrada e uma tecla é liberada. Capítulo 12: Dicionário do ActionScript Button._alpha Disponibilidade Flash Player 6. Uso my_btn._alpha Descrição Propriedade; o valor da transparência alfa do botão especificado por my_btn. A faixa de valores válidos vai de 0 (totalmente transparente) a 100 (totalmente opaco). O valor padrão é 100. Os objetos em um botão com _alpha definida como 0 são ativos, apesar de invisíveis. Exemplo O código a seguir define a propriedade _alpha de um botão denominado star_btn como 30% quando se clica no botão: on (release) { star_btn._alpha = 30; } Consulte também MovieClip._alpha, TextField._alpha Button.enabled Disponibilidade Flash Player 6. Uso my_btn.enabled Descrição Propriedade; um valor booleano que especifica se um botão está ativado. O valor padrão é true. Button._focusrect Disponibilidade Flash Player 6. Uso my_btn._focusrect Descrição Propriedade; um valor booleano que especifica se um botão tem um retângulo amarelo em volta dele quando tiver foco de teclado. Esta propriedade pode prevalecer sobre a propriedade global _focusrect. Button._focusrect 313 Button.getDepth() Disponibilidade Flash Player 6. Uso my_btn.getDepth() Retorna Um inteiro. Descrição Método; retorna a profundidade de uma instância de botão. Button._height Disponibilidade Flash Player 6. Uso my_btn._height Descrição Propriedade; a altura do botão em pixels. Exemplo O exemplo de código a seguir define a altura e a largura de um botão quando o usuário clicar com o mouse: my_btn._width = 200; my_btn._height = 200; Button._highquality Disponibilidade Flash Player 6. Uso my_btn._highquality Descrição Propriedade (global); especifica o nível de eliminação de serrilhado aplicado ao arquivo SWF atual. Especifique 2 (melhor qualidade) para aplicar alta qualidade com a suavização de bitmap sempre ativada. Especifique 1 (alta qualidade) para aplicar o recurso de eliminação de serrilhado; isso suavizará os bitmaps se o SWF não contiver animação. Especifique 0 (baixa qualidade) para evitar o recurso sem serrilhado. 314 Capítulo 12: Dicionário do ActionScript Exemplo _highquality = 1; Consulte também _quality, toggleHighQuality() Button.menu Disponibilidade Flash Player 7. Uso my_button.menu = contextMenu Parâmetros contextMenu Um objeto ContextMenu. Descrição Propriedade; associa o objeto contextMenu de classe ContextMenu ao objeto botão my_button. A classe ContextMenu permite modificar o menu contextual que aparece quando o usuário clica com o botão direito do mouse (Windows) ou com a tecla Control pressionada (Macintosh) no Flash Player. Exemplo O exemplo a seguir atribui um objeto ContextMenu a um objeto Button denominado save_btn. O objeto ContextMenu conterá um único item de menu, “Salvar...”, com uma função manipuladora de retorno associada denominada execSalvar (não apresentada). var menu_cm = new ContextMenu(); menu_cm.customItems.push(new ContextMenuItem("Salvar...", execSalvar)); function execSalvar(menu, obj) { // o código de "Salvar" vai aqui } save_btn.menu = menu_cm; Consulte também Classe ContextMenu, Classe ContextMenuItem, MovieClip.menu, TextField.menu Button._name Disponibilidade Flash Player 6. Uso my_btn._name Descrição Propriedade; nome da instância do botão especificado por my_btn. Button._name 315 Button.onDragOut Disponibilidade Flash Player 6. Uso my_btn.onDragOut = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o botão do mouse estiver pressionado sobre o botão e o ponteiro rolar para fora do botão. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. 316 Capítulo 12: Dicionário do ActionScript Button.onDragOver Disponibilidade Flash Player 6. Uso my_btn.onDragOver = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o usuário pressiona e arrasta o botão do mouse para fora e sobre o botão. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o manipulador onKeyDown que envia uma ação trace() para o painel Output (Saída): my_btn.onDragOver = function () { trace ("onDragOver chamado"); }; Consulte também Button.onKeyUp Button.onDragOver 317 Button.onKeyDown Disponibilidade Flash Player 6. Uso my_btn.onKeyDown = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando um botão tiver foco de teclado e uma tecla for pressionada. O manipulador de eventos onKeyDown é chamado sem nenhum parâmetro. É possível usar Key.getAscii() e Key.getCode() para definir qual tecla foi pressionada. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output (Saída) é associada ao manipulador onKeyDown. my_btn.onKeyDown = function () { trace ("onKeyDown chamado"); }; Consulte também Button.onKeyUp 318 Capítulo 12: Dicionário do ActionScript Button.onKeyUp Disponibilidade Flash Player 6. Uso my_btn.onKeyUp = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando um botão tiver foco de entrada e uma tecla for liberada. O manipulador de eventos onKeyUp é chamado sem nenhum parâmetro. É possível usar Key.getAscii() e Key.getCode() para definir qual tecla foi pressionada. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output (Saída) é associada ao manipulador onKeyPress. my_btn.onKeyUp = function () { trace ("onKeyUp chamada"); }; Button.onKillFocus Disponibilidade Flash Player 6. Uso my_btn.onKillFocus = function (newFocus) { // seus comandos vão aqui } Parâmetros newFocus O objeto em foco. Retorna Nada. Descrição Manipulador de eventos; chamado quando um botão perde o foco do teclado. O método onKillFocus recebe um parâmetro, newFocus, que é um objeto representando o novo objeto a receber o foco. Se nenhum objeto receber o foco, newFocus conterá o valor null. Button.onKillFocus 319 Button.onPress Disponibilidade Flash Player 6. Uso my_btn.onPress = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando um botão for pressionado. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output (Saída) é associada ao manipulador onPress. my_btn.onPress = function () { trace ("onPress chamado"); }; 320 Capítulo 12: Dicionário do ActionScript Button.onRelease Disponibilidade Flash Player 6. Uso my_btn.onRelease = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado na liberação de um botão. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output (Saída) é associada ao manipulador onRelease. my_btn.onRelease = function () { trace ("onRelease chamado"); }; Button.onRelease 321 Button.onReleaseOutside Disponibilidade Flash Player 6. Uso my_btn.onReleaseOutside = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado na liberação do mouse enquanto o ponteiro estiver fora do botão depois de pressionar o botão enquanto o ponteiro estiver dentro do botão. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output é associada ao manipulador onReleaseOutside. my_btn.onReleaseOutside = function () { trace ("onReleaseOutside chamado"); }; 322 Capítulo 12: Dicionário do ActionScript Button.onRollOut Disponibilidade Flash Player 6. Uso my_btn.onRollOut = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o ponteiro é movido para fora da área de um botão. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output é associada ao manipulador onRollOut. my_btn.onRollOut = function () { trace ("onRollOut chamado"); }; Button.onRollOut 323 Button.onRollOver Disponibilidade Flash Player 6. Uso my_btn.onRollOver = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o ponteiro passa sobre a área de um botão. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo No exemplo a seguir, uma função que envia uma ação trace() para o painel Output é associada ao manipulador onRollOver. my_btn.onRollOver = function () { trace ("onRollOver chamado"); }; Button.onSetFocus Disponibilidade Flash Player 6. Uso my_btn.onSetFocus = function(oldFocus){ // seus comandos vão aqui } Parâmetros oldFocus O objeto a perder o foco de teclado. Retorna Nada. Descrição Manipulador de eventos; chamado quando um botão recebe foco de teclado. O parâmetro oldFocus é o objeto que perde o foco. Por exemplo, se o usuário pressionar a tecla Tab para mover o foco de entrada de um campo de texto para um botão, o parâmetro oldFocus conterá a instância do campo de texto. Se nenhum objeto possuía o foco anteriormente, oldFocus conterá um valor null. 324 Capítulo 12: Dicionário do ActionScript Button._parent Disponibilidade Flash Player 6. Uso my_btn._parent.propriedade _parent.property Descrição Propriedade; uma referência ao clipe de filme ou objeto que contém o clipe de filme ou objeto atual. O objeto atual é aquele que contém o código do ActionScript que faz referência a _parent. Use _parent para especificar um caminho relativo para clipes de filme ou objetos que estiverem acima do clipe de filme ou objeto atual. É possível usar _parent para subir vários níveis na lista de exibição, conforme mostrado a seguir: _parent._parent._alpha = 20; Consulte também MovieClip._parent, _root, targetPath Button._quality Disponibilidade Flash Player 6. Uso my_btn._quality Descrição Propriedade (global); define ou recupera a qualidade de renderização usada para um arquivo SWF. As fontes de dispositivo são sempre serrilhadas, sendo assim não são afetadas pela propriedade _quality. Observação: Embora seja possível especificar esta propriedade para um objeto Button, ela é, na verdade, uma propriedade global e seu valor pode simplesmente ser especificado como _quality. Para obter mais informações, consulte _quality. Button._rotation Disponibilidade Flash Player 6. Uso my_btn._rotation Descrição Propriedade; a rotação do botão, em graus. Button._rotation 325 Button._soundbuftime Disponibilidade Flash Player 6. Uso myButton._soundbuftime Descrição Propriedade (global); um inteiro que especifica o número de segundos em que um som é armazenado em pré-buffer antes de começar a fluir. Observação: Embora seja possível especificar esta propriedade para um objeto Button, ela é, na verdade, uma propriedade global e seu valor pode simplesmente ser especificado como _soundbuftime. Para obter mais informações, consulte _soundbuftime. Button.tabEnabled Disponibilidade Flash Player 6. Uso my_btn.tabEnabled Descrição Propriedade; especifica se my_btn está incluído na ordenação automática de guias. A opção undefined é utilizada por padrão. Se a propriedade tabEnabled for undefined ou true, o objeto será incluído na ordenação automática de guias. Se a propriedade tabIndex também estiver definida com um determinado valor, o objeto será incluído na ordenação personalizada de guias também. Se tabEnabled for false, o objeto não será incluído nem na ordenação de guias automática nem na personalizada, ainda que a propriedade tabIndex seja definida. Consulte também Button.tabIndex, MovieClip.tabEnabled, TextField.tabEnabled 326 Capítulo 12: Dicionário do ActionScript Button.tabIndex Disponibilidade Flash Player 6. Uso my_btn.tabIndex Descrição Propriedade; permite personalizar a ordenação de guias dos objetos em um arquivo SWF. É possível definir a propriedade tabIndex em um botão, clipe de filme ou instância de campo de texto. Por padrão, ela é undefined. Se algum objeto sendo exibido atualmente no arquivo SWF tiver uma propriedade tabIndex, a ordenação automática de guias será desativada e a ordenação de guias passará a ser calculada a partir das propriedades tabIndex dos objetos do SWF. A ordenação personalizada de guias inclui apenas os objetos que têm propriedades tabIndex. A propriedade tabIndex pode ser um inteiro não negativo. Os objetos são ordenados de acordo com suas propriedades tabIndex, em ordem ascendente. Um objeto cujo tabIndex tenha valor 1 precede um objeto com tabIndex com valor 2. Se dois objetos tiverem o mesmo valor tabIndex, aquele que preceder o outro na ordenação de tabulação será undefined. A ordenação de guia personalizada definida pela propriedade tabIndex é flat. Isso significa que as relações hierárquicas de objetos são ignoradas no arquivo SWF. Todos os objetos no SWF com propriedades tabIndex são colocados na ordem de guia. Por sua vez, essa é determinada pela ordem dos valores de tabIndex. Se dois objetos tiverem o mesmo valor tabIndex, o que será posicionado na frente é indefinido. Você não deve usar o mesmo valor de tabIndex para vários objetos. Consulte também Button.tabEnabled, MovieClip.tabChildren, MovieClip.tabEnabled, MovieClip.tabIndex, TextField.tabIndex Button._target Disponibilidade Flash Player 6. Uso myButton._target Descrição Propriedade (somente leitura); retorna o caminho de destino da instância de botão especificada por my_btn. Consulte também targetPath Button._target 327 Button.trackAsMenu Disponibilidade Flash Player 6. Uso my_btn.trackAsMenu Descrição Propriedade; um valor booleano que indica se outros botões ou clipes de filme podem receber eventos de liberação de mouse. Permite a criação de menus. Você pode definir a propriedade trackAsMenu em qualquer botão ou objeto de clipe de filme. Se a propriedade trackAsMenu não existir, o comportamento padrão será false. É possível alterar a qualquer momento a propriedade trackAsMenu; o botão modificado assume o novo comportamento logo em seguida. Consulte também MovieClip.trackAsMenu Button._url Disponibilidade Flash Player 6. Uso my_btn._url Descrição Propriedade (somente leitura); recupera o URL do arquivo SWF que criou o botão. Button.useHandCursor Disponibilidade Flash Player 6. Uso my_btn.useHandCursor Descrição Propriedade; um valor booleano que, quando definido como true (o padrão), indica se um cursor em forma de mão (mão indicadora) será exibido quando o usuário passar o mouse sobre o botão. Se essa propriedade for definida como false, o cursor de seta será usado. Se a qualquer momento a propriedade useHandCursor for alterada; o botão modificado logo assumirá o comportamento do novo cursor. A propriedade useHandCursor pode ser lida de um objeto de protótipo. 328 Capítulo 12: Dicionário do ActionScript Button._visible Disponibilidade Flash Player 6. Uso my_btn._visible Descrição Propriedade; um valor booleano que indica se o botão especificado por my_btn está visível. Os botões invisíveis (propriedade _visible definida como false) são desativados. Consulte também MovieClip._visible, TextField._visible Button._width Disponibilidade Flash Player 6. Uso my_btn._width Descrição Propriedade; a largura do botão, em pixels. Exemplo O exemplo a seguir define as propriedades de altura e de largura de um botão. my_btn._width=200; my_btn._height=200; Consulte também MovieClip._width Button._width 329 Button._x Disponibilidade Flash Player 6. Uso my_btn._x Descrição Propriedade; um inteiro que define a coordenada x de um botão em relação às coordenadas locais do clipe de filme pai. Se um botão estiver na Linha de tempo principal, seu sistema de coordenadas refere-se ao canto superior esquerdo do Palco como (0, 0). Se o botão estiver dentro de outro clipe de filme que tenha transformações, o botão está no sistema de coordenadas local do clipe de filme anexado. Assim, para um clipe de filme girado 90° no sentido anti-horário, o botão embutido herda um sistema de coordenadas que está girado 90° no sentido anti-horário. As coordenadas do botão referem-se à posição do ponto do registro. Consulte também Button._xscale, Button._y, Button._yscale Button._xmouse Disponibilidade Flash Player 6. Uso my_btn._xmouse Descrição Propriedade (somente leitura); retorna a coordenada x da posição do mouse em relação ao botão. Consulte também Button._ymouse 330 Capítulo 12: Dicionário do ActionScript Button._xscale Disponibilidade Flash Player 6. Uso my_btn._xscale Descrição Propriedade; o dimensionamento horizontal do botão conforme aplicado do ponto de registro do mesmo, expresso como uma porcentagem. O ponto de registro padrão é (0,0). Dimensionar o sistema de coordenadas local afeta as configurações da propriedade _x e _y, que são definidas em pixels. Por exemplo, se o clipe de filme pai for redimensionado em 50%, a definição da propriedade _x move um objeto no botão pela metade do número de pixels, tomando como base as dimensões em 100% do SWF. Consulte também Button._x, Button._y, Button._yscale Button._y Disponibilidade Flash Player 6. Uso my_btn._y Descrição Propriedade; a coordenada y do botão em relação às coordenadas locais do clipe de filme pai. Se um botão estiver na Linha de tempo principal, seu sistema de coordenadas irá referir-se ao canto superior esquerdo do Palco como (0, 0). Se o botão estiver dentro de outro clipe de filme que tem transformações, o botão está no sistema de coordenadas local do clipe de filme anexado. Assim, para um clipe de filme girado 90° no sentido anti-horário, o botão embutido herda um sistema de coordenadas que está girado 90° no sentido anti-horário. As coordenadas do botão referem-se à posição do ponto do registro. Consulte também Button._x, Button._xscale, Button._yscale Button._y 331 Button._ymouse Disponibilidade Flash Player 6. Uso my_btn._ymouse Descrição Propriedade (somente leitura); indica a coordenada y da posição do mouse em relação ao botão. Consulte também Button._xmouse Button._yscale Disponibilidade Flash Player 6. Uso my_btn._yscale Descrição Propriedade; o dimensionamento vertical do botão conforme aplicado do ponto de registro do mesmo, expresso como uma porcentagem. O ponto de registro padrão é (0,0). Consulte também Button._y, Button._x, Button._xscale 332 Capítulo 12: Dicionário do ActionScript call() Disponibilidade Flash Player 4. Esta ação tornou-se obsoleta no Flash 5 e a Macromedia recomenda que a ação function seja usada no seu lugar. Uso call(quadro) Parâmetros quadro O identificador ou número de um quadro na Linha de tempo. Retorna Nada. Descrição Ação obsoleta; executa o script no quadro chamado, sem mover a reprodução para esse quadro. As variáveis locais não mais existirão depois da execução do script. Consulte também function, Function.call() Classe Camera Disponibilidade Flash Player 6. Descrição A classe Camera é para ser usada, principalmente, com o Macromedia Flash Communication Server, mas pode ser usada, de uma forma limitada, sem o servidor. A classe Camera permite a captura de vídeo de uma câmera de vídeo conectada ao computador que esteja executando o Macromedia Flash Player—por exemplo, para monitorar um fluxo de vídeo de uma web camera conectada ao seu sistema local. O Flash fornece recursos similares de áudio; para obter mais informações, consulte a entrada Classe Microphone. Para criar ou fazer referência a um objeto Camera, use Camera.get(). Classe Camera 333 Resumo de métodos da classe Camera Método Descrição Camera.get() Retorna um objeto Camera padrão ou especificado, ou null se a câmera não estiver disponível. Camera.setMode() Define aspectos do modo de captura da câmera, incluindo altura, largura e quadros por segundo. Camera.setMotionLevel() Especifica quanto movimento é necessário para chamar Camera.onActivity(true) e quanto tempo deve decorrer sem movimento antes que Camera.onActivity(false) seja chamado. Camera.setQuality() Um inteiro que especifica o valor máximo de largura de banda que um fluxo de saída de vídeo atual pode usar, em bytes por segundo. Resumo de propriedades da classe Camera 334 Propriedade (somente leitura) Descrição Camera.activityLevel A quantidade de movimento que a câmera está detectando. Camera.bandwidth A quantidade máxima de largura de banda que o fluxo de saída de vídeo atual pode usar, em bytes. Camera.currentFps A taxa na qual a câmera está capturando dados, em quadros por segundo. Camera.fps A taxa desejada de captura de dados, em quadros por segundo. Camera.height A altura atual da captura, em pixels. Camera.index O índice da câmera, conforme refletido no array retornado por Camera.names. Camera.motionLevel A quantidade de movimento necessária para chamar Camera.onActivity(true). Camera.motionTimeOut O número de milissegundos entre o momento em que a câmera pára de detectar movimento e o momento em que Camera.onActivity (false) é chamado. Camera.muted Um valor booleano que especifica se o usuário permitiu ou negou o acesso à câmera. Camera.name O nome da câmera conforme especificado pelo hardware da câmera. Camera.names Propriedade de classe; um array de seqüências de caracteres que refletem os nomes de todos os dispositivos de captura de vídeo disponíveis, incluindo placas de vídeo e câmeras. Camera.quality Um inteiro que especifica o nível desejado de qualidade de vídeo, determinado pela quantidade de compactação aplicada a cada quadro de vídeo. Camera.width A largura atual da captura, em pixels. Capítulo 12: Dicionário do ActionScript Resumo de manipuladores de eventos da classe Camera Identificador de eventos Descrição Camera.onActivity Chamado quando a câmera começa ou pára de detectar movimento. Camera.onStatus Chamado quando o usuário permite ou nega o acesso à câmera. Construtor da classe Camera Consulte Camera.get(). Camera.activityLevel Disponibilidade Flash Player 6. Uso câmera_ativa.activityLevel Descrição Propriedade somente de leitura; valor numérico que especifica a quantidade de movimento que a câmera está detectando. Os valores vão de 0 (nenhum movimento detectado) a 100 (grande quantidade de movimento detectada). O valor dessa propriedade pode ajudá-lo a determinar se é necessário passar uma configuração para Camera.setMotionLevel(). Se somente estiver sendo gerado fluxo de vídeo local não compactado, esta propriedade estará definida apenas se uma função tiver sido associada ao manipulador de eventos Camera.onActivity. Do contrário, ela estará indefinida. Consulte também Camera.motionLevel, Camera.setMotionLevel() Camera.activityLevel 335 Camera.bandwidth Disponibilidade Flash Player 6. Uso câmera_ativa.bandwidth Descrição Propriedade somente de leitura; um inteiro que especifica a quantidade máxima de largura de banda que o fluxo de saída de vídeo atual pode usar, em bytes. O valor 0 significa que o vídeo do Flash pode usar toda a largura de banda necessária para manter a qualidade de quadro desejada. Para definir esta propriedade, use Camera.setQuality(). Exemplo O exemplo a seguir carrega outro arquivo SWF se a largura de banda da câmera for de 32 kilobytes ou mais. if(myCam.bandwidth >= 32768){ loadMovie("splat.swf",_root.hiddenvar); } Consulte também Camera.setQuality() Camera.currentFps Disponibilidade Flash Player 6. Uso câmera_ativa.currentFps Descrição Propriedade somente de leitura; a taxa na qual a câmera está capturando dados, em quadros por segundo. Esta propriedade não pode ser alterada. Entretanto, é possível usar o método Camera.setMode() para definir uma propriedade relacionada —Camera.fps— que especifica a taxa máxima de quadros desejada para a captura de dados. Consulte também Camera.fps, Camera.setMode() 336 Capítulo 12: Dicionário do ActionScript Camera.fps Disponibilidade Flash Player 6. Uso câmera_ativa.fps Descrição Propriedade somente de leitura; a taxa máxima desejada para a captura de dados, em quadros por segundo. A taxa máxima possível depende dos recursos da câmera; ou seja, se a câmera não suportar o valor definido aqui, esta taxa de quadros não será alcançada. • Para definir o valor desejado para esta propriedade, use Camera.setMode(). • Para descobrir a taxa na qual a câmera está capturando dados em um determinado instante, use a propriedade Camera.currentFps. Exemplo O exemplo a seguir define a taxa de quadros por segundo da câmera ativa, myCam.fps, como o valor fornecido pela caixa de texto do usuário, this.config.txt_fps. if (this.config.txt_fps != undefined) { myCam.setMode(myCam.width, myCam.height, this.config.txt_fps, false); } Observação: A função setMode não garante a configuração de fps solicitada; ela define a fps solicitada ou a fps mais rápida disponível. Consulte também Camera.currentFps, Camera.setMode() Camera.fps 337 Camera.get() Disponibilidade Flash Player 6. Uso Camera.get([índice]) Observação: A sintaxe correta é Camera.get(). Para atribuir o objeto Camera a uma variável, use uma sintaxe como camera_ativa=Camera.get(). Parâmetros índice Um inteiro opcional maior ou igual a zero que especifica qual câmera selecionar, seguindo o array retornado pela propriedade Camera.names. Para selecionar a câmera padrão (que é o recomendável para a maioria dos aplicativos), omita esse parâmetro. Retorna • Se índice não estiver especificado, este método retorna uma referência à câmera padrão ou, • se ela estiver sendo usada por outro aplicativo, à primeira câmera disponível. Se houver mais de uma câmera instalada, o usuário pode especificar a câmera padrão no painel Camera Settings (Configurações de câmera) do Flash Player. Se não houver câmeras disponíveis ou instaladas, o método retorna null. Se índice estiver especificado, este método retorna uma referência à câmera solicitada ou null se ela não estiver disponível. Descrição Método; retorna uma referência a um objeto Camera para captura de vídeo. Para realmente começar a capturar o vídeo, é necessário conectar o objeto Camera a um objeto Video (consulte Video.attachVideo()). Ao contrário dos objetos criados com o construtor new, várias chamadas para Camera.get() fazem referência à mesma câmera. Assim, se o script contiver as linhas cam1=Camera.get() e cam2=Camera.get(), tanto cam1 quanto cam2 farão referência à mesma câmera (padrão). Em geral, não se deve passar um valor para índice. Simplesmente use Camera.get() para retornar uma referência à câmera padrão. Através do painel Camera settings (Configurações de câmera), que será apresentado posteriormente nesta seção, o usuário pode especificar a câmera padrão que o Flash deve usar. Se você passar um valor para índice, poderá estar tentando fazer referência a uma câmera que não é a preferida do usuário. O índice será usado em casos raros— por exemplo, se o aplicativo estiver capturando vídeo de duas câmeras ao mesmo tempo. Quando um SWF tenta acessar a câmera retornada por Camera.get(), o Flash Player exibe uma caixa de diálogo Privacy (Privacidade) para que o usuário permita ou negue o acesso à câmera. (Certifique-se de que o tamanho do Stage (Palco) seja pelo menos de 215 x 138 pixels. Esse é o tamanho mínimo que o Flash necessita para exibir a caixa de diálogo.) 338 Capítulo 12: Dicionário do ActionScript Quando o usuário responde a esta caixa de diálogo, o manipulador de eventos Camera.onStatus retorna um objeto de informação que indica a resposta do usuário. Para descobrir se o usuário negou ou permitiu acesso à câmera sem processar esse manipulador de eventos, use a propriedade Camera.muted. O usuário também pode especificar configurações permanentes de privacidade para um domínio em particular clicando com o botão direito do mouse (no Windows) ou pressionando Control e clicando com o mouse (no Macintosh) enquanto um SWF estiver sendo executado, escolhendo Settings (Configurações), abrindo o painel Privacy (Privacidade) e selecionando Remember (Lembre-se). Se Camera.get retornar null, a câmera está sendo usada por outro aplicativo ou não há câmeras instaladas no sistema. Para descobrir se há câmeras instaladas, use Camera.names.length. Para exibir o painel Camera Settings (Configurações de câmera) do Flash Player, que permite que o usuário escolha a câmera à qual Camera.get() fará referência, use System.showSettings(3). Lembre-se que a procura de câmeras no hardware é demorada. Depois que o Flash encontrar pelo menos uma câmera, não será feita uma nova busca no hardware pelo tempo que a instância do player estiver ativa. Entretanto, se o Flash não achar nenhuma câmera, ele irá procurar por uma toda vez que Camera.get for chamado. Isso pode ser útil caso um usuário tenha esquecido de conectar a câmera; se o SWF apresentar um botão Try Again (Tente novamente) que chame Camera.get, o Flash poderá achar a câmera sem que o usuário precise reiniciar o SWF. Exemplo O exemplo a seguir captura e exibe vídeo localmente dentro de um objeto Video denominado my_video no Stage (Palco). var my_cam = Camera.get(); my_video.attachVideo(myCam); Consulte também Camera.index, Camera.muted, Camera.names, Camera.onStatus, Camera.setMode(), Video.attachVideo() Camera.get() 339 Camera.height Disponibilidade Flash Player 6. Uso câmera_ativa.height Descrição Propriedade somente de leitura; a altura atual da captura, em pixels. Para definir um valor para essa propriedade, use Camera.setMode(). Exemplo A linha de código a seguir atualiza uma caixa de texto na interface do usuário com o valor da altura atual. _root.txt_height = myCam.height; Veja também o exemplo para Camera.setMode(). Consulte também Camera.setMode(), Camera.width Camera.index Disponibilidade Flash Player 6. Uso câmera_ativa.index Descrição Propriedade somente de leitura; um inteiro maior ou igual a zero que especifica o índice da câmera, seguindo o array retornado por Camera.names. Exemplo O exemplo a seguir obtém a câmera que possui o valor de índice. myCam = Camera.get(índice); Consulte também Camera.get(), Camera.names 340 Capítulo 12: Dicionário do ActionScript Camera.motionLevel Disponibilidade Flash Player 6. Uso câmera_ativa.motionLevel Descrição Propriedade somente de leitura; um valor numérico que especifica a quantidade de movimento necessária para chamar Camera.onActivity(true). Os valores aceitáveis vão de 0 a 100. O valor padrão é 50. O vídeo pode ser exibido independentemente do valor da propriedade motionLevel. Para obter mais informações, consulte Camera.setMotionLevel(). Consulte também Camera.activityLevel, Camera.onStatus, Camera.setMotionLevel() Camera.motionTimeOut Disponibilidade Flash Player 6. Uso câmera_ativa.motionTimeOut Descrição Propriedade somente de leitura; o número de milissegundos entre o momento em que a câmera pára de detectar movimento e o momento em que Camera.onActivity(false) é chamado. O valor padrão é 2000 (2 segundos). Para definir este valor, use Camera.setMotionLevel(). Exemplo O exemplo a seguir define o número de milissegundos entre o momento em que a câmera pára de detectar movimento e o momento em que Camera.onActivity(false) é chamado em 1000 milissegundos ou um segundo. if(myCam.motionTimeOut >= 1000){ myCam.setMotionLevel(myCam.motionLevel, 1000); } Consulte também Camera.onActivity, Camera.setMotionLevel() Camera.motionTimeOut 341 Camera.muted Disponibilidade Flash Player 6. Uso câmera_ativa.muted Descrição Propriedade somente de leitura; um valor booleano que especifica se o usuário negou acesso à câmera (true) ou permitiu acesso (false) no painel Privacy Settings (Configurações de privacidade) do Flash Player. Quando se modifica este valor, Camera.onStatus é invocado. Para obter mais informações, consulte Camera.get(). Exemplo No exemplo a seguir, quando o usuário clica no botão, o Flash publica e reproduz um fluxo ao vivo se a câmera não estiver no modo mudo. on (press) { // Se o usuário coloca a câmera em mudo, exibe informação de off-line. // Caso contrário, publica e reproduz um fluxo ao vivo a partir da câmera. if(myCam.muted) { _root.debugWindow+="Camera off-line." + newline; } else { // Publica os dados da câmera, chamando // a função pubLive() de root. _root.pubLive(); // Reproduz o que estiver sendo publicado chamando // a função playLive() de root. _root.playLive(); } } Consulte também Camera.get(), Camera.onStatus 342 Capítulo 12: Dicionário do ActionScript Camera.name Disponibilidade Flash Player 6. Uso câmera_ativa.name Descrição Propriedade somente de leitura; uma seqüência de caracteres que especifica o nome da câmera atual, como retornado pelo hardware da câmera. Exemplo O exemplo a seguir exibe o nome da câmera padrão no painel Output (Saída). No Windows, esse nome é o mesmo do dispositivo listado na folha de propriedades Scanners and Cameras (Scanners e câmeras). myCam = Camera.get(); trace("O nome da câmera é: " + myCam.name); Consulte também Camera.get(), Camera.names Camera.name 343 Camera.names Disponibilidade Flash Player 6. Uso Camera.names Observação: A sintaxe correta é Camera.names. Para atribuir o valor de retorno a uma variável, use uma sintaxe do tipo cam_array=Camera.names. Para determinar o nome da câmera atual, use câmera_ativa.name. Descrição Propriedade de classe somente de leitura; recupera um array de seqüências de caracteres que refletem os nomes de todas as câmeras disponíveis sem exibir o painel Privacy Settings (Configurações de privacidade) do Flash Player. Esse array tem o mesmo comportamento que qualquer outro array do ActionScript: fornece implicitamente o índice (que inicia em zero) de cada câmera e o número de câmeras no sistema (através de Camera.names.length). Para obter mais informações, consulte a entrada da Classe Array. Para chamar a propriedade Camera.names, é necessária uma busca extensiva no hardware, e a construção do array pode demorar alguns segundos. Na maioria dos casos, é possível usar diretamente a câmera padrão. Exemplo O exemplo a seguir usa a câmera padrão, a menos que haja mais de uma câmera disponível. Nesse caso, o usuário pode escolher qual câmera definir como padrão. cam_array = Camera.names; if (cam_array.length == 1){ Camera.get(); } else System.showSettings(3); Camera.get(); Consulte também Camera.get(), Camera.index, Camera.name 344 Capítulo 12: Dicionário do ActionScript Camera.onActivity Disponibilidade Flash Player 6. Uso câmera_ativa.onActivity = function(atividade) { // seus comandos vão aqui } Parâmetros Um valor booleano definido como true quando a câmera começa a detectar movimento e como false quando ela pára. activity Retorna Nada. Descrição Manipulador de eventos; chamado quando a câmera começa ou pára de detectar movimento. Caso deseje responder a esse manipulador de eventos, será necessário criar uma função para processar o valor atividade. Para especificar a quantidade de movimento necessária para chamar Camera.onActivity(true) e a quantidade de tempo que deve decorrer sem atividade antes de chamar Camera.onActivity(false), use Camera.setMotionLevel(). Exemplo O exemplo a seguir exibe true ou false no painel Output (Saída) quando a câmera começa ou pára de detectar movimento. // Assume que um objeto Video chamado "myVideoObject" está no Stage (Palco) c = Camera.get(); myVideoObject.attachVideo(c); c.setMotionLevel(10, 500); c.onActivity = function(mode) { trace(mode); }; Consulte também Camera.onActivity, Camera.setMotionLevel() Camera.onActivity 345 Camera.onStatus Disponibilidade Flash Player 6. Uso camera_ativa.onStatus = function(infoObject) { // seus comandos vão aqui } Parâmetros infoObject Um parâmetro definido de acordo com a mensagem de status. Retorna Nada. Descrição Manipulador de eventos; chamado quando o usuário permite ou nega o acesso à câmera. Caso deseje responder a esse manipulador de eventos, será necessário criar uma função para processar o objeto de informação gerado pela câmera. Quando um arquivo SWF tenta acessar a câmera, o Flash Player exibe uma caixa de diálogo Privacy (Privacidade) para que o usuário permita ou negue o acesso. • Se o usuário permitir acesso, a propriedade Camera.muted será definida como false e esse • manipulador será chamado com um objeto de informação cuja propriedade code é Camera.Unmuted. Se o usuário negar acesso, a propriedade Camera.muted será definida como true e esse manipulador será chamado com um objeto de informação cuja propriedade code é Camera.Muted. Para descobrir se o usuário negou ou permitiu acesso à câmera sem processar esse manipulador de eventos, use a propriedade Camera.muted. Observação: Se o usuário escolher permanentemente permitir ou negar acesso para todos os arquivos SWF de um domínio específico, esse manipulador não será chamado para SWFs desse domínio, a menos que o usuário altere posteriormente a configuração de privacidade. Para obter mais informações, consulte Camera.get(). 346 Capítulo 12: Dicionário do ActionScript Exemplo A função de retorno de chamada a seguir exibe uma mensagem sempre que o usuário permitir ou negar acesso à câmera. myCam = Camera.get(); myVideoObject.attachVideo(myCam); myCam.onStatus = function(infoMsg) { if(infoMsg.code == "Camera.Muted"){ trace("O usuário proíbe o acesso à câmera"); } else trace("O usuário permite o acesso à câmera"); } // Altere o valor Allow (Permitir) ou Deny (Proibir) para chamar a função System.showSettings(0); Consulte também Camera.get(), Camera.muted Camera.quality Disponibilidade Flash Player 6. Uso câmera_ativa.quality Descrição Propriedade somente de leitura; um inteiro que especifica o nível desejado de qualidade de vídeo, conforme determinado pela quantidade de compactação aplicada a cada quadro de vídeo. Os valores de qualidade aceitáveis variam de 1 (menor qualidade, máxima compactação) a 100 (maior qualidade, sem compactação). O valor padrão é 0, o que significa que a qualidade do vídeo pode variar conforme o necessário para evitar exceder a largura de banda disponível. Consulte também Camera.setQuality() Camera.quality 347 Camera.setMode() Disponibilidade Flash Player 6. Uso câmera_ativa.setMode(largura, altura, qps [,favorSize]) Parâmetros largura altura A largura solicitada da captura, em pixels. O valor padrão é 160. A altura solicitada da captura, em pixels. O valor padrão é 120. A taxa solicitada na qual a câmera deve capturar os dados, em quadros por segundo. O valor padrão é 15. qps favorSize Um parâmetro booleano opcional que especifica como manipular a largura, altura e taxa de quadros se a câmera não tiver um modo nativo que corresponda aos requisitos especificados. O valor padrão é true, o que significa que é preferível que se mantenha o tamanho da captura; o uso desse parâmetro seleciona o modo que mais se aproxima dos valores largura e altura, mesmo que isso afete negativamente o desempenho reduzindo a taxa de quadros. Para maximizar a taxa de quadros em detrimento da altura e da largura da câmera, passe false para o parâmetro favorSize. Retorna Nada. Descrição Método; define o modo de captura da câmera como o modo nativo que melhor corresponda aos requisitos especificados. Se a câmera não tiver um modo nativo que corresponda a todos os parâmetros passados, o Flash seleciona um modo de captura que melhor sintetize o modo solicitado. Essa manipulação pode envolver o corte da imagem e a eliminação de quadros. Por padrão, o Flash elimina quadros quando necessário para manter o tamanho da imagem. Para minimizar o número de quadros eliminados, mesmo que isso signifique a redução do tamanho da imagem, passe false para o parâmetro favorSize. Ao escolher um modo nativo, o Flash tenta manter a proporção solicitada sempre que possível. Por exemplo, se o comando camera_ativa.setMode(400,400,30) for executado, e os valores máximos de largura e altura disponíveis na câmera forem 320 e 288, o Flash define a largura e a altura como 288. Ao configurar essas propriedades como o mesmo valor, o Flash mantém a proporção 1:1 solicitada. Para determinar os valores atribuídos a estas propriedades depois que o Flash selecionar o modo que mais se aproxime dos valores solicitados, use Camera.width, Camera.height e Camera.fps. 348 Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir define a largura, altura e qps com base na entrada do usuário se ele clicar no botão. O parâmetro opcional favorSize não foi usado porque o valor padrão, true, fornecerá as configurações mais próximas da preferência do usuário sem prejudicar a qualidade do vídeo, embora o qps possa, assim, ser prejudicado. A interface do usuário é, então, atualizada com as novas configurações. on (press) { // Define largura, altura e qps para a entrada do usuário. _root.myCam.setMode(txt_width, txt_height, txt_fps); // Atualiza os campos de texto do usuário com a nova configuração. _root.txt_width = myCam.width; _root.txt_height = myCam.height; _root.txt_fps = myCam.fps; } Consulte também Camera.currentFps, Camera.fps, Camera.height, Camera.width Camera.setMode() 349 Camera.setMotionLevel() Disponibilidade Flash Player 6. Uso câmera_ativa.setMotionLevel(sensibilidade [, tempoLimite]) Parâmetros sensibilidade Um valor numérico que especifica a quantidade de movimento necessária para chamar Camera.onActivity(true). Os valores aceitáveis vão de 0 a 100. O valor padrão é 50. Um parâmetro numérico opcional que especifica quantos milissegundos devem decorrer sem atividade antes do Flash considerar que a atividade foi interrompida e chamar o manipulador de eventos Camera.onActivity(false). O valor padrão é 2000 (2 segundos). tempoLimite Retorna Nada. Descrição Método; especifica quanto movimento é necessário para chamar Camera.onActivity(true). Define opcionalmente o número de milissegundos que devem decorrer sem atividade antes que o Flash considere que o movimento foi interrompido e chamar Camera.onActivity(false). Observação: Pode-se exibir o vídeo independentemente do valor do parâmetro sensibilidade. Esse parâmetro somente determina quando e sob quais circunstâncias Camera.onActivity é chamado, não determina se o vídeo está realmente sendo capturado ou exibido. • Para impedir que a câmera detecte qualquer movimento, passe o valor 100 para sensibilidade; Camera.onActivity • nunca será chamado. Esse valor provavelmente só será usado para fazer testes—por exemplo, para desativar temporariamente quaisquer ações definidas para ocorrer quando Camera.onActivity for chamado. Para descobrir a quantidade de movimento que a câmera está detectando no momento, use a propriedade Camera.activityLevel. Os valores de sensibilidade de movimento correspondem diretamente aos valores de atividade. A total falta de movimento possui um valor de atividade 0. O movimento constante possui um valor de atividade 100. O valor de atividade será menor que o valor de sensibilidade de movimento quando não houver movimento; quando houver movimento, os valores de atividade freqüentemente excederão o valor de sensibilidade de movimento. Este método é semelhante, na sua finalidade, a Microphone.setSilenceLevel(). Ambos são usados para especificar quando o manipulador de eventos onActivity deve ser invocado. Entretanto, esses métodos possuem um impacto significativamente diferente na publicação de fluxos: • • 350 Microphone.setSilenceLevel() foi criado para otimizar a largura de banda. Quando um fluxo de áudio é considerado silencioso, nenhum dado de áudio é enviado. Em vez disso, uma única mensagem é enviada, indicando que o silêncio foi iniciado. Camera.setMotionLevel() foi criado para detectar movimento e não afeta o uso da largura de banda. Mesmo que um fluxo de vídeo não detecte movimento, o vídeo ainda assim é enviado. Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir envia mensagens ao painel Output (Saída) quando a atividade de vídeo inicia ou termina. Altere o valor de sensibilidade de movimento de 30 para um número maior ou menor para ver como os valores diferentes afetam a detecção de movimento. // Assume que um objeto Video chamado "myVideoObject" está no Stage (Palco) c = Camera.get(); x = 0; function motion(mode) { trace(x + ": " + mode); x++; } c.onActivity = function(mode) {motion(mode);}; c.setMotionLevel(30, 500); myVideoObject.attachVideo(c); Consulte também Camera.activityLevel, Camera.motionLevel, Camera.motionTimeOut, Camera.onActivity Camera.setMotionLevel() 351 Camera.setQuality() Disponibilidade Flash Player 6. Uso câmera_ativa.setQuality(larguraBanda, qlddQuadro) Parâmetros Um inteiro que especifica a quantidade máxima de largura de banda que o fluxo de saída de vídeo atual pode usar, em bytes por segundo. Para especificar que o vídeo do Flash use a quantidade de largura de banda necessária para manter o valor de qlddQuadro, passe 0 para larguraBanda. O valor padrão é 16384. larguraBanda Um inteiro que especifica o nível desejado de qualidade de vídeo, conforme determinado pela quantidade de compactação aplicada a cada quadro de vídeo. Os valores aceitáveis variam de 1 (menor qualidade, máxima compactação) a 100 (maior qualidade, sem compactação). Para especificar que a qualidade do vídeo pode variar conforme a necessidade para evitar exceder a largura de banda, passe 0 para qlddQuadro. O valor padrão é 0. qlddQuadro Retorna Nada. Descrição Método; define a quantidade máxima de largura de banda por segundo ou a qualidade de vídeo necessária do fluxo de saída de vídeo atual. Este método geralmente é aplicável somente se o vídeo estiver sendo transmitindo usando-se o Flash Communication Server. Use este método para especificar qual elemento do fluxo de saída de vídeo é mais importante para o seu aplicativo - uso de largura de banda ou qualidade de vídeo. • Para indicar que a prioridade é a largura de banda, passe um valor para larguraBanda e 0 para qlddQuadro. • • 352 O Flash transmitirá vídeo com a melhor qualidade possível dentro da largura de banda especificada. Se necessário, o Flash reduzirá a qualidade do vídeo para evitar que a largura de banda especificada seja excedida. Em geral, quando o movimento aumenta, a qualidade diminui. Para indicar que a qualidade é a prioridade, passe 0 para larguraBanda e um valor numérico para qlddQuadro. O Flash usará a largura de banda necessária para manter a qualidade especificada. Se necessário, o Flash reduzirá a taxa de quadros para manter a qualidade do vídeo. Em geral, quando o movimento aumenta, a largura de banda também aumenta. Para especificar que a largura de banda e a qualidade são igualmente importantes, passe valores numéricos para ambos os parâmetros. O Flash transmitirá vídeo que alcance a qualidade especificada e que não exceda a largura de banda especificada. Se necessário, o Flash reduzirá a taxa de quadros para manter a qualidade de vídeo sem exceder a largura de banda especificada. Capítulo 12: Dicionário do ActionScript Exemplo Os exemplos a seguir ilustram como usar este método para controlar o uso de largura de banda e a qualidade de vídeo. // Garante que não mais de 8192 (8 Kb/segundo) esteja sendo usado para enviar vídeo câmera_ativa.setQuality(8192,0); // Garante que não mais de 8192 (8 Kb/segundo) esteja sendo usado para enviar vídeo // com uma qualidade mínima de 50 câmera_ativa.setQuality(8192,50); // Garante a qualidade mínima de 50, não importa quanta largura de banda seja necessária câmera_ativa.setQuality(0,50); Consulte também Camera.bandwidth, Camera.quality Camera.setQuality() 353 Camera.width Disponibilidade Flash Player 6. Uso câmera_ativa.width Descrição Propriedade somente de leitura; a largura atual da captura, em pixels. Para definir o valor desejado para esta propriedade, use Camera.setMode(). Exemplo A linha de código a seguir atualiza uma caixa de texto na interface do usuário com o valor da largura atual. myTextField.text=myCam.width; Veja também o exemplo para Camera.setMode(). Consulte também Camera.height case Disponibilidade Flash Player 4. Uso case expressão: comandos Parâmetros expressão comandos Qualquer expressão. Qualquer comando. Retorna Nada. Descrição Comando; define uma condição para a ação switch. Os comandos no parâmetro comandos são executados se o parâmetro expressão subseqüente à palavra-chave case for igual ao parâmetro expressão da ação switch que usa a igualdade estrita (===) O uso da ação case fora de um comando switch apresenta erro e o script não é compilado. Consulte também break, default, === (igualdade estrita), switch 354 Capítulo 12: Dicionário do ActionScript chr Disponibilidade Flash Player 4. Esta função foi substituída no Flash 5 por String.fromCharCode(). Uso chr(número) Parâmetros número Um número de código ASCII. Retorna Nada. Descrição Função de seqüência de caracteres; converte código ASCII em caracteres. Exemplo O exemplo a seguir converte o número 65 na letra A e o atribui à variável myVar. myVar = chr(65); Consulte também String.fromCharCode() chr 355 class Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso class nome_classe {} class nome_classe extends nome_classe {} class nome_classe implements nome_interface [, nome_interface... ] {} Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Comando; define uma classe personalizada, que permite instanciar objetos que compartilham métodos e propriedades definidos por você. Por exemplo, se estiver desenvolvendo um sistema de controle de faturas, você poderá criar uma classe faturas que defina todos os métodos e propriedades que todas as faturas devem ter. Em seguida, use o operador new para criar objetos para a fatura. Não é possível aninhar definições de classe; ou seja, não é possível definir classes adicionais dentro de uma definição de classe. Para criar classes baseadas em interfaces, use a palavra-chave implements. Para criar subclasses de uma classe, use a palavra-chave extends. Uma classe pode estender somente uma classe, mas pode implementar várias interfaces. É possível usar implements e extends em um único comando. class c implements interface_i, interface_j //OK class c extends class_d implements interface_i, interface_j class c extends class_d, class_e //não OK //OK Para obter mais informações, consulte Capítulo 9, “Criando classes com o ActionScript 2”, na página 159. 356 Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir cria uma classe chamada Planta. O construtor requer dois parâmetros. // Nome do arquivo Planta.as class Planta { // Define nomes e tipos de propriedades var tipoFolha:String; var estacaoFlor:String; // A linha a seguir é um construtor // pois tem o mesmo nome que a classe function Planta (param_tipoFolha:String, param_estacaoFlor:String) { // Associa os valores passados às propriedades quando um novo objeto Planta é criado tipoFolha = param_tipoFolha; estacaoFlor = param_estacaoFlor; } // Cria métodos para retornar os valores das propriedades, pois as melhores práticas // proíbem referências diretas a uma propriedade de uma classe function getTipoFolha():String {return tipoFolha}; function getEstacaoFlor():String {return estacaoFlor}; } Em um arquivo de script externo ou no painel Actions (Ações), use o operador new para criar um objeto Planta. var pinheiro:Planta = new Planta("Folha perene","N/A"); // Verifique se os parâmetros foram passados corretamente trace(pinheiro.getTipoFolha()); trace(pinheiro.getEstacaoFlor()); Consulte também dynamic, extends, implements, interface, new class 357 clearInterval() Disponibilidade Flash Player 6. Uso clearInterval( intervalID ) Parâmetros intervalID Um objeto retornado de uma chamada para setInterval(). Retorna Nada. Descrição Função; limpa uma chamada para setInterval(). Exemplo O exemplo a seguir em primeiro lugar define uma chamada de intervalo, depois limpa-a: function callback() { trace("interval chamado"); } var intervalID; intervalID = setInterval( callback, 1000 ); // depois de algum tempo clearInterval( intervalID ); Consulte também setInterval() Classe Color Disponibilidade Flash Player 5. Descrição A classe Color define o valor de cor RGB e a transformação de cor de clipes de filmes e recupera esses valores depois da definição. Use o construtor new Color() para criar um objeto Color antes de chamar seus métodos. 358 Capítulo 12: Dicionário do ActionScript Resumo de métodos da classe Color Método Descrição Color.getRGB() Retorna o valor RGB numérico definido pela última chamada setRGB(). Color.getTransform() Retorna a informação de transformação definida pela última chamada setTransform(). Color.setRGB() Define a representação hexadecimal do valor RGB de um objeto Color. Color.setTransform() Define a transformação de cor de um objeto Color. Construtor da classe Color Disponibilidade Flash Player 5. Uso new Color(destino); Parâmetros destino O nome da instância de um clipe de filme. Retorna Nada. Descrição Construtor; cria um objeto Color para o clipe de filme especificado pelo parâmetro destino. Depois será possível usar os métodos desse objeto Color para alterar a cor de todo o clipe de filme de destino. Exemplo O exemplo a seguir cria um objeto Color denominado my_color para o clipe de filme my_mc e define seu valor RGB: my_color = new Color(my_mc); my_color.setRGB(0xff9933); Classe Color 359 Color.getRGB() Disponibilidade Flash Player 5. Uso my_color.getRGB() Parâmetros Nenhum. Retorna Um número que representa o valor numérico RGB para a cor especificada. Descrição Método; retorna os valores numéricos definidos pela última chamada setRGB(). Exemplo O código a seguir recupera o valor RGB do objeto Color my_color, converte-o em uma seqüência de caracteres hexadecimal e a atribui à variável valor. valor = my_color.getRGB().toString(16); Consulte também Color.setRGB() Color.getTransform() Disponibilidade Flash Player 5. Uso my_color.getTransform() Parâmetros Nenhum. Retorna Um objeto cujas propriedades contêm os valores atuais de deslocamento e de porcentagem da cor especificada. Descrição Método; retorna o valor de transformação definido pela última Color.setTransform() chamada. Consulte também Color.setTransform() 360 Capítulo 12: Dicionário do ActionScript Color.setRGB() Disponibilidade Flash Player 5. Uso my_color.setRGB(0xRRGGBB) Parâmetros Cor hexadecimal ou RGB a ser definida. RR, GG e BB consistem cada um em dois dígitos hexadecimais que especifiquem o deslocamento de cada componente de cor. A seqüência 0x informa ao compilador do ActionScript que o número é um valor hexadecimal. 0xRRGGBB Descrição Método; especifica uma cor RGB para um objeto Color. Se esse método for chamado, as configurações anteriores de Color.setTransform() serão substituídas. Retorna Nada. Exemplo Este exemplo define o valor de cor RGB do clipe de filme my_mc. Para observar o funcionamento deste código, coloque um clipe de filme no Stage (Palco) com nome de instância my_mc. Depois, coloque o código a seguir no Frame 1 (Quadro 1) na Timeline (Linha de tempo) principal e escolha Control (Controlar) > Test Movie (Testar filme). my_color = new Color(my_mc); my_color.setRGB(0x993366); Consulte também Color.setTransform() Color.setRGB() 361 Color.setTransform() Disponibilidade Flash Player 5. Uso my_color.setTransform(colorTransformObject) Parâmetros colorTransformObject Um objeto criado com o construtor new Object. Essa instância da Classe Object deve ter as seguintes propriedades que especificam valores de transformação de cor: ra, rb, ga, gb, ba, bb, aa, ab. Essas propriedades são explicadas a seguir. Retorna Nada. Descrição Método; define informações de transformação de cor para um objeto Color. O parâmetro colorTransformObject é um objeto genérico criado a partir do construtor new Object. Ele possui parâmetros que especificam os valores de porcentagem e de deslocamento dos componentes vermelho, verde, azul e alfa (transparência) de uma cor, inseridos no formato 0xRRGGBBAA. Os parâmetros de um objeto de transformação de cor correspondem às configurações na caixa de diálogo Efeito avançado e são definidos da seguinte forma: • • • • • • • • é a porcentagem do componente vermelho (-100 a 100). é o deslocamento do componente vermelho (-255 a 255). ga é a porcentagem do componente verde (-100 a 100). gb é o deslocamento do componente verde (-255 a 255). ba é a porcentagem do componente azul (-100 a 100). bb é o deslocamento do componente azul (-255 a 255). aa é a porcentagem de alfa (-100 a 100). ab é o deslocamento de alfa (-255 a 255). ra rb Crie um parâmetro colorTransformObject desta maneira: myColorTransform = new Object(); myColorTransform.ra = 50; myColorTransform.rb = 244; myColorTransform.ga = 40; myColorTransform.gb = 112; myColorTransform.ba = 12; myColorTransform.bb = 90; myColorTransform.aa = 40; myColorTransform.ab = 70; Além disso, é possível usar a seguinte sintaxe para criar um parâmetro colorTransformObject: myColorTransform = { ra: ‘50’, rb: ‘244’, ga: ‘40’, gb: ‘112’, ba: ‘12’, bb: ‘90’, aa: ‘40’, ab: ‘70’} 362 Capítulo 12: Dicionário do ActionScript Exemplo Este exemplo cria uma nova instância do objeto Color para um SWF específico. Além disso, cria um objeto genérico denominado myColorTransform com as propriedades definidas acima e usa o método setTransform() para passar o colorTransformObject para um objeto Color. Para usar esse código em um documento Flash (FLA), coloque-o no Frame 1 (Quadro 1) na Timeline (Linha do tempo) principal e coloque um clipe de filme no Stage (Palco) com o nome de instância my_mc, como no código a seguir: // Cria um objeto Color chamado my_color no clipe my_mc my_color = new Color(my_mc); // Cria um objeto de transformação de cor chamado myColorTransform usando // o objeto genérico Object myColorTransform = new Object(); // Defina os valores de myColorTransform myColorTransform = { ra: '50', rb: '244', ga: '40', gb: '112', ba: '12', bb: '90', aa: '40', ab: '70'}; // Associe o objeto de transformação de cor ao objeto Color // criado para my_mc my_color.setTransform(myColorTransform); Classe ContextMenu Disponibilidade Flash Player 7. Descrição A classe ContextMenu fornece controle em tempo de execução sobre os itens do menu contextual do Flash Player, que aparece quando um usuário clica com o botão direito do mouse (no Windows) ou pressiona Control e clica com o mouse (no Macintosh) no Flash Player. É possível usar os métodos e propriedades da classe ContextMenu para adicionar itens de menu personalizados, controlar a exibição dos itens internos do menu contextual, por exemplo, Zoom In (Mais zoom) e Print (Imprimir), ou criar cópias de menus. É possível anexar um objeto ContextMenu a um botão, clipe de filme ou objeto de campo de texto específicos, ou a um nível de filme inteiro. Use a propriedade menu das classes Button, MovieClip ou TextField para fazer isso. Para obter mais informações sobre a propriedade menu, consulte Button.menu, MovieClip.menu e TextField.menu. Para adicionar novos itens a um objeto ContextMenu, é possível criar uma instância da classe ContextMenuItem e depois adicionar esse objeto ao array ContextMenu.customItems. Para obter mais informações sobre a criação de itens de menu contextual, consulte a entrada da Classe ContextMenuItem. O Flash Player possui três tipos de menus contextuais: o menu padrão (que aparece quando você clica com o botão direito do mouse no Flash Player), o menu de edição (que aparece quando você clica com o botão direito sobre um campo de texto selecionável ou editável) e um menu de erro (que aparece quando um arquivo SWF falhou ao carregar no Flash Player). Somente os menus padrão e de edição podem ser modificados com a classe ContextMenu. Classe ContextMenu 363 Os itens de menu personalizados sempre aparecem na parte superior do menu contextual do Flash Player, acima de quaisquer itens de menu internos visíveis; uma barra separadora distingue os itens de menu internos dos personalizados. Um menu contextual não pode conter mais de 15 itens de menu personalizados. Use o construtor new ContextMenu() para criar um objeto ContextMenu antes de chamar seus métodos. Resumo de métodos da classe ContextMenu Método Descrição ContextMenu.copy() Retorna uma cópia do objeto ContextMenu especificado. ContextMenu.hideBuiltInItems() Oculta todos os itens internos no menu contextual do Flash Player, exceto Settings e About (Sobre). Resumo de propriedades da classe ContextMenu Propriedade Descrição ContextMenu.builtInItems Um objeto cujos membros correspondem a itens internos do menu contextual. ContextMenu.customItems Um array, indefinido por padrão, que contém objetos ContextMenuItem. Resumo de manipuladores de eventos da classe ContextMenu Propriedade Descrição ContextMenu.onSelect Um manipulador de retorno de chamada que é chamado antes da exibição do menu. Construtor da classe ContextMenu Disponibilidade Flash Player 7. Uso new ContextMenu ([callBackFunction]) Parâmetros callBackFunction Uma referência a uma função que é chamada quando o usuário clica com o botão direito do mouse, ou pressiona Control e clica com o mouse, antes do menu ser exibido. Este parâmetro é opcional. Retorna Nada. 364 Capítulo 12: Dicionário do ActionScript Descrição Construtor; cria um novo objeto ContextMenu. É possível especificar, opcionalmente, um identificador para uma função de retorno de chamada quando o objeto for criado. A função especificada é chamada quando o usuário chama o menu contextual, mas antes que o menu seja realmente exibido. Isso é útil para a personalização de conteúdo do menu com base no estado do aplicativo ou no tipo de objeto (clipe de filme, campo de texto ou botão) em que o usuário clica com o botão direito do mouse ou pressiona Control e clica com o mouse. Para obter mais informações sobre a criação de uma função de retorno de chamada, consulte ContextMenu.onSelect. Exemplo O exemplo a seguir oculta todos os objetos internos no menu contextual. Entretanto, os itens Settings (Configurações) e About (Sobre) ainda aparecem, porque não podem ser desativados. var newMenu = new ContextMenu(); newMenu.hideBuiltInItems(); _root.menu = newMenu; Neste exemplo, a função de retorno de chamada especificada, menuHandler, ativa ou desativa um item de menu personalizado (usando o array ContextMenu.customItems) com base no valor de uma variável booleana denominada showItem. Se ela for false, o item de menu personalizado é desativado; do contrário, ele é ativado. var showItem = false; // Altere para true para ver o efeito my_cm = new ContextMenu(menuHandler); my_cm.customItems.push(new ContextMenuItem("Olá", itemHandler)); function menuHandler(obj, menuObj) { if (showItem == false) { menuObj.customItems[0].enabled = false; } else { menuObj.customItems[0].enabled = true; } } function itemHandler(obj, item) { } _root.menu = my_cm; Consulte também Button.menu, ContextMenu.onSelect, ContextMenu.customItems, ContextMenu.hideBuiltInItems(), MovieClip.menu, TextField.menu Classe ContextMenu 365 ContextMenu.builtInItems Disponibilidade Flash Player 7. Uso my_cm.builtInItems Descrição Propriedade; um objeto que possui as seguintes propriedades booleanas: save, zoom, quality, play, loop, rewind, forward_back e print. Se essas variáveis forem definidas como false, os itens de menu correspondentes serão removidos do objeto ContextMenu especificado. Essas propriedades são enumeráveis e são definidas como true por padrão. Exemplo Neste exemplo, os itens de menu internos Quality (Qualidade) e Print (Imprimir) estão desativados para o objeto ContextMenu, my_cm, que está anexado à Timeline (Linha do tempo) raiz do SWF. var my_cm = new ContextMenu (); my_cm.builtInItems.quality=false; my_cm.builtInItems.print=false; _root.menu = my_cm; No próximo exemplo, um loop for..in enumera todos os nomes e valores dos itens de menu internos do objeto ContextMenu, my_cm. my_cm = new ContextMenu(); for(eachProp in my_cm.builtInItems) { var propName = eachProp; var propValue = my_cm.builtInItems[propName]; trace(propName + ": " + propValue); } 366 Capítulo 12: Dicionário do ActionScript ContextMenu.copy() Disponibilidade Flash Player 7. Uso my_cm.copy() Parâmetros Nenhum. Retorna Um objeto ContextMenu. Descrição Método; cria uma cópia do objeto ContextMenu especificado. A cópia herda todas as propriedades do objeto de menu original. Exemplo Este exemplo cria uma cópia do objeto ContextMenu denominado my_cm cujos itens de menu internos estão ocultos e adiciona um item de menu com o texto “Salvar...”. Ele depois cria uma cópia de my_cm e a atribui à variável clone_cm, que herda todas as propriedades do menu original. my_cm = new ContextMenu(); my_cm.hideBuiltInItems(); my_cm.customItems.push(new ContextMenuItem("Salvar...", saveHandler); function saveHandler (obj, menuItem) { saveDocument(); // função personalizada (não exibida) } clone_cm = my_cm.copy(); ContextMenu.copy() 367 ContextMenu.customItems Disponibilidade Flash Player 7. Uso my_cm.customItems Descrição Propriedade; um array com os objetos ContextMenuItem. Cada objeto no array representa um item de menu contextual definido por você. Use essa propriedade para adicionar, remover ou modificar esses itens de menu personalizados. Para adicionar novos itens de menu, crie primeiro um novo objeto ContextMenuItem e depois adicione-o ao array menu_mc.customItems (usando Array.push(), por exemplo). Para obter mais informações sobre a criação de novos itens de menu, consulte a entrada da Classe ContextMenuItem. Exemplo O exemplo a seguir cria um novo item de menu personalizado denominado menuItem_cm com a legenda “Enviar e-mail” e um manipulador de retorno de chamada denominado emailHandler (não mostrado). O novo item de menu é depois adicionado ao objeto ContextMenu, my_cm, usando o array customItems. E, por fim, o novo menu é anexado a um clipe de filme denominado email_mc. var my_cm = new ContextMenu(); var menuItem_cm = new ContextMenuItem("Enviar e-mail", emailHandler); my_cm.customItems.push(menuItem_cm); email_mc.menu = my_cm; Consulte também Button.menu, 368 Classe ContextMenu, MovieClip.menu, TextField.menu Capítulo 12: Dicionário do ActionScript ContextMenu.hideBuiltInItems() Disponibilidade Flash Player 7. Uso my_cm.hideBuiltInItems() Parâmetros Nenhum. Retorna Nada. Descrição Método; oculta todos os itens de menu internos, exceto Settings (Configuração) e About (Sobre), no objeto ContextMenu especificado. Esse método oculta somente os itens de menu que aparecem no menu contextual padrão; ele não afeta os itens que aparecem nos menus de edição ou de erro. Para obter mais informações sobre os diferentes tipos de menu, consulte a entrada da Classe ContextMenu. Este método funciona definindo todos os membros booleanos de my_cm.builtInItems como false. É possível, seletivamente, tornar um item interno visível definindo seu membro correspondente em my_cm.builtInItems como true (como demonstrado no exemplo a seguir). Exemplo O exemplo a seguir cria um novo objeto ContextMenu denominado my_cm cujos itens de menu internos estão ocultos, exceto para Print (Imprimir). O objeto de menu é anexado à Timeline (Linha de tempo) raiz. my_cm = new ContextMenu(); my_cm.hideBuiltInItems(); my_cm.builtInItems.print = true; _root.menu = my_cm; ContextMenu.hideBuiltInItems() 369 ContextMenu.onSelect Disponibilidade Flash Player 7. Uso my_cm.onSelect = function (item:Object, item_menu:ContextMenu) { // aqui vai o seu código } Parâmetros Uma referência ao objeto (clipe de filme, botão ou campo de texto selecionável) que estava sob o ponteiro do mouse quando o menu contextual do Flash Player foi chamado e cuja propriedade menu é definida como um objeto ContextMenu válido. item item_menu Uma referência ao objeto ContextMenu atribuído à propriedade menu de object. Retorna Nada. Descrição Manipulador de eventos; chamado quando um usuário chama o menu contextual do Flash Player, mas antes do menu ser realmente exibido. Isso permite que o conteúdo do menu contextual seja personalizado com base no estado atual do aplicativo. É possível também especificar o manipulador de retorno de chamada para um objeto ContextMenu quando um novo objeto ContextMenu for construído. Para obter mais informações, consulte a entrada da Classe ContextMenu. Exemplo O exemplo a seguir determina sobre qual tipo de objeto o menu contextual foi chamado. my_cm = new ContextMenu(); menuHandler = function (obj:Object, menu:ContextMenu) { if(obj instanceof MovieClip) { trace("Clipe de filme: " + obj); } if(obj instanceof TextField) { trace("Campo de texto: " + obj); } if(obj instanceof Button) { trace("Botão: " + obj); } } my_cm.onSelect = menuHandler; 370 Capítulo 12: Dicionário do ActionScript Classe ContextMenuItem Disponibilidade Flash Player 7. Descrição Use a classe ContextMenuItem para criar itens de menu personalizados para exibição no menu contextual do Flash Player. Cada objeto ContextMenuItem possui uma legenda (texto) que é exibida no menu contextual e um manipulador de retorno de chamada (uma função) que é chamado quando o item de menu é selecionado. Para adicionar um novo item a um menu contextual, adicione-o ao array customItems de um objeto ContextMenu. É possível ativar ou desativar itens de menu específicos, tornar os itens visíveis ou invisíveis ou alterar a legenda ou o manipulador de retorno de chamada associados a um item de menu. Itens de menu personalizados aparecem na parte superior do menu contextual, acima de todos os itens internos. Uma barra separadora sempre divide itens de menu personalizados de itens internos. É possível adicionar, no máximo, 15 itens personalizados ao menu contextual do Flash Player. Cada item deve conter pelo menos um caractere visível - caracteres de controle, newlines e outros caracteres de espaço em branco são ignorados. Nenhum item pode ter mais de 100 caracteres de comprimento. Os itens idênticos a qualquer outro item de menu interno, ou outro item personalizado, serão ignorados, estando o item correspondente visível ou não. A comparação dos itens de menu não considera maiúsculas e minúsculas, pontuação ou espaço em branco. Nenhuma das seguintes palavras pode aparecer em um item personalizado: Macromedia, Flash Player ou Configurações. Resumo de métodos da classe ContextMenuItem Método Descrição ContextMenuItem.copy() Retorna uma cópia do objeto ContextMenuItem especificado. Resumo de propriedades da classe ContextMenuItem Propriedade Descrição ContextMenuItem.caption Especifica o texto exibido no item de menu. ContextMenuItem.enabled Especifica se o item de menu está ativado ou desativado. ContextMenuItem.separatorBefore Especifica se uma barra separadora deve aparecer acima do item de menu. ContextMenuItem.visible Especifica se o item de menu está visível ou não. Resumo de manipuladores de eventos da classe ContextMenuItem Identificador de eventos Descrição ContextMenuItem.onSelect Chamado quando o item de menu é selecionado. Classe ContextMenuItem 371 Construtor da classe ContextMenuItem Disponibilidade Flash Player 7. Uso new ContextMenuItem(legenda, funçãoCallback, [separadorAntes,] [ativado,] [visível]); Parâmetros legenda Uma seqüência de caracteres que contém o texto associado ao item de menu. funçãoCallback Uma função, definida por você, que é chamada quando o item de menu é selecionado. separadorAntes Um valor booleano que indica se uma barra separadora deve aparecer acima do item de menu no menu contextual. Esse parâmetro é opcional; seu valor padrão é false. Um valor booleano que indica se o item de menu está ativado ou desativado no menu contextual. Esse parâmetro é opcional; seu valor padrão é true. ativado visível Um valor booleano que indica se o item de menu está visível ou invisível. Esse parâmetro é opcional; seu valor padrão é true. Retorna Nada. Descrição Construtor; cria um novo objeto ContextMenuItem que pode ser adicionado ao array ContextMenu.customItems. Exemplo Este exemplo adiciona itens de menu Iniciar e Parar, separados por uma barra, ao objeto ContextMenu, my_cm. A função startHandler() é chamada quando Iniciar é selecionado do menu contextual; stopHandler() é chamada quando Parar é selecionado. O objeto ContextMenu é aplicado à Timeline (Linha de tempo) raiz. my_cm = new ContextMenu(); my_cm.customItems.push(new ContextMenuItem("Iniciar", startHandler)); my_cm.customItems.push(new ContextMenuItem("Parar", stopHandler, true)); function stopHandler(obj, item) { trace("Parando..."); } function startHandler(obj, item) { trace("Iniciando..."); } _root.menu = my_cm; 372 Capítulo 12: Dicionário do ActionScript ContextMenuItem.caption Disponibilidade Flash Player 7. Uso menuItem_cmi.caption Descrição Propriedade; uma seqüência de caracteres que especifica a legenda (texto) do item de menu exibida no menu contextual. Exemplo Este exemplo exibe a legenda do item de menu selecionado (Interromper jogo) no painel Output (Saída). my_cm = new ContextMenu(); menuItem_cmi = new ContextMenuItem("Interromper jogo", onPause); my_cm.customItems. function onPause(obj, menuItem) { trace("Você selecionou: " + menuItem.caption); } ContextMenuItem.copy() Disponibilidade Flash Player 7. Uso menuItem_cmi.copy(); Retorna Um objeto ContextMenuItem. Descrição Método; cria e retorna uma cópia do objeto ContextMenuItem especificado. A cópia inclui todas as propriedades do objeto original. Exemplo Este exemplo cria um novo objeto ContextMenuItem denominado original_cmi com o texto de legenda Pausa e um manipulador de retorno de chamada definido para a função onPause. O exemplo depois cria uma cópia do objeto ContextMenuItem e a atribui à variável copy_cmi. original_cmi = new ContextMenuItem("Pausa", onPause); function onPause(obj, menu) { _root.stop(); } original_cmi.visible = false; copy_cmi = orig_cmi.copy(); ContextMenuItem.copy() 373 ContextMenuItem.enabled Disponibilidade Flash Player 7. Uso menuItem_cmi.enabled Descrição Propriedade; um valor booleano que indica se o item de menu especificado está ativado ou desativado. Por padrão, essa propriedade é true. Exemplo O exemplo a seguir cria um novo item de menu contextual e depois desativa esse item de menu. var saveMenuItem = new ContextMenuItem("Salvar...", doSave); saveMenuItem.enabled = false; 374 Capítulo 12: Dicionário do ActionScript ContextMenuItem.onSelect Disponibilidade Flash Player 7. Uso menuItem_cmi.onSelect = function (obj, menuItem) { // seus comandos vão aqui } Parâmetros Uma referência ao clipe de filme ou Timeline (Linha de tempo), botão ou campo de texto selecionável (editável) que o usuário clicou com o botão direito do mouse ou pressionou Control e clicou com o mouse. obj menuItem Uma referência ao objeto ContextMenuItem selecionado. Retorna Nada. Descrição Manipulador de eventos; chamado quando o item de menu especificado é selecionado no menu contextual do Flash Player. O manipulador de retorno de chamada especificado recebe dois parâmetros: obj, uma referência ao objeto sob o mouse quando o usuário chamou o menu contextual do Flash Player e menuItem, uma referência ao objeto ContextMenuItem que representa o item de menu selecionado. Exemplo O exemplo a seguir atribui uma função ao identificador onSelect para um objeto ContextMenuItem denominado start_cmi. A função exibe a legenda do item de menu selecionado. start_cmi.onSelect = function (obj, item) { trace("Você selecionou: " + item.caption); } Consulte também ContextMenu.onSelect ContextMenuItem.onSelect 375 ContextMenuItem.separatorBefore Disponibilidade Flash Player 7. Uso menuItem_cmi.separatorBefore Descrição Propriedade; um valor booleano que indica se uma barra separadora deve aparecer acima do item de menu especificado. Por padrão, essa propriedade é false. Observação: Uma barra separadora sempre aparece entre os itens de menu personalizados e os itens de menu internos. Exemplo Este exemplo cria três itens de menu rotulados Abrir, Salvar e Imprimir. Uma barra separadora divide os itens Salvar e Imprimir. Os itens de menu são depois adicionados ao array customItems do objeto ContextMenu. E, por fim, o menu é anexado à Timeline (Linha de tempo) raiz do SWF. my_cm = new ContextMenu(); open_cmi = new ContextMenuItem("Abrir", itemHandler); save_cmi = new ContextMenuItem("Salvar", itemHandler); print_cmi = new ContextMenuItem("Imprimir", itemHandler); print_cmi.separatorBefore = true; my_cm.customItems.push(open_cmi, save_cmi, print_cmi); function itemHandler(obj, menuItem) { trace("Você selecionou: " + menuItem.caption); }; _root.menu = my_cm; Consulte também ContextMenu.onSelect ContextMenuItem.visible Disponibilidade Flash Player 7. Uso menuItem_cmi.visible Descrição Propriedade; um valor booleano que indica se o item de menu especificado estará visível quando o menu contextual do Flash Player for exibido. Por padrão, essa propriedade é true. 376 Capítulo 12: Dicionário do ActionScript continue Disponibilidade Flash Player 4. Uso continue Parâmetros Nenhum. Retorna Nada. Descrição Comando; aparece em vários tipos de comandos de loop; em cada um dos tipos tem um comportamento diferente. Em um loop while, continue faz o interpretador do Flash ignorar o resto do corpo do loop e saltar para o início do loop, onde a condição é testada. Em um loop do...while, continue faz o interpretador do Flash ignorar o resto do corpo do loop e saltar para o fim do loop, onde a condição é testada. Em um loop for, continue faz o interpretador do Flash ignorar o resto do corpo do loop e saltar para a avaliação da pós-expressão for do loop. Em um loop for...in, continue faz o interpretador do Flash ignorar o resto do corpo do loop e voltar ao início do loop, onde o próximo valor na enumeração é processado. Consulte também do while, for, for..in, while Classe CustomActions Disponibilidade Flash Player 6. Descrição Os métodos da classe CustomActions permitem que um arquivo SWF que esteja sendo executado na ferramenta de criação do Flash gerencie quaisquer ações personalizadas que estejam registradas com a ferramenta de criação. Um SWF pode instalar e desinstalar ações personalizadas, recuperar a definição XML de uma ação personalizada e recuperar a lista de ações personalizadas registradas. Use esses métodos para montar SWFs que sejam extensões da ferramenta de criação do Flash. Uma extensão como essa poderia, por exemplo, usar o protocolo do aplicativo Flash para navegar em um repositório UDDI e fazer download de serviços da Web na caixa de ferramentas Actions (Ações). Classe CustomActions 377 Resumo de métodos da classe CustomActions Método Descrição CustomActions.get() Lê o conteúdo de um arquivo de definição XML de ações personalizadas. CustomActions.install() Instala um novo arquivo de definição XML de ações personalizadas. CustomActions.list() Retorna uma lista de todas as ações personalizadas registradas. CustomActions.uninstall() Remove um arquivo de definição XML de ações personalizadas. CustomActions.get() Disponibilidade Flash Player 6. Uso CustomActions.get(customActionsName) Parâmetros customActionsName O nome da definição de ações personalizadas a ser recuperada. Retorna Se a definição XML de ações personalizadas for localizada, retornará uma seqüência de caracteres; do contrário, retornará undefined. Descrição Método; lê o conteúdo do arquivo de definição XML de ações personalizadas denominado customActionsName. O nome do arquivo de definições deve ser simples, sem a extensão de arquivo .xml e sem qualquer separador de diretório (':', '/' ou '\'). Se o arquivo de definições especificado por customActionsName não puder ser encontrado, será retornado o valor undefined. Se a definição XML de ações personalizadas especificada pelo parâmetro customActionsName for localizada, ela será lida por inteiro e retornada como uma seqüência de caracteres. 378 Capítulo 12: Dicionário do ActionScript CustomActions.install() Disponibilidade Flash Player 6. Uso CustomActions.install(customActionsName, customXMLDefinition) Parâmetros customActionsName O nome da definição de ações personalizadas a ser instalada. customXMLDefinition O texto da definição XML a ser instalada. Retorna Um valor booleano. Descrição Método; instala um novo arquivo de definição XML de ações personalizadas indicado pelo parâmetro customActionsName. O conteúdo do arquivo é especificado pela seqüência de caracteres customXMLDefinition. O nome do arquivo de definições deve ser simples, sem a extensão de arquivo .xml e sem qualquer separador de diretório (':', '/' ou '\'). Se já existir um arquivo de ações personalizadas com o nome customActionsName, ele será substituído. Se ocorrer um erro durante a instalação, será retornado o valor false; caso contrário, será retornado o valor true para indicar que a ação personalizada foi instalada com êxito. Se o diretório Configuração/ActionsPanel/CustomActions for inexistente quando esse método for chamado, então o diretório será criado. CustomActions.list() Disponibilidade Flash Player 6. Uso CustomActions.list() Parâmetros Nenhum. Retorna Uma matriz. Descrição Método; retorna um objeto Array que contém os nomes de todas as ações personalizadas registradas na ferramenta de criação do Flash. Os elementos do array são nomes simples, sem a extensão de arquivo .xml e sem nenhum separador de diretório (por exemplo, “:”, “/” ou “\”). Se não houver ações personalizadas registradas, list() retornará um array de tamanho zero. Se ocorrer um erro, list() retornará o valor undefined. CustomActions.list() 379 CustomActions.uninstall() Disponibilidade Flash Player 6. Uso CustomActions.uninstall(customActionsName) Parâmetros customActionsName O nome da definição de ações personalizadas a ser desinstalada. Retorna Um valor booleano. Descrição Método; remove o arquivo de definição XML de ações personalizadas denominado customActionsName. O nome do arquivo de definições deve ser simples, sem a extensão de arquivo .xml e sem qualquer separador de diretório (':', '/' ou '\'). Se não forem localizadas ações personalizadas com o nome customActionsName, será retornado o valor false. Se a remoção das ações personalizadas for bem sucedida, será retornado o valor true. 380 Capítulo 12: Dicionário do ActionScript Classe Date Disponibilidade Flash Player 5. Descrição A classe Date permite a recuperação dos valores de data e hora relativos à hora universal (Hora de Greenwich, agora chamada de hora universal ou UTC) ou ao sistema operacional em que o Flash Player está sendo executado. Os métodos da classe Date não são estáticos, mas se aplicam somente à instância individual do objeto Date especificado quando o método é chamado. O método Date.UTC() é uma exceção; ele é estático. A classe Date trata do horário de verão de modo diferente, de acordo com o sistema operacional usado e com a versão do Flash Player. O Flash Player 6 e as versões posteriores gerenciam o horário de verão nos sistemas operacionais a seguir das seguintes maneiras: • Windows—a saída do objeto Date é ajustada automaticamente para o horário de verão. • O objeto Date detecta se o horário de verão está em vigor no local atual. Em caso positivo, ele detecta a data e hora da transição do horário padrão para o horário de verão. Contudo, as datas de mudança atualmente em vigor são aplicadas a datas passadas e futuras, sendo assim, as diferenças de horário de verão podem ser calculadas de forma errada em datas passadas quando o local tiver datas de mudança diferentes. Mac OS X—o objeto Date ajusta automaticamente a saída para horário de verão. No Mac OS X, o banco de dados com as informações de fuso horário é usado para determinar se a diferença de horário de verão deve ser aplicada a alguma data ou hora atual ou passada. O Flash Player 5 gerencia o horário de verão nestes sistemas operacionais da seguinte maneira: • Windows—as regras americanas para o horário de verão são sempre aplicadas, o que leva a mudanças incorretas nos países da Europa e de outras regiões que adotam o horário de verão com horas de transição diferentes das dos Estados Unidos. O Flash detecta corretamente se o horário de verão está em vigor no local atual. Para chamar os métodos da classe Date, é necessário criar primeiro um objeto Date usando o construtor para a classe Date, descrito posteriormente nesta seção. Classe Date 381 Resumo de métodos da classe Date 382 Método Descrição Date.getDate() Retorna o dia do mês de acordo com a hora local. Date.getDay() Retorna o dia da semana de acordo com a hora local. Date.getFullYear() Retorna o ano com quatro dígitos de acordo com a hora local. Date.getHours() Retorna a hora de acordo com a hora local. Date.getMilliseconds() Retorna os milissegundos de acordo com a hora local. Date.getMinutes() Retorna os minutos de acordo com a hora local. Date.getMonth() Retorna o mês de acordo com a hora local. Date.getSeconds() Retorna os segundos de acordo com a hora local. Date.getTime() Retorna o número de milissegundos desde a meia-noite de 1º de janeiro de 1970, hora universal. Date.getTimezoneOffset() Retorna a diferença, em minutos, entre o a hora local do computador e a hora universal. Date.getUTCDate() Retorna o dia (data) do mês de acordo com a hora universal. Date.getUTCDay() Retorna o dia da semana de acordo com a hora universal. Date.getUTCFullYear() Retorna o ano com quatro dígitos de acordo com a hora universal. Date.getUTCHours() Retorna a hora de acordo com a hora universal. Date.getUTCMilliseconds() Retorna os milissegundos de acordo com a hora universal. Date.getUTCMinutes() Retorna os minutos de acordo com a hora universal. Date.getUTCMonth() Retorna o mês de acordo com a hora universal. Date.getUTCSeconds() Retorna os segundos de acordo com a hora universal. Date.getYear() Retorna o ano de acordo com a hora local. Date.setDate() Define o dia do mês de acordo com a hora local. Retorna a nova hora em milissegundos. Date.setFullYear() Define o ano completo de acordo com a hora local. Retorna a nova hora em milissegundos. Date.setHours() Define a hora de acordo com a hora local. Retorna a nova hora em milissegundos. Date.setMilliseconds() Define os milissegundos de acordo com a hora local. Retorna a nova hora em milissegundos. Date.setMinutes() Define os minutos de acordo com a hora local. Retorna a nova hora em milissegundos. Date.setMonth() Define o mês de acordo com a hora local. Retorna a nova hora em milissegundos. Date.setSeconds() Define os segundos de acordo com a hora local. Retorna a nova hora em milissegundos. Capítulo 12: Dicionário do ActionScript Método Descrição Date.setTime() Define a data em milissegundos. Retorna a nova hora em milissegundos. Date.setUTCDate() Define a data de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setUTCFullYear() Define o ano de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setUTCHours() Define a hora de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setUTCMilliseconds() Define os milissegundos de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setUTCMinutes() Define os minutos de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setUTCMonth() Define o mês de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setUTCSeconds() Define os segundos de acordo com a hora universal. Retorna a nova hora em milissegundos. Date.setYear() Define o ano de acordo com a hora local. Date.toString() Retorna uma seqüência de caracteres representando a data e a hora armazenadas no objeto Date especificado. Date.UTC() Retorna o número de milissegundos entre a meia-noite de 1º de janeiro de 1970, hora universal, e a hora especificada. Construtor da classe Date Disponibilidade Flash Player 5. Uso new Date() new Date(ano [, mês [, data [, hora [, minutos [, segundos [, milissegundos ]]]]]) Classe Date 383 Parâmetros ano Um valor de 0 a 99 indica 1900 a 1999; caso contrário, especifique todos os 4 dígitos do ano. mês Um inteiro entre 0 (janeiro) e 11 (dezembro). data Um inteiro de 1 a 31. Este parâmetro é opcional. hora Um inteiro entre 0 (meia-noite) e 23 (11 p.m.). minuto segundo Um inteiro de 0 a 59. Este parâmetro é opcional. Um inteiro de 0 a 59. Este parâmetro é opcional. milissegundo Um inteiro de 0 a 999. Este parâmetro é opcional. Retorna Nada. Descrição Objeto; constrói um objeto new Date que mantém a data e hora atuais ou a data especificada. Exemplo O exemplo a seguir recupera a data e hora atuais. data_agora = new Date(); O exemplo a seguir cria um novo objeto Date para o dia de nascimento de Beto, 12 de agosto de 1974. Como o parâmetro mês começa em zero, o exemplo usa 7 para o mês, não 8. dataNasc_Beto = new Date (74, 7, 12); O exemplo a seguir cria um novo objeto Date, concatena os valores retornados por Date.getMonth(), Date.getDate() e Date.getFullYear() e exibe-os no campo de texto especificado pela variável date_str. data_hoje = new Date(); data_str = ((data_hoje.getMonth() + 1) + "/" + data_hoje.getDate() + "/" + data_hoje.getFullYear()); 384 Capítulo 12: Dicionário do ActionScript Date.getDate() Disponibilidade Flash Player 5. Uso my_date.getDate() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o dia do mês (um inteiro de 1 a 31) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.getDay() Disponibilidade Flash Player 5. Uso my_date.getDay() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o dia da semana (0 para domingo, 1 para segunda-feira 1, etc.) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.getDay() 385 Date.getFullYear() Disponibilidade Flash Player 5. Uso my_date.getFullYear() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o ano completo (um número de quatro dígitos, por exemplo, 2000) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Exemplo O exemplo a seguir usa o construtor para criar um novo objeto Date e enviar o valor retornado pelo método getFullYear() para o painel Output (Saída): data = new Date(); trace(data.getFullYear()); Date.getHours() Disponibilidade Flash Player 5. Uso my_date.getHours() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna a hora (um inteiro de 0 a 23) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. 386 Capítulo 12: Dicionário do ActionScript Date.getMilliseconds() Disponibilidade Flash Player 5. Uso my_date.getMilliseconds() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna os milissegundos (um inteiro de 0 a 999) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.getMinutes() Disponibilidade Flash Player 5. Uso my_date.getMinutes() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna os minutos (um inteiro de 0 a 59) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.getMinutes() 387 Date.getMonth() Disponibilidade Flash Player 5. Uso my_date.getMonth() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o mês (0 para janeiro, 1 para fevereiro, etc.) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.getSeconds() Disponibilidade Flash Player 5. Uso my_date.getSeconds() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna os segundos (um inteiro de 0 a 59) do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. 388 Capítulo 12: Dicionário do ActionScript Date.getTime() Disponibilidade Flash Player 5. Uso my_date.getTime() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o número de milissegundos desde a meia-noite de 1º de janeiro de 1970, hora universal, do objeto Date especificado. Use este método para representar um instante específico no tempo quando comparar dois ou mais objetos Date. Date.getTimezoneOffset() Disponibilidade Flash Player 5. Uso my_date.getTimezoneOffset() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna a diferença, em minutos, entre a hora local do computador e a hora universal. Exemplo O exemplo a seguir retorna a diferença entre o horário de verão de São Francisco e a hora universal. O horário de verão será incluído no resultado apresentado somente se a data definida no objeto Date constar do período do horário de verão. trace(new Date().getTimezoneOffset()); // o valor 420 é apresentado no painel Output (Saída) // (7 horas * 60 minutos/hora = 420 minutos) // Este é um exemplo de horário de verão do Pacífico (PDT (Pacific Daylight Time) GMT-0700). // O resultado varia em função do local e da hora do ano. Date.getTimezoneOffset() 389 Date.getUTCDate() Disponibilidade Flash Player 5. Uso my_date.getUTCDate() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o dia do mês (um inteiro de 1 a 31) do objeto Date especificado, de acordo com a hora universal. Date.getUTCDay() Disponibilidade Flash Player 5. Uso my_date.getUTCDay() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o dia da semana (0 para domingo, 1 para segunda-feira 1, etc.) do objeto Date especificado, de acordo com a hora universal. 390 Capítulo 12: Dicionário do ActionScript Date.getUTCFullYear() Disponibilidade Flash Player 5. Uso my_date.getUTCFullYear() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o ano com quatro dígitos do objeto Date especificado, de acordo com a hora universal. Date.getUTCHours() Disponibilidade Flash Player 5. Uso my_date.getUTCHours() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna a hora do objeto Date especificado, de acordo com a hora universal. Date.getUTCHours() 391 Date.getUTCMilliseconds() Disponibilidade Flash Player 5. Uso minha_data.getUTCMilliseconds() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna os milissegundos do objeto Date especificado, de acordo com a hora universal. Date.getUTCMinutes() Disponibilidade Flash Player 5. Uso my_date.getUTCMinutes() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna os minutos do objeto Date especificado, de acordo com a hora universal. 392 Capítulo 12: Dicionário do ActionScript Date.getUTCMonth() Disponibilidade Flash Player 5. Uso my_date.getUTCMonth() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o mês (0 para janeiro, 1 para fevereiro e assim por diante) do objeto Date especificado, de acordo com a hora universal. Date.getUTCSeconds() Disponibilidade Flash Player 5. Uso my_date.getUTCSeconds() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna os segundos do objeto Date especificado, de acordo com a hora universal. Date.getUTCSeconds() 393 Date.getYear() Disponibilidade Flash Player 5. Uso my_date.getYear() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o ano do objeto Date especificado, de acordo com a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. O ano é o ano completo menos 1900. Por exemplo, o ano 2000 é representado como 100. Consulte também Date.getFullYear() Date.setDate() Disponibilidade Flash Player 5. Uso my_date.setDate(dia) Parâmetros data Um inteiro de 1 a 31. Retorna Um inteiro. Descrição Método; define o dia do mês do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. 394 Capítulo 12: Dicionário do ActionScript Date.setFullYear() Disponibilidade Flash Player 5. Uso my_Date.setFullYear(ano [, mês [, dia]] ) Parâmetros Um número de quatro dígitos que especifica um ano. Números de dois dígitos não representam anos; por exemplo, 99 não é o ano 1999, mas o ano 99. ano mês Um inteiro entre 0 (janeiro) e 11 (dezembro). Este parâmetro é opcional. dia Um inteiro de 1 a 31. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define o ano do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. Se os parâmetros mês e dia forem especificados, esses também serão definidos para a hora local. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Quando este método é chamado, os outros campos do objeto Date especificado não são modificados, mas Date.getUTCDay() Date.getUTCDay() e Date.getDay() Date.getDay() podem retornar um novo valor se o dia da semana for alterado como resultado da chamada desse método. Date.setHours() Disponibilidade Flash Player 5. Uso my_date.setHours(horas) Parâmetros hora Um inteiro entre 0 (meia-noite) e 23 (11 p.m.). Retorna Um inteiro. Descrição Método; define as horas do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.setHours() 395 Date.setMilliseconds() Disponibilidade Flash Player 5. Uso my_date.setMilliseconds(milissegundos) Parâmetros milissegundos Um inteiro de 0 a 999. Retorna Um inteiro. Descrição Método; define os milissegundos do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.setMinutes() Disponibilidade Flash Player 5. Uso my_date.setMinutes(minutos) Parâmetros minutos Um inteiro de 0 a 59. Retorna Um inteiro. Descrição Método; define os minutos do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. 396 Capítulo 12: Dicionário do ActionScript Date.setMonth() Disponibilidade Flash Player 5. Uso my_Date.setMonth(mês [, dia ]) Parâmetros mês Um inteiro entre 0 (janeiro) e 11 (dezembro). dia Um inteiro de 1 a 31. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define o mês do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.setSeconds() Disponibilidade Flash Player 5. Uso my_date.setSeconds(segundos) Parâmetros segundos Um inteiro de 0 a 59. Retorna Um inteiro. Descrição Método; define os segundos do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.setSeconds() 397 Date.setTime() Disponibilidade Flash Player 5. Uso my_date.setTime(milissegundos) Parâmetros milissegundos Um valor inteiro onde 0 representa 0:00 GMT de 1º jan. 1970. Retorna Um inteiro. Descrição Método; define a data do objeto Date especificado, em milissegundos, desde a meia-noite de 1º de janeiro de 1970, e retorna a nova hora em milissegundos. Date.setUTCDate() Disponibilidade Flash Player 5. Uso my_date.setUTCDate(dia) Parâmetros dia Um inteiro de 1 a 31. Retorna Um inteiro. Descrição Método; define a data do objeto Date especificado, de acordo com a hora universal, e retorna a nova hora em milissegundos. Quando este método é chamado, os outros campos do objeto Date especificado não são modificados, mas Date.getUTCDay() e Date.getDay() podem retornar um novo valor se o dia da semana for alterado como resultado da chamada desse método. 398 Capítulo 12: Dicionário do ActionScript Date.setUTCFullYear() Disponibilidade Flash Player 5. Uso my_date.setUTCFullYear(ano [, mês [, dia]] ) Parâmetros ano O ano especificado com quatro dígitos completos; por exemplo, 2000. mês Um inteiro entre 0 (janeiro) e 11 (dezembro). Este parâmetro é opcional. dia Um inteiro de 1 a 31. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define o ano do objeto Date especificado (my_date), de acordo com a hora universal, e retorna a nova hora em milissegundos. Opcionalmente, este método também pode definir o mês e a data representados pelo objeto Date especificado. Quando este método é chamado, os outros campos do objeto Date especificado não são modificados, mas Date.getUTCDay() e Date.getDay() podem retornar um novo valor se o dia da semana for alterado como resultado da chamada desse método. Date.setUTCHours() Disponibilidade Flash Player 5. Uso my_date.setUTCHours(horas [, minutos [, segundos [, milissegundos]]]) Parâmetros horas Um inteiro entre 0 (meia-noite) e 23 (11 p.m.). minutos Um inteiro de 0 a 59. Este parâmetro é opcional. segundos Um inteiro de 0 a 59. Este parâmetro é opcional. milissegundos Um inteiro de 0 a 999. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define a hora do objeto Date especificado, de acordo com a hora universal, e retorna a nova hora em milissegundos. Date.setUTCHours() 399 Date.setUTCMilliseconds() Disponibilidade Flash Player 5. Uso my_date.setUTCMilliseconds(milissegundos) Parâmetros milissegundos Um inteiro de 0 a 999. Retorna Um inteiro. Descrição Método; define os milissegundos do objeto Date especificado, de acordo com a hora universal, e retorna a nova hora em milissegundos. Date.setUTCMinutes() Disponibilidade Flash Player 5. Uso my_date.setUTCMinutes(minutos [, segundos [, milissegundos]]) Parâmetros minutos Um inteiro de 0 a 59. segundo Um inteiro de 0 a 59. Este parâmetro é opcional. milissegundo Um inteiro de 0 a 999. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define os minutos do objeto Date especificado, de acordo com a hora universal, e retorna a nova hora em milissegundos. 400 Capítulo 12: Dicionário do ActionScript Date.setUTCMonth() Disponibilidade Flash Player 5. Uso my_date.setUTCMonth(mês [, dia]) Parâmetros mês Um inteiro entre 0 (janeiro) e 11 (dezembro). dia Um inteiro de 1 a 31. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define o mês e, opcionalmente, o dia (data), do objeto Date especificado, de acordo com a hora universal, e retorna a nova hora em milissegundos. Quando este método é chamado, os outros campos do objeto Date especificado não são modificados, mas Date.getUTCDay() e Date.getDay() podem retornar um novo valor se o dia da semana for alterado como resultado da especificação de um valor para o parâmetro dia. Date.setUTCSeconds() Disponibilidade Flash Player 5. Uso my_date.setUTCSeconds(segundos [, milissegundos])) Parâmetros segundos Um inteiro de 0 a 59. milissegundos Um inteiro de 0 a 999. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; define os segundos do objeto Date especificado, de acordo com a hora universal, e retorna a nova hora em milissegundos. Date.setUTCSeconds() 401 Date.setYear() Disponibilidade Flash Player 5. Uso my_date.setYear(ano) Parâmetros Se ano for um número inteiro entre 0–99, setYear definirá o ano como 1900 + ano; caso contrário, o ano será o valor do parâmetro ano. ano Retorna Um inteiro. Descrição Método; define o ano do objeto Date especificado, de acordo com a hora local, e retorna a nova hora em milissegundos. A hora local é determinada pelo sistema operacional em que o Flash Player está sendo executado. Date.toString() Disponibilidade Flash Player 5. Uso my_date.toString() Parâmetros Nenhum. Retorna Uma seqüência de caracteres. Descrição Método; retorna, em um formato legível, o valor de uma seqüência de caracteres do objeto Date especificado, e retorna a nova hora em milissegundos. Exemplo O exemplo a seguir retorna as informações no objeto Date dataNasc_date como uma seqüência de caracteres. var dataNasc_date = new Date(74, 7, 12, 18, 15); trace (dataNasc_date.toString()); Saída (para Hora padrão do Pacífico): Seg Ago 12 18:15:00 GMT-0700 1974 402 Capítulo 12: Dicionário do ActionScript Date.UTC() Disponibilidade Flash Player 5. Uso Date.UTC(ano, mês [, data [, hora [, minutos [, segundos [, milissegundos ]]]]]); Parâmetros ano Um número de quatro dígitos; por exemplo, 2000. mês Um inteiro entre 0 (janeiro) e 11 (dezembro). data Um inteiro de 1 a 31. Este parâmetro é opcional. hora Um inteiro entre 0 (meia-noite) e 23 (11 p.m.). minutos Um inteiro de 0 a 59. Este parâmetro é opcional. segundos Um inteiro de 0 a 59. Este parâmetro é opcional. milissegundos Um inteiro de 0 a 999. Este parâmetro é opcional. Retorna Um inteiro. Descrição Método; retorna o número de milissegundos entre a meia-noite de 1º de janeiro de 1970, hora universal, e a hora especificada nos parâmetros. Este é um método estático chamado pelo construtor do objeto Date, não por um objeto Date específico. Este método permite criar um objeto Date que assuma uma hora universal, enquanto o construtor de Date assume a hora local. Exemplo O exemplo a seguir cria um novo objeto Date dataNasc_Beto, definido de acordo com a hora universal. Esta é a variação de hora universal do exemplo usado para o método construtor new Date: DataNasc_Beto = new Date(Date.UTC(1974, 7, 12)); Date.UTC() 403 default Disponibilidade Flash Player 6. Uso default: comandos Parâmetros comandos Qualquer comando. Retorna Nada. Descrição Comando; define o caso padrão de uma ação switch. Os comandos serão executados se o parâmetro expressão da ação switch for diferente (usando a igualdade estrita) de todos os parâmetros expressão que seguem as palavras-chaves de case de uma ação switch. Para ter um case default, não é necessária uma ação switch. Um case default não precisa ser o último da lista. O uso de uma ação default fora de uma ação switch representa um erro e o script não é compilado. Exemplo No exemplo a seguir, a expressão A é diferente das expressões B e D, portanto, o comando que segue a palavra-chave default é executado e a ação trace() é enviada para o painel Output (Saída). switch ( A ) { case B: C; break; case D: E; break; default: trace ("não foi encontrado nenhum caso específico"); } Consulte também switch, case, break 404 Capítulo 12: Dicionário do ActionScript delete Disponibilidade Flash Player 5. Uso delete referência Parâmetros referência O nome da variável ou do objeto a ser eliminado. Retorna Nada. Descrição Operador; elimina o objeto ou a variável especificada pelo parâmetro referência e retorna true se o objeto for excluído com êxito; do contrário, retorna false. Este operador é útil para liberar memória usada pelos scripts. Embora delete seja um operador, normalmente ele é usado como um comando, como no exemplo a seguir: delete x; O operador delete pode falhar e retornar false se o parâmetro de referência não existir ou não puder ser excluído. Objetos e propriedades predefinidos e variáveis declaradas com var não podem ser excluídas. Não é possível usar o operador delete para remover clipes de filme. Exemplo O exemplo a seguir cria um objeto, usa-o e o exclui quando não for mais necessário. account = new Object(); account.name = 'Jon'; account.balance = 10000; delete account; Exemplo O exemplo a seguir exclui uma propriedade de um objeto. // cria um novo objeto "account" account = new Object(); // atribui nome de propriedade a account account.name = 'Jon'; // exclui a propriedade delete account.name; delete 405 Exemplo O exemplo a seguir é outro exemplo de exclusão da propriedade de um objeto. // cria um objeto Array com tamanho 0 meu_array = new Array(); // adiciona um elemento ao array. A propriedade Array.length agora vale 1 my_array[0] = "abc"; // adiciona outro elemento ao array. A propriedade Array.length agora vale 2 my_array[1] = "def"; // adiciona outro elemento ao array. A propriedade Array.length agora vale 3 my_array[2] = "ghi"; // my_array[2] será excluído, mas Array.length não é alterado delete array[2]; trace(my_array.length); O exemplo a seguir ilustra o comportamento de delete em referências de objetos. // cria um novo objeto e atribui a variável ref1 // para fazer referência ao objeto ref1 = new Object(); ref1.name = "Jody"; // copia a variável de referência para uma nova variável // e exclui ref1 ref2 = ref1; delete ref1; Se ref1 não tivesse sido copiada para ref2, o objeto teria sido excluído durante a exclusão de ref1, pois não haveria referências. Se ref2 for excluído, não haverá mais referências ao objeto; ele será eliminado e a memória que estava sendo usada ficará disponível. Consulte também var 406 Capítulo 12: Dicionário do ActionScript do while Disponibilidade Flash Player 4. Uso do { comando(s) } while (condição) Parâmetros condição A condição a ser avaliada. comando(s) O(s) comando(s) a ser(em) executado(s) desde que o parâmetro condição seja avaliado como true. Retorna Nada. Descrição Comando; executa os comandos e, a seguir, avalia a condição do loop, repetindo enquanto a condição for true. Consulte também break, continue do while 407 duplicateMovieClip() Disponibilidade Flash Player 4. Uso duplicateMovieClip(destino, novonome, profundidade) Parâmetros destino novonome O caminho de destino do clipe de filme a ser duplicado. Um identificador exclusivo do clipe de filme duplicado. Um nível de profundidade exclusivo para o clipe de filme duplicado. O nível de profundidade é uma ordem de empilhamento para os clipes de filmes duplicados. Essa ordem de empilhamento é muito parecida com a ordem de empilhamento das camadas na Linha de tempo; os clipes de filmes com um nível de profundidade inferior ficam ocultos abaixo de clipes com uma ordem de empilhamento superior. Deve-se atribuir um nível de profundidade exclusivo para cada clipe de filme duplicado, para evitar que ele substitua arquivos SWF em níveis ocupados. profundidade Retorna Nada. Descrição Função; cria uma instância de um clipe de filme durante a reprodução do SWF. A reprodução em clipes de filme duplicados sempre começa pelo Quadro 1, independente da posição da reprodução no clipe de filme original (ou “pai”). As variáveis no clipe de filme pai não são copiadas para o clipe de filme duplicado. Se o clipe de filme pai for excluído, o clipe de filme duplicado também o será. Use a ação ou método removeMovieClip() para excluir uma instância de clipe de filme criada com duplicateMovieClip(). Exemplo Este comando duplica a instância do clipe de filme flower dez vezes. A variável i é usada para criar um novo nome de instância e uma profundidade exclusiva para cada clipe de filme duplicado. on (release) { amount = 10; while (amount > 0) { duplicateMovieClip (_root.flower, "mc"+i, i); setProperty ("mc"+i, _x, random(275)); setProperty ("mc"+i, _y, random(275)); setProperty ("mc"+i, _alpha, random(275)); setProperty ("mc"+i, _xscale, random(50)); setProperty ("mc"+i, _yscale, random(50)); i++; amount--; } } Consulte também MovieClip.duplicateMovieClip(), removeMovieClip(), MovieClip.removeMovieClip() 408 Capítulo 12: Dicionário do ActionScript dynamic Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso dynamic class nome_classe [ extends nome_classe] {} Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Aplique a palavra-chave dynamic a definições de classes para indicar quais instâncias da classe podem adicionar e acessar propriedades dinâmicas em tempo de execução. A verificação de tipos nessas classes é mais tolerante, pois os membros acessados dentro da definição de classe e nas instâncias das classes não são comparados aos definidos no escopo da classe. Entretanto, os tipos de retorno e os parâmetros das funções que são membros das classes ainda podem ter verificados. Esse comportamento é especialmente útil ao trabalhar com objetos MovieClip, onde há muitas maneiras diferentes de adicionar propriedades e objetos a um clipe de filme dinamicamente, tais como MovieClip.createEmptyMovieClip() e MovieClip.createTextField(). Para obter mais informações, consulte “Criando classes dinâmicas” na página 178. Exemplo No exemplo a seguir, a classe B foi marcada como dinâmica, assim, chamar uma função não declarada na mesma não causará um erro no tempo de compilação. dynamic class B extends A { function B() {/*este é o construtor*/} function m():Number {return 25;} function o(s:String):Void {trace(s);} } Consulte também class dynamic 409 else Disponibilidade Flash Player 4. Uso if (condição){ comandos(s); } else (condição){ comandos(s); } Parâmetros condição Uma expressão que seja avaliada como true ou false. comando(s) comando if Uma série alternativa de comandos a ser executada se a condição especificada no for false. Retorna Nada. Descrição Comando; especifica os comandos a serem executados se a condição no comando if retornar false. Consulte também if 410 Capítulo 12: Dicionário do ActionScript else if Disponibilidade Flash Player 4. Uso if (condição){ comandos(s); } else if (condição){ comandos(s); } Parâmetros condição Uma expressão que seja avaliada como true ou false. comando(s) comando if Uma série alternativa de comandos a ser executada se a condição especificada no for false. Retorna Nada. Descrição Comando; se a condição no comando if inicial retornar false avalia a condição e especifica os comandos a serem executados. Se a condição else if retornar true, o interpretador Flash executará os comandos que seguem a condição entre chaves ({}). Se a condição else if for false, o Flash ignorará os comandos entre chaves e executará os comandos após as chaves. Use a ação else if para criar uma lógica ramificada em seus scripts. Exemplo O exemplo seguinte faz uso de ações else if para verificar se cada lado de um objeto está dentro de um limite específico. // se o objeto ultrapassar os limites, // mande-o de volta e inverta a velocidade de percurso if (this._x>rightBound) { this._x = rightBound; xInc = -xInc; } else if (this._x<leftBound) { this._x = leftBound; xInc = -xInc; } else if (this._y>bottomBound) { this._y = bottomBound; yInc = -yInc; } else if (this._y<topBound) { this._y = topBound; yInc = -yInc; } Consulte também if else if 411 #endinitclip Disponibilidade Flash Player 6. Uso #endinitclip Parâmetros Nenhum. Retorna Nada. Descrição Diretiva do compilador; indica o término de um bloco de ações de inicialização. Exemplo #initclip ...ações de inicialização entram aqui... #endinitclip Consulte também #initclip eq (igual — específico de seqüência de caracteres) Disponibilidade Flash Player 4. Este operador foi substituído no Flash 5 pelo operador == (igualdade). Uso expressão1 eq expressão2 Parâmetros expression1,expression2 Números, seqüências de caracteres ou variáveis. Retorna Nada. Descrição Operador de comparação; avalia se duas expressões são iguais e retorna o valor true se a representação da seqüência de caracteres da expressão1 for igual à representação da seqüência de caracteres da expressão2; caso contrário, a operação retorna o valor false. Consulte também == (igualdade) 412 Capítulo 12: Dicionário do ActionScript Classe Error Disponibilidade Flash Player 7. Descrição Contém informações sobre um erro que ocorreu em um script. É possível criar um objeto Error usando a função construtora Error. Geralmente, um novo objeto Error é "lançado" a partir do interior de um bloco de código try{} e depois é "capturado" por um bloco de código catch{} ou finally{}. É possível também criar uma subclasse da classe Error e lançar instâncias dessa subclasse. Resumo de métodos da classe Error Método Descrição Error.toString() Retorna a representação da seqüência de caracteres do objeto Error. Resumo de propriedades da classe Error Propriedade Descrição Error.message Uma seqüência de caracteres que contém uma mensagem de erro associada a um erro. Error.name Uma seqüência de caracteres que contém o nome do objeto Error. Construtor da classe Error Disponibilidade Flash Player 7. Uso new Error([mensagem]) Parâmetros mensagem Uma seqüência de caracteres associada ao objeto Error; este parâmetro é opcional. Retorna Nada. Descrição Construtor; cria uma nova instância do objeto Error. Se mensagem for especificada, seu valor será atribuído à propriedade Error.message do objeto. Classe Error 413 Exemplo No exemplo a seguir, uma função lança um erro (com uma mensagem especificada) se as duas seqüências de caracteres passadas para ela não forem idênticas. function compareStrings(string_1, string_2) { if(string_1 != string_2) { throw new Error("Strings não coincidem."); } } try { compareStrings("Cão","cão"); } catch (e) { trace(e.toString()); } Consulte também throw, try..catch..finally Error.message Disponibilidade Flash Player 7. Uso myError.message Descrição Propriedade; contém a mensagem associada ao objeto Error. O valor padrão desta propriedade é "Error". É possível dar um valor para a propriedade message ao criar um novo objeto Error, passando a seqüência de caracteres de erro para a função construtora Error. Consulte também throw, try..catch..finally Error.name Disponibilidade Flash Player 7. Uso myError.name Descrição Propriedade; contém o nome do objeto Error. O valor padrão desta propriedade é "Error". Consulte também throw, try..catch..finally 414 Capítulo 12: Dicionário do ActionScript Error.toString() Disponibilidade Flash Player 7. Uso my_err.toString() Retorna Uma seqüência de caracteres. Descrição Método; retorna a seqüência de caracteres "Error" por padrão ou o valor contido em Error.message, se definido. Consulte também Error.message, throw, try..catch..finally escape Disponibilidade Flash Player 5. Uso escape(expressão) Parâmetros expressão A expressão a ser convertida em seqüência de caracteres e codificada em formato de URL. Retorna Nada. Descrição Função; converte o parâmetro em uma seqüência de caracteres e o codifica em formato de URL, onde todos os caracteres que não são alfanuméricos são substituídos por seqüências hexadecimais de %. Exemplo A execução do código a seguir apresenta o resultado Oi%7B%5BMundo%5D%7D. escape("Oi{[Mundo]}"); Consulte também unescape escape 415 eval() Disponibilidade Flash Player 5 ou posterior com funcionalidade completa. Você pode usar a função eval() ao exportar para o Flash Player 4, mas deve usar a notação de barra e só pode acessar variáveis, mas não propriedades ou objetos. Uso eval(expressão) Parâmetros expressão Uma seqüência de caracteres que contém o nome de uma variável, propriedade, objeto ou clipe de filme a ser recuperado. Retorna Nada. Descrição Função; acessa variáveis, propriedades, objetos ou clipes de filmes por nome. Se expressão for uma variável ou propriedade, será retornado o valor da variável ou propriedade. Se expressão for um objeto ou clipe de filme, será retornada uma referência ao objeto ou clipe de filme. Se não for possível encontrar o elemento citado na expressão, será retornado o valor undefined. No Flash 4, eval() era usada para simular arrays; no Flash 5 ou posterior, recomenda-se o uso da classe Array para esse fim. No Flash 4, também é possível usar eval() para definir e recuperar de forma dinâmica o valor de uma variável ou um nome de instância. Porém, também é possível fazer isso através do operador de acesso a matrizes ([]). No Flash 5 e posteriores, não é possível usar eval() para definir e recuperar dinamicamente o valor de uma variável ou nome de instância porque não é possível usar eval() no lado esquerdo de uma equação. Por exemplo, substitua o código eval ("var" + i) = "primeiro"; por este: this["var"+i] = "primeiro" ou este: set ("var" + i, "primeiro"); Exemplo O exemplo a seguir usa eval() para determinar o valor da expressão "trecho" + x. Como o resultado é um nome de variável, trecho3, eval() retorna o valor da variável e o atribui a y: piece3 = "perigoso"; x = 3; y = eval("piece" + x); trace(y); // Saída: perigoso 416 Capítulo 12: Dicionário do ActionScript Consulte também Classe Array extends Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso class nome_classe extends outro_nome_classe interface nome_interface extends outro_nome_interface Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Palavra-chave; define uma classe ou interface como subclasse de outra classe ou interface; a última é a superclasse. A subclasse herda todos os métodos, propriedades, funções e tudo o que for definido na superclasse. Uma classe não pode estender mais de uma classe e uma interface não pode estender mais de uma interface. Se você não fizer uma chamada para o superconstrutor na função construtora de uma subclasse, uma chamada para o construtor de sua superclasse imediata sem parâmetros será automaticamente inserida como o primeiro comando da função. Entretanto, se a superclasse requerer parâmetros em sua definição, deve ser criado um construtor na subclasse e a superclasse com os parâmetros necessários deve ser chamada. Para obter mais informações, consulte “Criando subclasses” na página 167. Exemplo Na classe B definida abaixo, será inserida automaticamente uma chamada para o superconstrutor da classe A, como o primeiro comando da função construtora de B, já que não existe uma chamada nela. class B extends class A { function B() { // este é o construtor super(); // opcional; inserida durante a compilação se houver sido omitida } function m():Number {return 25;} function o(s:String):Void {trace(s);} } Consulte também class, interface extends 417 false Disponibilidade Flash Player 5. Uso false Descrição Constante; um valor booleano único que representa o oposto de true. Consulte também true _focusrect Disponibilidade Flash Player 4. Uso _focusrect = Booleano; Descrição Propriedade (global); especifica se é exibido um retângulo amarelo em volta do botão ou clipe de filme que possui foco de teclado. O valor padrão, true, faz exibir um retângulo amarelo em volta do botão ou clipe de filme com foco no momento quando o usuário pressiona a tecla Tab para navegar pelos objetos em um arquivo SWF. Especifique false se você não desejar exibir o retângulo amarelo. Essa é uma propriedade global que pode ser cancelada para instâncias específicas. Consulte também Button._focusrect, MovieClip._focusrect 418 Capítulo 12: Dicionário do ActionScript for Disponibilidade Flash Player 5. Uso for(início; condição; próxima) { comando(s); } Parâmetros início Uma expressão a ser avaliada antes do início da seqüência de loop, geralmente uma expressão de atribuição. O comando var também é permitido para este parâmetro. condição Uma expressão que seja avaliada como true ou false. A condição é avaliada antes de cada iteração do loop; o loop termina quando a condição é avaliada como false. Uma expressão que é avaliada após cada iteração do loop; geralmente uma expressão de atribuição com os operadores ++ (aumento) ou -- (diminuição). próxima comando(s) Uma instrução ou instruções a ser(em) executada(s) no corpo do loop. Descrição Comando; um construtor de loop que avalia a expressão início (inicialização) uma vez e depois começa a seqüência do loop pelo qual, enquanto condição for avaliada como true, comando será executado e a próxima expressão será avaliada. Algumas propriedades não podem ser enumeradas pelas ações for nem for..in. Por exemplo, os métodos internos da classe Array (Array.sort() e Array.reverse()) não são incluídos na enumeração de um objeto Array e as propriedades de clipe de filme, tais como _x e _y, não são enumeradas. for 419 Exemplo O exemplo a seguir usa for para adicionar os elementos a uma matriz: my_array=new Array(); for(i=0; i < 10; i++) { my_array [i] = (i + 5)*10; trace(my_array[i]); } Os seguintes resultados são exibidos no painel Output (Saída): 50 60 70 80 90 100 110 120 130 140 O exemplo a seguir mostra o uso de for para executar a mesma ação repetidamente. No código abaixo, o loop for adiciona os números de 1 a 100. var sum = 0; for (var i=1; i<=100; i++) { soma = soma + i; } Consulte também ++ (incremento), –– (decremento), for..in, var 420 Capítulo 12: Dicionário do ActionScript for..in Disponibilidade Flash Player 5. Uso for(variableIterant in objeto){ comando(s); } Parâmetros O nome de uma variável que age como iterando, fazendo referência a cada propriedade de um objeto ou elemento em uma matriz. variableIterant objeto O nome de um objeto a ser repetido. comando(s) Uma instrução a ser executada para cada iteração. Retorna Nada. Descrição Comando; realiza uma passagem pelas propriedades de um objeto ou elemento em um array e executa o comando para cada propriedade de um objeto. Algumas propriedades não podem ser enumeradas pelas ações for nem for..in. Por exemplo, os métodos internos da classe Array (Array.sort() e Array.reverse()) não são incluídos na enumeração de um objeto Array e as propriedades de clipe de filme, tais como _x e _y, não são enumeradas. A construção for..in faz a iteração das propriedades de objetos na cadeia protótipo do objeto iterado. Se o protótipo do filho for pai, a iteração das propriedades do filho com for..in também fará a iteração das propriedades do pai. A ação for..in enumera todos os objetos na cadeia protótipo de um objeto. As propriedades do objeto são enumeradas primeiro, a seguir, as propriedades de seu protótipo imediato, a seguir, as propriedades do protótipo do protótipo e assim por diante. A ação for..in não enumera o mesmo nome de propriedade duas vezes. Se o objeto filho tiver um pai protótipo e ambos contiverem a propriedade prop, a ação for..in iniciada sobre o filho enumerará prop a partir do filho, mas ignorará a que está no pai. for..in 421 Exemplo O exemplo a seguir mostra o uso de for..in para iteração das propriedades de um objeto: myObject = { name:'Tara', age:27, city:'San Francisco' }; for (name in myObject) { trace ("myObject." + name + " = " + myObject[name]); } A saída deste exemplo é: myObject.name = Tara myObject.age = 27 myObject.city = San Francisco O exemplo a seguir mostra o uso do operador typeof com for..in para iterar um tipo específico de filho: for (name in my_mc) { if (typeof (my_mc[name]) = "movieclip") { trace ("I have a movie clip child named " + name); } } O exemplo a seguir enumera os filhos de um clipe de filme e envia cada um para o Frame 2 de suas respectivas Timelines. O clipe de filme RadioButtonGroup é pai de vários filhos, _RedRadioButton_, _GreenRadioButton_ e _BlueRadioButton. for (var name in RadioButtonGroup) { RadioButtonGroup[name].gotoAndStop(2); } 422 Capítulo 12: Dicionário do ActionScript fscommand() Disponibilidade Flash Player 3. Uso fscommand("command", "parameters") Parâmetros Uma seqüência de caracteres passada ao aplicativo host para qualquer uso ou um comando passado ao Flash Player independente. comand Uma seqüência de caracteres passada ao aplicativo host para qualquer uso ou um valor passado ao Flash Player. parâmetros Retorna Nada. Descrição Função; permite ao arquivo SWF comunicar-se com o Flash Player ou com o programa que hospeda o Flash Player, como um navegador da Web. Você também pode usar a ação fscommand para passar mensagens para o Macromedia Director ou para o Visual Basic, Visual C++ e outros programas que possam hospedar controles ActiveX. Uso 1: Para enviar uma mensagem ao Flash Player, você deve usar comandos e parâmetros predefinidos. A tabela abaixo mostra os valores que podem ser especificados para os parâmetros comando e parâmetros, da ação fscommand, para controlar um SWF reproduzido em um Flash Player independente (incluindo projetores): Comando Parâmetros Objetivo quit Nenhum Fecha o projetor. fullscreen true ou false A especificação de true define o Flash Player no modo de tela cheia. A especificação de false retorna o exibidor para a exibição normal de menu. allowscale true ou false O valor false faz com que o exibidor sempre desenhe o SWF em seu tamanho original e nunca redimensionado. O valor true força o SWF a ser redimensionado para 100% do exibidor. showmenu true ou false A especificação de true ativa o conjunto completo de itens do menu de contexto. A especificação de false torna esmaecidos todos os itens do menu de contexto, exceto Sobre o Flash Player. exec Caminho para o aplicativo Executa um aplicativo no projetor. trapallkeys true ou false A especificação de true envia todos os eventos de teclas, incluindo as teclas de aceleração, para o identificador onClipEvent(keyDown/keyUp) no Flash Player. fscommand() 423 O comando exec só pode conter os caracteres A–Z, a–z, 0–9, ponto (.) e sublinhado (_). O comando exec é executado somente no subdiretório fscommand. Em outras palavras, se você usar o comando fscommand exec para chamar um aplicativo, o aplicativo deverá residir em um subdiretório com o nome de fscommand. Uso 2: Para usar a ação fscommand para enviar uma mensagem para uma linguagem de script, como JavaScript, em um navegador da Web, você pode passar dois valores quaisquer nos parâmetros comando e parâmetros. Esses parâmetros podem ser seqüências de caracteres ou expressões e serão usados em uma função JavaScript que “captura”, ou manipula, a ação fscommand. Em um navegador da Web, a ação fscommand chama a função JavaScript na página HTML que contém o filme Flash. O moviename é o nome do Flash Player conforme atribuído pelo atributo NAME da tag EMBED ou pela propriedade ID da tag OBJECT. Se o nome atribuído ao Flash Player for meuDocumento, a função JavaScript chamada será meuDocumento_DoFSCommand. nomefilme_DoFScommand Uso 3: A ação fscommand pode enviar mensagens ao Macromedia Director que são interpretadas pelo Lingo como seqüências de caracteres, eventos ou código Lingo executável. Se a mensagem for uma seqüência de caracteres ou um evento, você deverá criar o código Lingo para recebê-la a partir da ação fscommand e executar uma ação no Director. Director Support Center. Para obter mais informações, consulte o Director Support Center em www.macromedia.com/support/ director. Uso 4: No Visual Basic, Visual C++ e em outros programas que podem hospedar controles ActiveX, fscommand envia um evento VB com duas seqüências de caracteres que podem ser manipuladas na linguagem de programação do ambiente. Para obter mais informações, pesquise no Flash Support Center usando as palavras-chave Flash method em www.macromedia.com/ support/flash. Exemplo Uso 1: No exemplo abaixo, a ação fscommand determina que o Flash Player ajuste o SWF para o tamanho de tela cheia quando o botão é liberado. on (release) { fscommand("fullscreen", true); } Uso 2: O exemplo abaixo usa a ação fscommand aplicada a um botão no Flash para abrir uma caixa de mensagem JavaScript em uma página HTML. A mensagem em si é enviada para JavaScript como o parâmetro de fscommand. Você deve adicionar uma função à página HTML que contém o arquivo SWF. Essa função, meuDocumento_DoFSCommand, ficará situada na página HTML e aguardará uma ação fscommand no Flash. Quando fscommand é ativado no Flash (por exemplo, quando um usuário pressiona o botão), as seqüências de caracteres comando e parâmetros são passadas para a função meuDocumento_DoFSCommand. Você pode usar as seqüências de caracteres passadas no seu código JavaScript ou VBScript da maneira que desejar. Neste exemplo, a função contém um comando condicional if que verifica se a seqüência de caracteres de comando é “caixa_de_mensagem”. Se for, será aberta uma caixa de alerta JavaScript (ou “caixa de mensagem”) que exibirá o conteúdo da seqüência de caracteres parâmetros. 424 Capítulo 12: Dicionário do ActionScript function meuDocumento_DoFSCommand(comando, args) { if (comando == "caixa_de_mensagem") { alert(args); } } No documento Flash, adicione a ação fscommand a um botão: fscommand("caixa_de_mensagem", "Esta é uma caixa de mensagem chamada de dentro do Flash.") Você também pode usar expressões para a ação fscommand e seus parâmetros, como no seguinte exemplo: fscommand("caixa_de_mensagem", "Olá, " + nome + ", bem-vindo a nosso website!") Para testar o filme, escolha File (Arquivo) > Publish Preview (Visualizar Publicação) > HTML. Observação: Se você publicar o filme usando o modelo Flash com FSCommand em HTML Publish Settings (Configurações de Publicação em HTML), a função meuDocumento_DoFSCommand será inserida automaticamente. Os atributos NAME e ID do SWF serão o nome do arquivo. Por exemplo, para o arquivo meuDocumento.fla, estes atributos seriam definidos como meuDocumento. fscommand() 425 function Disponibilidade Flash Player 5. Uso function functionname ([parameter0, parameter1,...parameterN]){ comando(s) } function ([parameter0, parameter1,...parameterN]){ comando(s) } Parâmetros functionname O nome da nova função. Um identificador que representa um parâmetro a ser passado para a função. Esses parâmetros são opcionais. parameter comando(s) Qualquer instrução ActionScript definida para o corpo da função. Retorna Nada. Descrição Comando; formado por um conjunto de comandos que você define para realizar uma determinada tarefa. Você pode declarar, ou definir, uma função em um local e chamá-la, ou invocá-la, de diferentes scripts em um arquivo SWF. Quando você define uma função, também pode especificar parâmetros para ela. Os parâmetros são espaços reservados para valores sobre os quais a função fará suas operações. Você pode passar parâmetros diferentes para uma função todas as vezes que chamá-la. Isso permite reutilizar uma função em diversas situações diferentes. Use a ação return no(s) comando(s) de uma função para fazer a função retornar, ou apresentar, um valor. Uso 1: Declaração de uma função com o nomeFunção, os parâmetros e o(s) comando(s) especificados. Quando uma função é chamada, a declaração da função é chamada. Não é permitido repassar uma referência; na mesma lista de ações, uma função pode ser declarada após ser chamada. Uma declaração de função substitui qualquer declaração anterior da mesma função. Esta sintaxe pode ser usada sempre que for permitido um comando. Uso 2: Criação de uma função anônima e retorno. Esta sintaxe é usada em expressões e é particularmente útil para a instalação de métodos em objetos. 426 Capítulo 12: Dicionário do ActionScript Exemplo Uso 1: O exemplo abaixo define a função sqr, que aceita um parâmetro e retorna o quadrado (x*x) do parâmetro. Observe que, se a função for declarada e usada no mesmo script, a declaração de função pode aparecer após o uso da função. y=sqr(3); function sqr(x) { return x*x; } Uso 2: A função abaixo define um objeto Circle: function Circle(radius) { this.radius = radius; } O comando a seguir define uma função anônima que calcula a área de um círculo e a anexa ao objeto Circle como um método: Circle.prototype.area = function () {return Math.PI * this.radius * this.radius} Classe Function Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Resumo de métodos da classe Function Método Descrição Function.apply() Ativa o código ActionScript para chamar uma função. Function.call() Invoca a função representada por um objeto Function. Resumo de propriedades da classe Function Propriedade Descrição Function.prototype Refere-se a um objeto que é o protótipo de uma classe. Classe Function 427 Function.apply() Disponibilidade Flash Player 6. Uso myFunction.apply(thisObject, argumentsObject) Parâmetros thisObject O objeto ao qual myFunction é aplicada. argumentsObject Uma matriz cujos elementos são passados para myFunction como parâmetros. Retorna Qualquer valor que a função chamada especifica. Descrição Método; especifica o valor de this para ser usado em qualquer função que ActionScript chame. Este método também especifica os parâmetros a serem passados a qualquer função chamada. Como apply() é um método da classe Function, também é um método de todo objeto Function no ActionScript. Os parâmetros são especificados como um objeto Array. Em geral, isso é útil quando o número de parâmetros a serem passados só é conhecido quando o script é realmente executado. Exemplo As invocações de função a seguir são equivalentes. Math.atan2(1, 0) Math.atan2.apply(null, [1, 0]) Você pode construir um arquivo SWF contendo campos de entrada que permitam ao usuário inserir o nome de uma função a ser chamada e zero ou mais parâmetros a serem passados à função. O botão “Chamar” usaria então o método apply para chamar a função, especificando os parâmetros. No exemplo, o usuário especifica um nome de função em um campo de texto de entrada denominado functionName. A quantidade de parâmetros é especificada em um campo de texto de entrada denominado numParameters. Até 10 parâmetros são especificados em campos de texto denominados parameter1, parameter2, até parameter10. on (release) { callTheFunction(); } ... function callTheFunction() { var theFunction = eval(functionName.text); var n = Number(numParameters); var parameters = []; for (var i = 0; i < n; i++) { parameters.push(eval("parameter" + i)); } theFunction.apply(null, parameters); } 428 Capítulo 12: Dicionário do ActionScript Function.call() Disponibilidade Flash Player 6. Uso myFunction.call(thisObject, parameter1, ..., parameterN) Parâmetros thisObject Especifica o valor de this no corpo da função. parameter1 Um parâmetro a ser passado a myFunction. Você pode especificar zero ou mais parâmetros. parameterN Retorna Nada. Descrição Método; invoca a função representada por um objeto Function. Toda função em ActionScript é representada por um objeto Function para que todas as funções ofereçam suporte a esse método. Em quase todos os casos, o operador de chamada de função (()) pode ser usado no lugar desse método. O operador de chamada de função produz um código conciso e de fácil leitura. Esse método é útil principalmente quando o parâmetro this da invocação da função precisa ser explicitamente controlado. Normalmente, se uma função é invocada como um método de um objeto, no corpo da função, this é definido para myObject como no exemplo a seguir: myObject.myMethod(1, 2, 3); Em algumas situações, pode ser preferível que this aponte para algum outro lugar; por exemplo, se uma função tiver que ser invocada como um método de um objeto, mas não estiver realmente armazenada como um método desse objeto. myObject.myMethod.call(myOtherObject, 1, 2, 3); Você pode passar o valor null para o parâmetro thisObject para invocar uma função como uma função regular e não como um método de um objeto. Por exemplo, as seguintes invocações de função são equivalentes: Math.sin(Math.PI / 4) Math.sin.call(null, Math.PI / 4) Exemplo Este exemplo usa o método Function.call() para fazer uma função se comportar como um método de outro objeto, sem armazenar a função no objeto. function MyObject() { } function MyMethod(obj) { trace("this == obj? " + (this == obj)); } var obj = new MyObject(); MyMethod.call(obj, obj); A ação trace() envia o seguinte código ao painel Output (Saída): this == obj? true Function.call() 429 Function.prototype Disponibilidade Flash Player 5. Uso myFunction.prototype Descrição Propriedade; em uma função construtora do ActionScript 1, a propriedade prototype refere-se a um objeto que é o protótipo da classe construída. Cada instância da classe que é criada pela função construtora herda todas as propriedades e métodos do objeto protótipo. ge (maior ou igual a — específico de seqüências de caracteres) Disponibilidade Flash Player 4. Este operador foi substituído no Flash 5 pelo operador >= (maior ou igual a). Uso expressão1 ge expressão2 Parâmetros expression1, expression2 Números, seqüências de caracteres ou variáveis Retorna Nada. Descrição Operador (comparação); compara a representação em seqüência de caracteres da expressão1 com a representação em seqüência de caracteres da expressão2 e retorna true se a expressão1 for maior ou igual à expressão2; caso contrário, retorna false. Consulte também >= (maior ou igual a) get Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Consulte também set 430 Capítulo 12: Dicionário do ActionScript getProperty Disponibilidade Flash Player 4. Uso getProperty(my_mc, property) Parâmetros my_mc O nome da instância de um clipe de filme da qual a propriedade está sendo recuperada. property Uma propriedade de um clipe de filme. Retorna O valor da propriedade especificada. Descrição Função; retorna o valor da propriedade especificada do clipe de filme my_mc. Exemplo O exemplo a seguir recupera a coordenada do eixo horizontal (_x) do clipe de filme my_mc e a atribui à variável my_mc_x: my_mc_x = getProperty(_root.my_mc, _x); getTimer Disponibilidade Flash Player 4. Uso getTimer() Parâmetros Nenhum. Retorna A quantidade de milissegundos decorridos desde o início da reprodução do arquivo SWF. Descrição Função; retorna o número de milissegundos decorridos desde o início da reprodução do arquivo SWF. getTimer 431 getURL() Disponibilidade Flash 2. As opções GET e POST só estão disponíveis no Flash Player 4 e versões posteriores. Uso getURL(url [, window [, "variables"]]) Parâmetros url O URL de onde o documento será obtido. window Um parâmetro opcional que especifica a janela ou quadro HTML em que o documento deve ser carregado. Você pode inserir o nome de uma janela específica ou escolher um dos seguintes nomes de destino reservados: • • • • especifica o quadro atual na janela atual. especifica uma nova janela. _parent especifica a origem do quadro atual. _top especifica o quadro de nível superior na janela atual. _self _blank variables Um método GET ou POST para envio de variáveis. Caso não haja variáveis, omitir esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado com longas seqüências de caracteres. Retorna Nada. Descrição Função; carrega um documento de um URL específico em uma janela ou passa variáveis para outro aplicativo em um URL definido. Para testar esta ação, certifique-se de que o arquivo a ser carregado esteja no local especificado. Para usar um URL absoluto (por exemplo, http:// www.meuservidor.com), você precisa de uma conexão de rede. Exemplo Este exemplo carrega um novo URL em uma janela em branco do navegador. A ação getURL() utiliza a variável incomingAd como o parâmetro url, para que você possa alterar o URL carregado sem ter que editar o arquivo SWF. O valor da variável incomingAd é passado para o Flash no início do SWF usando a ação loadVariables(). on (release) { getURL(incomingAd, "_blank"); } Consulte também loadVariables(), XML.send(), XML.sendAndLoad(), XMLSocket.send() 432 Capítulo 12: Dicionário do ActionScript getVersion Disponibilidade Flash Player 5. Uso getVersion() Parâmetros Nenhum. Retorna Uma seqüência de caracteres contendo informações sobre a versão e plataforma do Flash Player. Descrição Função; retorna uma seqüência de caracteres contendo informações sobre a versão e plataforma do Flash Player. A função getVersion só retorna informações do Flash Player 5 ou versões posteriores. Exemplo O exemplo a seguir mostra uma seqüência de caracteres apresentada como resposta pela função getVersion. WIN 5,0,17,0 Esta seqüência indica que a plataforma é Windows e que a versão principal do Flash Player é a 5 e a versão secundária 17 (5.0r17). Consulte também System.capabilities.os, System.capabilities.version getVersion 433 _global object Disponibilidade Flash Player 6. Uso _global.identifier Parâmetros Nenhum. Retorna Uma referência ao objeto global que possui as principais classes ActionScript, como String, Object, Math e Array. Descrição Identificador; cria variáveis globais, objetos ou classes. Por exemplo, você poderia criar uma biblioteca que é exposta como um objeto global ActionScript, muito parecido com o objeto Math ou Date. Ao contrário das funções e variáveis declaradas no Timeline (Linha de tempo) ou locais, as variáveis e funções globais são visíveis para todas as linhas de tempo e escopos em um arquivo SWF, desde que não sejam encobertas por identificadores com nomes idênticos em escopos internos. Exemplo Este exemplo cria a função de alto nível factorial(), disponível para todas as linhas de tempo e escopos em um arquivo SWF: _global.factorial = function (n) { if (n <= 1) { return 1; else { return n * factorial(n-1); } } Consulte também var, set variable 434 Capítulo 12: Dicionário do ActionScript gotoAndPlay() Disponibilidade Flash 2. Uso gotoAndPlay([scene,] frame) Parâmetros Seqüência de caracteres opcional que especifica o nome da cena para a qual é enviada a reprodução. scene frame O número do quadro ou identificador para onde a reprodução é enviada. Retorna Nada. Descrição Função; desloca a reprodução para o quadro especificado em uma cena e reproduz a partir desse quadro. Se não for especificada uma cena, a reprodução segue para o quadro especificado na cena atual. Exemplo Quando o usuário clica em um botão ao qual está associado gotoAndPlay(), a reprodução é deslocada ao Frame (Quadro) 16 da cena atual e é iniciada. on (release) { gotoAndPlay(16); } gotoAndPlay() 435 gotoAndStop() Disponibilidade Flash 2. Uso gotoAndStop([scene,] frame) Parâmetros Seqüência de caracteres opcional que especifica o nome da cena para a qual é enviada a reprodução. scene frame O número do quadro ou identificador para onde a reprodução é enviada. Retorna Nada. Descrição Função; desloca a reprodução para o quadro especificado em uma cena e a interrompe. Se não for especificada uma cena, a reprodução segue para o quadro especificado na cena atual. Exemplo Quando o usuário clica em um botão ao qual está associado gotoAndStop(), a reprodução é deslocada ao Frame 5 da cena atual e o SWF pára. on (release) { gotoAndStop(5); } Consulte também stop() gt (maior que — específico de seqüência de caracteres) Disponibilidade Flash Player 4. Este operador foi substituído no Flash 5 pelo novo operador > (maior que). Uso expressão1 gt expressão2 Parâmetros expression1,expression2 Números, seqüências de caracteres ou variáveis. Descrição Operador (comparação); compara a representação em seqüência de caracteres da expressão1 com a representação em seqüência de caracteres da expressão2 e retorna true se a expressão1 for maior que a expressão2; caso contrário, retorna false. Consulte também > (maior que) 436 Capítulo 12: Dicionário do ActionScript _highquality Disponibilidade Flash Player 4. Uso _highquality Descrição Propriedade (global); especifica o nível de eliminação de serrilhado aplicado ao arquivo SWF atual. Especifique 2 (melhor qualidade) para aplicar alta qualidade com a suavização de bitmap sempre ativada. Especifique 1 (alta qualidade) para aplicar o recurso de eliminação de serrilhado. Isso suavizará os bitmaps se o arquivo SWF não tiver animação. Especifique 0 (baixa qualidade) para evitar o recurso sem serrilhado. Exemplo _highquality = 1; Consulte também _quality, toggleHighQuality() _highquality 437 if Disponibilidade Flash Player 4. Uso if(condição) { comandos(s); } Parâmetros condição comando(s) Uma expressão que seja avaliada como true ou false. As instruções a serem executadas se ou quando a condição for avaliada como true. Retorna Nada. Descrição Comando; avalia uma condição para determinar a próxima ação em um arquivo SWF. Se a condição for true, o Flash executará os comandos que estiverem dentro das chaves ({}) após a condição. Se a condição for false, o Flash ignorará os comandos contidos nas chaves e executará os comandos posteriores a elas. Use a ação if para criar lógica ramificada em seus scripts. Exemplo No exemplo a seguir, a condição entre parênteses avalia a variável name para verificar se ela tem o valor literal “Erica”. Se for o caso, será executada a ação play() entre chaves. if(name == "Erica"){ play(); } O exemplo abaixo utiliza uma ação if para avaliar quando o usuário solta um objeto arrastável no arquivo SWF. Se o objeto tiver sido liberado menos de 300 milissegundos depois de arrastado, a condição será avaliada como true e os comandos entre chaves serão executados. Esses comandos definem variáveis para armazenar informações como a nova posição do objeto, a força e a velocidade com que ele foi lançado. A variável timePressed também é redefinida. Se o objeto tiver sido liberado mais de 300 milissegundos depois de arrastado, a condição será avaliada como false e nenhum comando será executado. if (getTimer() < timePressed+300) { // se a condição for true, // o objeto foi jogado. // qual é a nova posição deste objeto? xNewLoc = this._x; yNewLoc = this._y; // qual a força do lançamento? xTravel = xNewLoc-xLoc; yTravel = yNewLoc-yLoc; // definindo a velocidade do objeto, // dependendo de quanto ele viajou xInc = xTravel/2; yInc = yTravel/2; timePressed = 0; } 438 Capítulo 12: Dicionário do ActionScript Consulte também else ifFrameLoaded Disponibilidade Flash Player 3. A ação ifFrameLoaded foi substituída no Flash 5. A Macromedia recomenda o uso da propriedade MovieClip._framesloaded. Uso ifFrameLoaded([scene,] frame) { comando(s); } Parâmetros scene Seqüência de caracteres opcional que especifica o nome da cena que deve ser carregada. quadro O número ou identificador do quadro que deve ser carregado antes da execução do próximo comando. comando(s) As instruções a serem executadas se uma determinada cena (ou cena e quadro) for carregada. Retorna Nada. Descrição Ação substituída; verifica se o conteúdo de um quadro específico está disponível localmente. Use ifFrameLoaded para iniciar a reprodução de uma animação simples durante o download do restante do arquivo SWF no computador local. A diferença entre o uso de _framesloaded e ifFrameLoaded é que _framesloaded permite que você adicione seus próprios comandos if ou else. Consulte também MovieClip._framesloaded ifFrameLoaded 439 implements Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso myClass implements interface01 [, interface02, ...] Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Palavra-chave; define uma classe que deve fornecer implementação para todos os métodos definidos nas interfaces. Para obter mais informações, consulte “Criando e usando interfaces” na página 171. Consulte também class, interface import Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Descrição Para obter mais informações, consulte “Importando classes” na página 175. 440 Capítulo 12: Dicionário do ActionScript #include Disponibilidade Todas as versões do Flash Player 4. Uso #include "[path] filename.as" Observação: Não coloque ponto-e-vírgula (;) no final da linha que contém a condição #include. Parâmetros É o nome do arquivo e caminho opcional do script a ser adicionado ao painel Actions (Ações); .as é a extensão de arquivo recomendada. [path] filename.as Retorna Nada. Descrição Diretiva de compilador; inclui o conteúdo do arquivo especificado, como se os comandos que estão no arquivo fossem parte do próprio script. A diretiva #include é invocada no momento da compilação. Portanto, se você fizer qualquer alteração em um arquivo externo, será preciso salvar o arquivo e recompilar os arquivos FLA que o utilizam. Se usar o botão Check Syntax (Verificar sintaxe) para um script que contenha comandos #include, a sintaxe dos arquivos incluídos também será verificada. Você pode usar o #include em arquivos FLA e em arquivos de script externos, mas não em arquivos de classe ActionScript 2. O #include não pode ser usado para incluir o conteúdo de um arquivo de classe ActionScript 2. Se você, por exemplo, definir uma classe Circle em um arquivo nomeado como Circle.as, o comando #include Circle.as não funcionará. Para dar acesso explícito a arquivos de classes que não estejam em seus caminhos de classes, use o comando import. Você pode especificar um caminho relativo, um caminho absoluto ou nenhum caminho para o arquivo a ser incluído. • Se você não especificar um caminho, o arquivo AS deverá estar no mesmo diretório do arquivo • • FLA ou do script que contém o comando #include. Para especificar um caminho para o arquivo AS relativo ao script ou arquivo FLA, use dois pontos (..) e barra (/). Veja os exemplos a seguir. Para especificar um caminho absoluto para o arquivo AS, use o formato suportado por sua plataforma (Macintosh ou Windows). Veja os exemplos a seguir. Contudo, não se recomenda este uso porque ele requer que a estrutura de diretório seja a mesma em qualquer máquina usada para compilar o script. #include 441 Exemplo Os exemplos abaixo mostram várias maneiras de especificar um caminho para um arquivo a ser incluído no script. // Note que os comandos #include não terminam com um ponto-e-vírgula (;) // O arquivo AS está no mesmo diretório do arquivo FLA ou do script #include "init_script.as" // O arquivo AS está em um subdiretório do diretório // que contém o arquivo FLA ou o script // O subdiretório chama-se "FLA_includes" #include "FLA_includes/init_script.as" // O arquivo AS está em um diretório no mesmo nível do arquivo FLA ou do script // O diretório chama-se "ALL_includes" #include "../ALL_includes/init_script.as" // O arquivo AS é definido por um caminho absoluto no Windows // Note que se usam barras e não barras invertidas #include "C:/Flash_scripts/init_script.as" // O arquivo AS é definido por um caminho absoluto no Macintosh #include "Mac HD:Flash_scripts:init_script.as" Consulte também import Infinity Disponibilidade Flash Player 5. Uso Infinity Descrição Constante; especifica o valor IEEE-754 que representa o infinito positivo. O valor dessa constante é o mesmo de Number.POSITIVE_INFINITY. -Infinity Disponibilidade Flash Player 5. Uso -Infinity Descrição Constante; especifica o valor IEEE-754 que representa o infinito negativo. O valor dessa constante é o mesmo de Number.NEGATIVE_INFINITY. 442 Capítulo 12: Dicionário do ActionScript #initclip Disponibilidade Flash Player 6. Uso #initclip order Parâmetros order Um número inteiro que especifica a ordem de execução de blocos de código #initclip. Este é um parâmetro opcional. Descrição Diretiva de compilador; indica o início de um bloco de ações de inicialização. Quando vários clipes são inicializados ao mesmo tempo, você pode usar o parâmetro ordem para especificar a inicialização que ocorrerá primeiro. As ações de inicialização são executadas quando é definido um símbolo de clipe de filme. Se o clipe de filme for um símbolo exportado, as ações de inicialização serão executadas antes das ações do Frame (Quadro) 1 do arquivo SWF. Caso contrário, elas serão executadas imediatamente antes das ações do quadro que contém a primeira instância do símbolo de clipe de filme associado. As ações de inicialização são executadas apenas uma vez durante a reprodução de um SWF. Use-as para inicializações realizadas somente uma vez, como a definição e registro de classes. Exemplo O exemplo de código a seguir é associado ao primeiro quadro de um SWF, que é um componente CheckBox. As ações #initclip e #endinitclip definem os limites do bloco de comandos que são ações de inicialização. Os comandos delimitados registram a classe e os métodos de armazenamento em um objeto de protótipo. #initclip if (typeof(CheckBox) == "indefinido") { // Definir o construtor para (e, portanto, definir) a classe CheckBox function CheckBox() { //Configurar nossas vinculações de dados this.watch ('value', function (id, oldval, newval) { ... }; this.watch ('label', function (id, oldval, newval) { ... }; } // Definir que a cadeia de protótipos CheckBox herda de MovieClip CheckBox.prototype = new MovieClip(); // Registrar CheckBox como a classe do símbolo de "Caixa de seleção" Object.registerClass("Caixa de seleção", CheckBox); // Configurar alguns métodos CheckBox.prototype.enable = function () { ... }; CheckBox.prototype.show = function () { ... }; CheckBox.prototype.hide = function () { ... }; // Configurar uma função conveniente para criar // caixas de seleção CheckBox.create = function (parent_mc, instanceName, depth) { parent_mc.attachMovie("CheckBox", instanceName, depth); }; } #endinitclip #initclip 443 Observação: Se você copiar e colar este código no painel Actions (Ações), será gerado um erro quando o script for compilado, por causa das funções indefinidas ({...}). Consulte também #endinitclip instanceof Disponibilidade Flash Player 6. Uso object instanceof class Parâmetros object class Um objeto ActionScript. Uma referência a uma função construtora ActionScript, como String ou Date. Retorna Se o objeto for uma instância de classe, instanceof retornará true; caso contrário, instanceof retornará false. Descrição Operador; determina se um objeto pertence a uma determinada classe. Testa se o objeto é uma instância de classe. Um objeto ActionScript é considerado uma instância de uma classe quando o objeto de protótipo da função construtora está na cadeia de protótipos do objeto ActionScript. O operador instanceof não converte tipos primitivos em objetos envoltórios. Por exemplo, o código a seguir retorna true: new String("Olá") instanceof String Já o código a seguir retorna false: "Olá" instanceof String Exemplo Para ilustrar o algoritmo do operador instanceof, o exemplo a seguir mostra a aparência possível desse operador instanceof caso seja codificado como uma função do ActionScript. function instanceof (theObject, theClass){ while ((theObject = theObject.__proto__) != null) { if (theObject == theClass.prototype) { return true; } } return false; } Consulte também typeof 444 Capítulo 12: Dicionário do ActionScript int Disponibilidade Flash Player 4. Esta função foi substituída no Flash 5 por Math.round(). Uso int(valor) Parâmetros valor Um número a ser arredondado para um inteiro. Retorna Nada. Descrição Função; converte um número decimal no valor inteiro mais próximo. Consulte também Math.floor() interface Disponibilidade Flash Player 6. Uso interface InterfaceName {} interface InterfaceName [extends InterfaceName [, InterfaceName ...] {} Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Palavra-chave; define uma interface. Interfaces são semelhantes às classes, com as seguintes diferenças relevantes: • As interfaces contêm somente descrições de métodos e não sua implementação. Isto é, toda • classe que implementa uma interface deve trazer uma implementação para cada método definido na interface. Em uma definição de interface, são permitidos apenas membros públicos. Além disso, não são permitidas variáveis de instância. Embora não sejam equivalentes às classes abstratas de Java, as interfaces podem ser consideradas abstratas no sentido que definem apenas possíveis comportamentos de suas instâncias. Para obter mais informações, consulte “Criando e usando interfaces” na página 171. interface 445 Exemplo (em arquivos .as de pacote de nível superior Ia, B, C, Ib, D, Ic, E) // nome do arquivo Ia.as interface Ia { function k():Number; // somente a declaração do método function n(x:Number):Number; // sem implementação } // nome do arquivo B.as class B implements Ia { function k():Number {return 25;} function n(x:Number):Number {return x+5;} } // script externo ou painel Actions (Ações) mvar = new B(); trace(B.k()); // 25 trace(B.n(7)); // 12 // nome do arquivo c.as class C implements Ia { function k():Number {return 25;} } // erro: a classe deve implementar todos os métodos da interface // nome do arquivo Ib.as interface Ib { function o():Void; } class D implements Ia, Ib { function k():Number {return 15;} function n(x:Number):Number {return x*x;} function o():Void {trace("o");} } // script externo ou painel Actions (Ações) mvar = new D(); trace(D.k()); // 15 trace(D.n(7)); // 49 trace(D.o()); // "o" interface Ic extends Ia { function p():Void; } class E implements Ib, Ic { function k():Number {return 25;} function n(x:Number):Number {return x+5;} function o():Void {trace("o");} function p():Void {trace("p");} } Consulte também class, extends, implements 446 Capítulo 12: Dicionário do ActionScript isFinite Disponibilidade Flash Player 5. Uso isFinite(expressão) Parâmetros expressão Valor booleano, variável ou outra expressão a ser avaliada. Retorna Um valor booleano. Descrição Função; avaliará a expressão e retornará true se for um número finito ou false se for um número infinito ou infinito negativo. A presença do infinito ou infinito negativo indica uma condição de erro matemático como uma divisão por 0. Exemplo A seguir são mostrados exemplos dos valores retornados por isFinite: isFinite(56) // retorna true isFinite(Number.POSITIVE_INFINITY) // retorna false isFinite 447 isNaN() Disponibilidade Flash Player 5. Uso isNaN(expressão) Parâmetros expressão Um valor booleano, variável ou outra expressão a ser avaliada. Retorna Um valor booleano. Descrição Função; avaliará o parâmetro e retornará true se o valor não for um número (NaN), e isto indicará a presença de erros matemáticos. Exemplo O código a seguir demonstra valores de retorno para a função isNaN. isNaN("Árvore") // retorna true isNaN(56) // retorna false isNaN(Number.POSITIVE_INFINITY) // retorna false Consulte também NaN, Number.NaN 448 Capítulo 12: Dicionário do ActionScript Classe key Disponibilidade Flash Player 6. Descrição A classe Key é uma classe do nível mais alto cujos métodos e propriedades podem ser usados sem lançar um construtor. Use os métodos da classe Key para criar uma interface que possa ser controlada por um usuário com um teclado padrão. As propriedades da classe Key são constantes que representam as teclas mais comumente usadas para controlar jogos. Para obter uma lista completa de valores de códigos de teclas, consulte Apêndice C, “Teclas do teclado e valores de códigos de teclas”, na página 859. Exemplo O script a seguir usa o objeto Key para identificar teclas em qualquer teclado, de forma que o usuário possa controlar um clipe de filme. onClipEvent (enterFrame) { if(Key.isDown(Key.RIGHT)) { this._x=_x+10; } else if (Key.isDown(Key.DOWN)) { this._y=_y+10; } } Resumo de métodos da classe Key Método Descrição Key.addListener() Registra um objeto para receber a notificação quando os métodos onKeyDown e onKeyUp são chamados. Key.getAscii() Retorna o valor ASCII da última tecla pressionada. Key.getCode() Retorna o código de tecla virtual da última tecla pressionada. Key.isDown() Retorna true se a tecla especificada no parâmetro for pressionada. Key.isToggled() Retorna true se a tecla Num Lock ou Caps Lock estiver ativada. Key.removeListener() Remove um objeto anteriormente registrado com Key.addListener(). Classe key 449 Resumo de propriedades da classe Key Todas as propriedades da classe Key são constantes. Propriedade Descrição Key.BACKSPACE Constante associada ao código da tecla Backspace (8). Key.CAPSLOCK Constante associada ao código da tecla Caps Lock (20). Key.CONTROL Constante associada ao código da tecla Control (17). Key.DELETEKEY Constante associada ao código da tecla Delete (46). Key.DOWN Constante associada ao código da tecla Seta para baixo (40). Key.END Constante associada ao valor do código da tecla End (35). Key.ENTER Constante associada ao valor do código da tecla Enter (13). Key.ESCAPE Constante associada ao valor do código da tecla Escape (27). Key.HOME Constante associada ao valor do código da tecla Home (36). Key.INSERT Constante associada ao valor do código da tecla Insert (45). Key.LEFT Constante associada ao valor do código da tecla Seta para esquerda (37). Key.PGDN Constante associada ao valor do código da tecla Page Down (34). Key.PGUP Constante associada ao valor do código da tecla Page Up (33). Key.RIGHT Constante associada ao valor do código da tecla Seta para direita (39). Key.SHIFT Constante associada ao valor do código da tecla Shift (16). Key.SPACE Constante associada ao valor do código da tecla Barra de espaços (32). Key.TAB Constante associada ao valor do código da tecla Tab (9). Key.UP Constante associada ao valor do código da tecla Seta para cima (38). Resumo de ouvintes da classe Key 450 Método Descrição Key.onKeyDown Notificado quando uma tecla é pressionada. Key.onKeyUp Notificado quando uma tecla é liberada Capítulo 12: Dicionário do ActionScript Key.addListener() Disponibilidade Flash Player 6. Uso Key.addListener (newListener) Parâmetros newListener Um objeto com os métodos onKeyDown e onKeyUp. Retorna Nada. Descrição Método; registra um objeto para receber a notificação onKeyDown e onKeyUp. Quando uma tecla é pressionada ou liberada, independentemente do foco de entrada, todos os objetos ouvintes registrados com addListener() têm o método onKeyDown ou onKeyUp chamado. Vários objetos podem ouvir notificações de teclado. Se o ouvinte newListener já estiver registrado, nenhuma alteração ocorrerá. Exemplo Este exemplo cria um novo objeto ouvinte e define uma função para onKeyDown e onKeyUp. A última linha usa o addListener() para registrar o ouvinte com o objeto Key, de forma a poder receber notificações dos eventos de tecla pressionada e de tecla liberada. myListener = new Object(); myListener.onKeyDown = function () { trace ("Você pressionou uma tecla."); } myListener.onKeyUp = function () { trace ("Você liberou uma tecla."); } Key.addListener(myListener); Key.BACKSPACE Disponibilidade Flash Player 5. Uso Key.BACKSPACE Descrição Propriedade; constante associada ao valor do código da tecla Backspace (8). Key.BACKSPACE 451 Key.CAPSLOCK Disponibilidade Flash Player 5. Uso Key.CAPSLOCK Descrição Propriedade; constante associada ao valor do código da tecla Caps Lock (20). Key.CONTROL Disponibilidade Flash Player 5. Uso Key.CONTROL Descrição Propriedade; constante associada ao valor do código da tecla Control (17). Key.DELETEKEY Disponibilidade Flash Player 5. Uso Key.DELETEKEY Descrição Propriedade; constante associada ao valor do código da tecla Delete (46). Key.DOWN Disponibilidade Flash Player 5. Uso Key.DOWN Descrição Propriedade; constante associada ao valor do código da tecla Seta para baixo (40). 452 Capítulo 12: Dicionário do ActionScript Key.END Disponibilidade Flash Player 5. Uso Key.END Descrição Propriedade; constante associada com o valor do código de chave da tecla End (35). Key.ENTER Disponibilidade Flash Player 5. Uso Key.ENTER Descrição Propriedade; constante associada ao valor do código da tecla Enter (13). Key.ESCAPE Disponibilidade Flash Player 5. Uso Key.ESCAPE Descrição Propriedade; constante associada ao valor do código da tecla Escape (27). Key.ESCAPE 453 Key.getAscii() Disponibilidade Flash Player 5. Uso Key.getAscii(); Parâmetros Nenhum. Retorna Um inteiro que representa o valor ASCII da última tecla pressionada. Descrição Método; retorna o código ASCII da última tecla pressionada ou liberada. Os valores ASCII retornados correspondem aos valores do teclado inglês. Se, por exemplo, você pressionar Shift+2, Key.getAscii() retornará @ em um teclado japonês, como em um teclado inglês. Key.getCode() Disponibilidade Flash Player 5. Uso Key.getCode(); Parâmetros Nenhum. Retorna Um inteiro que representa o código de tecla da última tecla pressionada. Descrição Método; retorna o valor do código de tecla da última tecla pressionada. Para que o valor do código da tecla coincida com a tecla de um teclado padrão, consulte Apêndice C, “Teclas do teclado e valores de códigos de teclas”, na página 859. Key.HOME Disponibilidade Flash Player 5. Uso Key.HOME Descrição Propriedade; constante associada ao valor do código da tecla Home (36). 454 Capítulo 12: Dicionário do ActionScript Key.INSERT Disponibilidade Flash Player 5. Uso Key.INSERT Descrição Propriedade; constante associada ao valor do código da tecla Insert (45). Key.isDown() Disponibilidade Flash Player 5. Uso Key.isDown(keycode) Parâmetros Valor do código de tecla atribuído a uma determinada tecla ou a uma propriedade da classe Key associada a uma tecla específica. Para que o valor do código da tecla coincida com a tecla de um teclado padrão, consulte Apêndice C, “Teclas do teclado e valores de códigos de teclas”, na página 859. keycode Retorna Um valor booleano. Descrição Método; retornará true, se for pressionada a tecla especificada no códigoTecla, ou false, se essa tecla não for pressionada. No Macintosh, os valores do código de tecla das teclas Caps Lock e Num Lock são idênticos. Key.isToggled() Disponibilidade Flash Player 5. Uso Key.isToggled(keycode) Parâmetros keycode O código da tecla Caps Lock (20) ou Num Lock (144). Key.isToggled() 455 Retorna Um valor booleano. Descrição Método; retornará true, se for ativada (ou alternada) a tecla Caps Lock ou Num Lock, ou false caso contrário. No Macintosh, os valores do código de tecla das teclas Caps Lock e Num Lock são idênticos. Key.LEFT Disponibilidade Flash Player 5. Uso Key.LEFT Descrição Propriedade; constante associada ao valor do código de tecla para a tecla Seta para esquerda (37). Key.onKeyDown Disponibilidade Flash Player 6. Uso someListener.onKeyDown Descrição Ouvinte; notificado quando uma tecla é pressionada. É necessário criar um objeto ouvinte para usar onKeyDown. Em seguida, é possível definir uma função para onKeyDown e usar o addListener() para registrar o ouvinte junto ao objeto Key, como abaixo: someListener = new Object(); someListener.onKeyDown = function () { ... }; Key.addListener(someListener); Os ouvintes permitem a cooperação de partes diferentes de código. Isso ocorre porque vários ouvintes podem receber notificações sobre um único evento. Consulte também Key.addListener() 456 Capítulo 12: Dicionário do ActionScript Key.onKeyUp Disponibilidade Flash Player 6. Uso someListener.onKeyUp Descrição Ouvinte; notificado quando uma tecla é liberada. É necessário criar um objeto ouvinte para usar onKeyUp. Em seguida, é possível definir uma função para onKeyUp e usar o addListener() para registrar o ouvinte junto ao objeto Key, como abaixo: someListener = new Object(); someListener.onKeyUp = function () { ... }; Key.addListener(someListener); Os ouvintes permitem a cooperação de partes diferentes de código. Isso ocorre porque vários ouvintes podem receber notificações sobre um único evento. Consulte também Key.addListener() Key.PGDN Disponibilidade Flash Player 5. Uso Key.PGDN Descrição Propriedade; constante associada ao valor do código de tecla para a tecla Page Down (34). Key.PGUP Disponibilidade Flash Player 5. Uso Key.PGUP Descrição Propriedade; constante associada ao valor do código da tecla Page Up (33). Key.PGUP 457 Key.removeListener() Disponibilidade Flash Player 6. Uso Key.removeListener (ouvinte) Parâmetros ouvinte Um objeto. Retorna Se o ouvinte tiver sido removido com êxito, o método retornará true. Caso o ouvinte não tenha sido removido com êxito, por exemplo, se ele não estava na lista de ouvintes do objeto Key, o método retornará false. Descrição Método; remove um objeto anteriormente registrado com Key.addListener() Key.addListener(). Key.RIGHT Disponibilidade Flash Player 5. Uso Key.RIGHT Descrição Propriedade; constante associada ao valor do código da tecla Seta para direita (39). Key.SHIFT Disponibilidade Flash Player 5. Uso Key.SHIFT Descrição Propriedade; constante associada ao valor do código da tecla Shift (16). 458 Capítulo 12: Dicionário do ActionScript Key.SPACE Disponibilidade Flash Player 5. Uso Key.SPACE Descrição Propriedade; constante associada ao valor do código de tecla da Barra de espaços (32). Key.TAB Disponibilidade Flash Player 5. Uso Key.TAB Descrição Propriedade; constante associada ao valor do código da tecla Tab (9). Key.UP Disponibilidade Flash Player 5. Uso Key.UP Descrição Propriedade; constante associada ao valor do código da tecla Seta para cima (38). Key.UP 459 le (menor ou igual a — específico de seqüência de caracteres) Disponibilidade Flash Player 4. Este operador foi substituído no Flash 5 pelo operador <= (menor ou igual que). Uso expression1 le expression2 Parâmetros expressão1, expressão2 Números, seqüências de caracteres ou variáveis. Retorna Nada. Descrição Operador (comparação); compara expression1 com expression2 e retorna um valor true se expression1 for menor ou igual a expresssion2; de outra forma, retorna um valor false. Consulte também <= (menor ou igual que) 460 Capítulo 12: Dicionário do ActionScript length Disponibilidade Flash Player 4. Esta função, juntamente com todas as funções de seqüências de caracteres, foi substituída no Flash 5. A Macromedia recomenda o uso dos métodos da classe String e da propriedade String.length para a realização das mesmas operações. Uso length(expressão) length(variável) Parâmetros expressão variável Uma seqüência de caracteres. O nome de uma variável. Retorna O comprimento da seqüência de caracteres ou da variável definida. Descrição Função de seqüência de caracteres; retorna o comprimento da seqüência de caracteres ou do nome da variável especificada. Exemplo O exemplo a seguir retorna o valor da seqüência de caracteres "Olá". length("Olá"); O resultado é 4. Consulte também " " (delimitador de seqüência de caracteres), Classe String, String.length length 461 _level Disponibilidade Flash Player 4. Uso _levelN Descrição Identificador; uma referência à Timeline (Linha de tempo) raiz de _levelN. É preciso usar loadMovieNum() para carregar arquivos SWF no Flash Player, antes de usar a propriedade _level para especificá-los. Também é possível utilizar _levelN para especificar um SWF carregado no nível atribuído por N. O arquivo SWF inicial carregado em uma instância do Flash Player é carregado automaticamente no _level0. O SWF no _level0 define a taxa de quadros, a cor de fundo e o tamanho do quadro para todos os SWF carregados em seguida. Depois, os SWF são empilhados em níveis com numeração mais alta, acima do SWF do _level0. É necessário atribuir um nível para cada arquivo SWF carregado no Flash Player com É possível atribuir níveis em qualquer ordem. Se você atribuir um nível que já contenha um arquivo SWF (inclusive _level0), o SWF nesse nível será descarregado e substituído pelo novo SWF. loadMovieNum(). Exemplo O exemplo abaixo interrompe a reprodução da Timeline (Linha de tempo) principal do SWF em _level9. _level9.stop(); O exemplo a seguir desloca a reprodução da Timeline principal do SWF no _level4 para o Frame 5. O SWF no _level4 deve ter sido anteriormente carregado com a ação loadMovieNum(). _level4.gotoAndStop(5); Consulte também loadMovie(), MovieClip.swapDepths() 462 Capítulo 12: Dicionário do ActionScript loadMovie() Disponibilidade Flash Player 3. Uso loadMovie("url",target [, method]) Parâmetros O URL absoluto ou relativo do arquivo SWF ou JPEG que deve ser carregado. O caminho relativo deve ser relacionado ao arquivo SWF no nível 0. Para que sejam usados no Flash Player ou no modo de teste do aplicativo de criação Flash, todos os arquivos SWF devem ser armazenados na mesma pasta e os nomes de arquivo não podem incluir as especificações da pasta ou da unidade de disco. url Um caminho para um clipe de filme de destino. O clipe de filme de destino será substituído pela imagem ou arquivo SWF carregado. destino Parâmetro opcional que especifica um método HTTP para o envio de variáveis. O parâmetro deve ser a seqüência de caracteres GET ou POST. Se não houver nenhuma variável a ser enviada, omita esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado para seqüências de caracteres maiores de variáveis. method Retorna Nada. Descrição Função; carrega um arquivo SWF ou JPEG no Flash Player durante a reprodução do arquivo SWF original. A função loadMovie() permite que você exiba vários SWF de uma vez e alterne entre os SWF sem carregar outro documento HTML. Sem a função loadMovie(), o Flash Player exibe um único arquivo SWF e é encerrado em seguida. Se quiser carregar um arquivo SWF ou JPEG em um determinado nível, use loadMovieNum() em vez de loadMovie(). Se um SWF for carregado em um clipe de filme de destino, use o caminho de destino desse clipe para especificar o SWF carregado. Um SWF ou imagem carregada em um destino herda as propriedades de posição, rotação e dimensionamento do clipe de filme de destino. O canto superior esquerdo da imagem ou SWF carregado se alinha com o ponto de registro do clipe de filme de destino. De maneira alternativa, se o destino for a Timeline (Linha de tempo) _root, o canto superior esquerdo da imagem ou SWF se alinhará com o canto superior esquerdo do Stage (Palco). Use unloadMovie() para remover arquivos SWF carregados com loadMovie(). loadMovie() 463 Exemplo O comando loadMovie() a seguir é anexado a um botão de navegação chamado Products (Produtos). Há um clipe de filme invisível no Palco com o nome de instância dropZone. A função loadMovie() usa esse clipe de filme como o parâmetro de destino para carregar os produtos no arquivo SWF, na posição correta no Stage (Palco). on (release) { loadMovie("products.swf",_root.dropZone); } O exemplo abaixo carrega uma imagem JPEG do mesmo diretório do arquivo SWF que chama a função loadMovie(): loadMovie("image45.jpeg", "nosso_clipe_de_filme"); Consulte também loadMovieNum(), unloadMovie(), _level loadMovieNum() Disponibilidade Flash Player 4. Os arquivos do Flash 4, abertos no Flash 5 ou posterior, são convertidos para que usem a sintaxe correta. Uso loadMovieNum("url",level [, variables]) Parâmetros url O URL absoluto ou relativo do arquivo SWF ou JPEG a ser carregado. Um caminho relativo deve ser relacionado ao arquivo SWF no nível 0. Para que sejam usados no Flash Player independente ou no modo de teste de filme, no aplicativo de criação Flash, todos os arquivos SWF devem ser armazenados na mesma pasta e os nomes dos arquivos não podem incluir especificações da pasta ou da unidade de disco. nível Um inteiro que especifica o nível em que o arquivo SWF será carregado no Flash Player. variáveis Um parâmetro opcional que especifica um método HTTP para o envio de variáveis. O parâmetro deve ser a seqüência de caracteres GET ou POST. Se não houver nenhuma variável a ser enviada, omita esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado para seqüências de caracteres maiores de variáveis. Retorna Nada. Descrição Função; carrega um arquivo SWF ou JPEG em um nível do Flash Player durante a reprodução do arquivo SWF originalmente carregado. Normalmente, o Flash Player exibe um único arquivo SWF e em seguida é encerrado. A ação loadMovieNum() permite que você exiba vários SWF de uma vez e alterne entre eles sem carregar outro documento HTML. Se quiser especificar um destino em vez de um nível, use loadMovie() em vez de loadMovieNum(). 464 Capítulo 12: Dicionário do ActionScript O Flash Player tem uma ordem de empilhamento de níveis começando do nível 0. Esses níveis são como folhas de transparências, a não ser pelos objetos presentes em cada nível. Quando você usa loadMovieNum(), é necessário especificar um nível do Flash Player no qual o arquivo SWF será carregado. Depois que o SWF é carregado em um nível, é possível usar a sintaxe _levelN, onde N é o número do nível, para especificar o SWF. Quando carrega um arquivo SWF, você pode especificar qualquer número de nível, inclusive carregar arquivos SWF em um nível que já contenha um arquivo SWF carregado. Caso faça isto, o novo SWF substituirá o SWF existente. Se você carregar um SWF no nível 0, todos os níveis do Flash Player serão descarregados e o nível 0 será substituído pelo novo arquivo. O SWF no nível 0 define a taxa de quadros, a cor de fundo e o tamanho do quadro de todos os outros SWF carregados. A ação loadMovieNum() também permite carregar arquivos JPEG em um arquivo SWF durante a reprodução do mesmo. No caso de imagens e arquivos SWF, o canto superior esquerdo da imagem é alinhado com o canto superior esquerdo do Palco durante o carregamento do arquivo. Além disso, nos dois casos, o arquivo carregado herda a rotação e o dimensionamento e o conteúdo original é substituído. Use unloadMovieNum() loadMovieNum(). para remover imagens ou arquivos SWF carregados com Exemplo Este exemplo carrega a imagem JPEG image45.jpg no nível 2 do Flash Player. loadMovieNum("http://www.blag.com/image45.jpg", 2); Consulte também loadMovie(), unloadMovieNum(), _level loadVariables() Disponibilidade Flash Player 4. Uso loadVariables ("url" , "target" [, variables]) Parâmetros url Um URL absoluto ou relativo no qual as variáveis estão localizadas. Se você acessar o arquivo SWF com um navegador da Web, o host do URL deverá estar no mesmo subdomínio do SWF. destino O caminho de destino para um clipe de filme que recebe as variáveis carregadas. variáveis Um parâmetro opcional que especifica um método HTTP para o envio de variáveis. O parâmetro deve ser a seqüência de caracteres GET ou POST. Se não houver nenhuma variável a ser enviada, omita esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado para seqüências de caracteres maiores de variáveis. Retorna Nada. loadVariables() 465 Descrição Função; lê dados de um arquivo externo, como um arquivo de texto ou um texto gerado por um script CGI, Active Server Pages (ASP), PHP ou um script Perl, e define os valores das variáveis em um nível do Flash Player ou em um clipe de filme de destino. Esta ação também pode ser usada para atualizar as variáveis no SWF ativo com novos valores. O texto no URL especificado deve ter o formato MIME padrão aplicativo/x-www-formato de url codificado (um formato padrão usado por scripts CGI). O SWF e as variáveis a serem carregadas devem residir no mesmo subdomínio. Qualquer número de variáveis pode ser especificado. Por exemplo, a frase abaixo define várias variáveis: company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103 O primeiro arquivo SWF a ser aberto em uma instância do Flash Player é carregado no nível inferior (identificado no código como _level0). Quando você usa loadMovie() ou loadMovieNum() para carregar arquivos SWF subseqüentes no Flash Player, é necessário atribuir um número de nível no Flash Player ou um clipe de filme de destino no qual todo SWF será carregado. Ao usar loadVariables(), você precisa especificar um MovieClip de destino no qual as variáveis serão carregadas. Se quiser carregar variáveis em um nível específico, use loadVariablesNum() em vez de loadVariables(). Exemplo Este exemplo carrega informações de um arquivo de texto em campos de texto no clipe de filme varTarget da Linha de tempo principal. Os nomes das variáveis dos campos de texto devem corresponder aos nomes das variáveis no arquivo data.txt. on (release) { loadVariables("data.txt", "_root.varTarget"); } Consulte também loadVariablesNum(), loadMovie(), loadMovieNum(), getURL(), MovieClip.loadMovie(), MovieClip.loadVariables() loadVariablesNum() Disponibilidade Flash Player 4. Os arquivos Flash 4 abertos no Flash 5 ou posterior serão convertidos para que usem a sintaxe correta. Uso loadVariablesNum ("url" ,level [, variables]) 466 Capítulo 12: Dicionário do ActionScript Parâmetros url Um URL absoluto ou relativo no qual as variáveis estão localizadas. Se você acessar o arquivo SWF com um navegador da Web, o host do URL deverá estar no mesmo subdomínio do SWF. nível Um inteiro que especifica o nível que receberá as variáveis no Flash Player. variáveis Um parâmetro opcional que especifica um método HTTP para o envio de variáveis. O parâmetro deve ser a seqüência de caracteres GET ou POST. Se não houver nenhuma variável a ser enviada, omita esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado para seqüências de caracteres maiores de variáveis. Retorna Nada. Descrição Função; lê os dados de um arquivo externo, como um arquivo de texto ou um texto gerado por um script CGI, Active Server Pages (ASP), PHP ou script Perl, e define os valores das variáveis em um nível do Flash Player. Você também pode usar esta função para atualizar variáveis no arquivo SWF ativo com novos valores. O texto no URL especificado deve ter o formato MIME padrão aplicativo/x-www-formato de url codificado (um formato padrão usado por scripts CGI). O arquivo SWF e as variáveis a serem carregadas devem residir no mesmo subdomínio. Qualquer número de variáveis pode ser especificado. Por exemplo, a frase abaixo define várias variáveis: company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103 O primeiro SWF a ser aberto em uma instância do Flash Player é carregado no nível inferior (identificado no código como _level0). Quando você usa loadMovie() ou loadMovieNum() para carregar SWF subseqüentes no Flash Player, é necessário atribuir um número de nível no Flash Player ou um clipe de filme de destino no qual todo SWF será carregado. Quando usar loadVariablesNum(), você precisará especificar um nível do Flash Player no qual as variáveis serão carregadas. Se quiser carregar variáveis em um MovieClip de destino, use loadVariables() em vez de loadVariablesNum(). Exemplo Este exemplo carrega informações de um arquivo de texto para campos de texto na Linha de tempo principal do SWF, no nível 0 do Flash Player. Os nomes das variáveis dos campos de texto devem corresponder aos nomes das variáveis no arquivo data.txt. on (release) { loadVariablesNum("data.txt", 0); } Consulte também getURL(), loadMovie(), loadMovieNum(), loadVariables(), MovieClip.loadMovie(), MovieClip.loadVariables() loadVariablesNum() 467 Classe LoadVars Disponibilidade Flash Player 6. Descrição A classe LoadVars é uma alternativa à função loadVariables() de transferência de variáveis entre um aplicativo Flash e um servidor. Você pode usar a classe LoadVars para obter a verificação de carregamento de dados adequado, indicações de progresso e fluxo de dados durante o download. A classe LoadVars funciona de maneira muito semelhante ao Classe XML. Ela utiliza os métodos load(), send() e sendAndLoad() para se comunicar com um servidor. A diferença principal entre a classe LoadVars e a XML é que a primeira transfere pares de nome e valor ActionScript, em vez da árvore DOM XML armazenada no objeto XML. A classe LoadVars segue as mesmas restrições de segurança da classe XML. É necessário usar o construtor new LoadVars() para criar um objeto LoadVars antes de chamar seus métodos. Resumo dos métodos da classe LoadVars Método Descrição LoadVars.addRequestHeader() Adiciona ou altera cabeçalhos HTTP de operações POST. LoadVars.getBytesLoaded() Retorna o número de bytes descarregados por LoadVars.load() ou por LoadVars.sendAndLoad(). LoadVars.getBytesTotal() Retorna o número total de bytes que serão descarregados por um método load ou sendAndLoad. LoadVars.load() Faz download de variáveis de um URL especificado. LoadVars.send() Envia variáveis de um objeto LoadVars para um URL. LoadVars.sendAndLoad() Envia variáveis de um objeto LoadVars para um URL e faz o download da resposta do servidor para um objeto de destino. LoadVars.toString() Retorna uma seqüência de caracteres codificados de URL que contenha todas as variáveis enumeráveis do objeto LoadVars. Resumo das propriedades da classe LoadVars 468 Propriedade Descrição LoadVars.contentType Indica um tipo de dados MIME. LoadVars.loaded Um valor booleano que indica se foi realizada uma operação load ou sendAndLoad. Capítulo 12: Dicionário do ActionScript Resumo de manipuladores de eventos da classe LoadVars Identificador de eventos Descrição LoadVars.onLoad Chamado quando uma operação load or sendAndLoad é concluída. Construtor da classe LoadVars Disponibilidade Flash Player 6. Uso new LoadVars() Parâmetros Nenhum. Retorna Nada. Descrição Construtor; cria um objeto LoadVars. Em seguida, você pode usar os métodos desse objeto LoadVars para enviar e carregar dados. Exemplo O exemplo abaixo cria um objeto LoadVars chamado my_lv: var my_lv = new LoadVars(); LoadVars.addRequestHeader() Disponibilidade Flash Player 6. Uso my_lv.addRequestHeader(headerName, headerValue) my_lv.addRequestHeader(["headerName_1", "headerValue_1" ... "headerName_n", "headerValue_n"]) Parâmetros headerName headerValue Nome de cabeçalho de solicitação HTTP. Valor associado ao headerName. Retorna Nada. LoadVars.addRequestHeader() 469 Descrição Método; adiciona ou altera os cabeçalhos de solicitação HTTP (como Content-Type ou SOAPAction) enviados com ações POST. No primeiro uso, passam-se duas seqüências de caracteres para o método: headerName e headerValue. No segundo uso, passa-se um array de seqüências de caracteres, que alterna nomes e valores de cabeçalho. Se forem feitas várias chamadas para definir o mesmo nome de cabeçalho, cada valor sucessivo substituirá o valor definido na chamada anterior. Os seguintes cabeçalhos HTTP padrão não podem ser incluídos nem alterados com este método: Accept-Ranges, Age, Allow, Allowed, Connection, Content-Length, Content-Location, Content-Range, ETag, Host, Last-Modified, Locations, Max-Forwards, ProxyAuthenticate, Proxy-Authorization, Public, Range, Retry-After, Server, TE, Trailer, Transfer-Encoding, Upgrade, URI, Vary, Via, Warning e WWW-Authenticate. Exemplo Este exemplo acrescenta ao objeto my_lv um cabeçalho HTTP personalizado, denominado SOAPAction, com o valor qualquer. my_lv.addRequestHeader("SOAPAction", "'qualquer"); O seguinte exemplo cria um array denominado cabeçalhos que contém dois cabeçalhos HTTP alternados com seus respectivos valores. O array é passado como argumento para addRequestHeader(). var headers = ["Content-Type", "text/plain", "X-ClientAppVersion", "2.0"]; my_lv.addRequestHeader(cabeçalhos); Consulte também XML.addRequestHeader() 470 Capítulo 12: Dicionário do ActionScript LoadVars.contentType Disponibilidade Flash Player 6. Uso my_lv.contentType Descrição Propriedade; o tipo MIME enviado ao servidor quando você chama LoadVars.send() ou LoadVars.sendAndLoad(). O padrão é aplicativo/x-www-codificado na forma de url. Consulte também LoadVars.send(), LoadVars.sendAndLoad() LoadVars.getBytesLoaded() Disponibilidade Flash Player 6. Uso my_lv.getBytesLoaded() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna a quantidade de bytes descarregada por LoadVars.load() ou LoadVars.sendAndLoad(). Este método retornará undefined se não houver nenhum carregamento em execução ou se a carga ainda não tiver sido iniciada. LoadVars.getBytesLoaded() 471 LoadVars.getBytesTotal() Disponibilidade Flash Player 6. Uso my_lv.getBytesTotal() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna a quantidade total de bytes descarregada por LoadVars.load() ou LoadVars.sendAndLoad(). Este método retornará undefined se não houver nenhum carregamento em execução ou se a carga ainda não tiver sido iniciada. Este método também retornará undefined se não for possível determinar o número total de bytes, por exemplo, quando o download tiver sido iniciado, mas o servidor não tiver transmitido um elemento content-length de HTTP. LoadVars.load() Disponibilidade Flash Player 6. Uso my_lv.load(url) Parâmetros url O URL de onde será feito o download das variáveis. Retorna Uma seqüência de caracteres. Descrição Método; faz download de variáveis do URL especificado, analisa os dados da variável e coloca as variáveis resultantes em my_lv. As propriedades de my_lv com o mesmo nome de variáveis descarregadas são substituídas. As propriedades de my_lv com nomes diferentes das variáveis descarregadas não são excluídas. Esta é uma ação assíncrona. Os dados descarregados devem estar codificados com o tipo de conteúdo MIME aplicativo/xwww-codificado na forma de url. Este é o mesmo formato usado por loadVariables(). Este método é semelhante a XML.load(). 472 Capítulo 12: Dicionário do ActionScript LoadVars.loaded Disponibilidade Flash Player 6. Uso my_lv.loaded Descrição Propriedade; indefinida por padrão. Quando é iniciada a operação LoadVars.load() ou LoadVars.sendAndLoad(), a propriedade loaded é definida como false; quando a operação é concluída, a propriedade loaded é definida como true. Se a operação ainda não tiver sido concluída ou tiver apresentado erros, a propriedade loaded permanecerá definida como false. Esta propriedade é semelhante a XML.loaded. LoadVars.loaded 473 LoadVars.onData Disponibilidade Flash Player 5. Uso my_lv.onData = function(src) { // seus comandos vão aqui } Parâmetros src Dados brutos (não analisados) de uma chamada de método LoadVars.load() ou .LoadVars.sendAndLoad() Retorna Nada. Descrição Manipulador de eventos; chamado quando totalmente concluído o download dos dados do servidor ou se ocorrer um erro durante o download de dados de um servidor. Este manipulador é chamado antes da análise dos dados e, portanto, pode ser usado para chamar uma rotina de análise personalizada em vez da análise incorporada ao Flash Player. O valor do parâmetro src passado para a função associada a LoadVars.onData pode ser undefined ou uma seqüência de caracteres que contenha os pares de valores de nome com codificação URL descarregados do servidor. Se o valor retornado for undefined, terá ocorrido um erro durante o download dos dados do servidor. A implementação padrão de LoadVars.onData invoca LoadVars.onLoad. Você pode substituir a implementação padrão atribuindo uma função personalizada a LoadVars.onData, porém LoadVars.onLoad não será mais chamado a menos que você o chame na implementação de LoadVars.onData. Exemplo O exemplo abaixo mostra a implementação padrão de LoadVars.onData: LoadVars.prototype.onData = function (src) { if (src == undefined) { this.onLoad(false); else { this.decode(src); this.loaded = true; this.onLoad(true); } } 474 Capítulo 12: Dicionário do ActionScript LoadVars.onLoad Disponibilidade Flash Player 6. Uso my_lv.onLoad = function(sucesso) { // seus comandos vão aqui } Parâmetros sucesso O parâmetro indica se a operação de carregamento foi concluída com êxito (true) ou não (false). Retorna Um valor booleano. Descrição Manipulador de eventos; chamado quando é concluída uma operação LoadVars.load() ou LoadVars.sendAndLoad(). Se a operação tiver sido bem sucedida, my_lv será preenchida com variáveis descarregadas pela operação, que ficarão disponíveis quando este manipulador for invocado. Este método permanecerá indefinido por padrão, mas será possível defini-lo pela associação de uma função de retorno de chamada. Este método é semelhante a XML.onLoad(). LoadVars.onLoad 475 LoadVars.send() Disponibilidade Flash Player 6. Uso my_lv.send(url [,destino, método]) Parâmetros url O URL no qual as variáveis devem ser carregadas. destino A janela de quadro do navegador na qual as respostas serão exibidas. método O método GET ou POST do protocolo HTTP. Retorna Uma seqüência de caracteres. Descrição Método; envia as variáveis do objeto my_lv para o URL especificado. Todas as variáveis enumeráveis de my_lv são concatenadas a uma seqüência de caracteres no formato application/xwww-urlform-encoded, por padrão, e a seqüência de caracteres é enviada para o URL usando o método HTTP POST. Este é o mesmo formato usado pela ação loadVariables(). O tipo de conteúdo MIME enviado nos cabeçalhos de solicitação HTTP é o valor de my_lv.contentType ou o padrão application/x-www-urlform-encoded. É usado o método POST, a menos que seja especificado GET. Se o parâmetro destino for especificado, a resposta do servidor será exibida na janela de quadro do navegador chamada destino. Se o parâmetro destino for omitido, a resposta do servidor será descartada. Este método é semelhante a XML.send(). 476 Capítulo 12: Dicionário do ActionScript LoadVars.sendAndLoad() Disponibilidade Flash Player 6. Uso my_lv.sendAndLoad(url, objetoDestino[, método]) Parâmetros O objeto LoadVars a partir do qual as variáveis devem ser carregadas. my_lv url O URL no qual as variáveis devem ser carregadas. targetObject método O objeto LoadVars que recebe as variáveis descarregadas. O método GET ou POST do protocolo HTTP. Retorna Uma seqüência de caracteres. Descrição Método; envia variáveis do objeto my_lv para o URL especificado. A resposta do servidor é descarregada e analisada como dados variáveis. As variáveis resultantes são colocadas no objeto objetoDestino. As variáveis são enviadas por POST da mesma maneira que em LoadVars.send(). As variáveis são descarregadas em objetoDestino da mesma maneira que em LoadVars.load(). Este método é semelhante a XML.sendAndLoad(). LoadVars.sendAndLoad() 477 LoadVars.toString() Disponibilidade Flash Player 6. Uso my_lv.toString() Parâmetros Nenhum. Retorna Uma seqüência de caracteres. Descrição Método; retorna uma seqüência de caracteres que contém todas as variáveis enumeráveis em my_lv, na codificação de conteúdo MIME application/x-www-urlform-encoded. Exemplo var myVars = new LoadVars(); myVars.name = “Gary”; myVars.age = 26; trace (myVars.toString()); //would output //nome=Beto&idade=26 478 Capítulo 12: Dicionário do ActionScript Classe LocalConnection Disponibilidade Flash Player 6. Descrição A classe LocalConnection permite que você desenvolva arquivos SWF que possam enviar instruções uns aos outros sem usar fscommand() ou JavaScript. Objetos LocalConnection só podem se comunicar entre arquivos SWF em execução na mesma máquina cliente, porém podem ser executados em dois aplicativos diferentes — por exemplo, um arquivo SWF em execução em um navegador e um arquivo SWF em execução em um projetor. Os objetos LocalConnection podem ser usados para enviar e receber dados dentro de um único SWF, mas esta não é uma implementação padrão; todos os exemplos desta seção ilustram a comunicação entre diferentes SWFs. Os métodos básicos usados para enviar e receber dados são LocalConnection.send() e No modo mais básico, o código implementará os seguintes comandos. Observe que tanto o comando LocalConnection.send() quanto o LocalConnection.connect() especificam o mesmo nome de conexão, lc_name: LocalConnection.connect(). // Código no filme receptor receiving_lc = new LocalConnection(); receiving_lc.metodoAExecutar = function(param1, param2) { // Código a executar } receiving_lc.connect("lc_name"); // Código no filme emissor sending_lc = new LocalConnection(); sending_lc.send("lc_name", "metodoAExecutar", dado1, dado2) A maneira mais simples de usar um objeto LocalConnection é permitir a comunicação somente entre objetos LocalConnection localizados no mesmo domínio, pois você não terá que cuidar de questões relativas à segurança. Entretanto, se precisar permitir a comunicação entre domínios, você terá várias maneiras de implementar medidas de segurança. Para obter mais informações, consulte a descrição do parâmetro connectionName em LocalConnection.send(), além das entradas LocalConnection.allowDomain e LocalConnection.domain(). Resumo de métodos da classe LocalConnection Método Descrição LocalConnection.close() Fecha (desconecta) o objeto LocalConnection. LocalConnection.connect() Prepara o objeto LocalConnection para receber comandos de um comando LocalConnection.send(). LocalConnection.domain() Retorna uma seqüência de caracteres que representa o subdomínio do local do arquivo SWF atual. LocalConnection.send() Invoca um método de um objeto LocalConnection específico. Classe LocalConnection 479 Resumo de manipuladores de eventos da classe LocalConnection Identificador de eventos Descrição LocalConnection.allowDomain Invocado sempre que o objeto LocalConnection (receptor) atual recebe uma solicitação para invocar um método de um objeto LocalConnection emissor. LocalConnection.onStatus Invocado depois que um objeto LocalConnection emissor tenta enviar um comando para um objeto LocalConnection receptor. Construtor da classe LocalConnection Disponibilidade Flash Player 6. Uso new LocalConnection() Parâmetros Nenhum. Retorna Nada. Descrição Construtor; cria um objeto LocalConnection. Exemplo O exemplo abaixo mostra como um SWF receptor e emissor cria objetos LocalConnnection. Observe que os dois SWF podem usar o mesmo nome ou nomes diferentes para os respectivos objetos LocalConnection. Neste exemplo, eles usam o mesmo nome — my_lc. // Código do SWF receptor my_lc = new LocalConnection(); my_lc.umMetodo = function() { // Seus comandos vão aqui } my_lc.connect("connectionName"); // Código do SWF emissor my_lc = new LocalConnection(); my_lc.send("connectionName", "umMetodo"); Consulte também LocalConnection.connect(), LocalConnection.send() 480 Capítulo 12: Dicionário do ActionScript LocalConnection.allowDomain Disponibilidade Flash Player 6. Uso receiving_lc.allowDomain = function([sendingDomain]) { // Seus comandos, que retornam true ou false } Parâmetros Parâmetro opcional que especifica o subdomínio do arquivo SWF que contém o objeto LocalConnection emissor. sendingDomain Retorna Nada. Descrição Manipulador de eventos; invocado sempre que receiving_lc recebe uma solicitação para invocar um método de um objeto LocalConnection emissor. O Flash espera de que o código que você implementar neste manipulador retorne um valor booleano true ou false. Se o manipulador não retornar true, a solicitação do objeto emissor será ignorada e o método não será invocado. Use este comando para permitir explicitamente que objetos LocalConnection dos domínios especificados ou de qualquer domínio executem métodos do objeto LocalConnection receptor. Se não passar um valor para o parâmetro sendingDomain, assume-se que você deseja aceitar comandos de qualquer domínio. Neste caso, o código do seu manipulador será simplesmente return true. Caso passe um valor para sendingDomain, seu código deverá comparar o valor de sendingDomain com os domínios dos quais deseja a aceitar comandos. Essas duas implementações são ilustradas nos seguintes exemplos. Exemplo O exemplo abaixo mostra como um objeto LocalConnection de um SWF receptor pode permitir que SWFs de qualquer domínio invoquem seus métodos. Compare com o exemplo em LocalConnection.connect(), no qual somente SWFs do mesmo domínio podem invocar o método Trace no SWF receptor. Para obter uma descrição do uso do sublinhado (_) no nome da conexão, consulte LocalConnection.send(). var aLocalConnection = new LocalConnection(); aLocalConnection.Trace = function(aString) { aTextField = aTextField + aString + newline; } aLocalConnection.allowDomain = function() { // Qualquer domínio pode invocar métodos deste objeto LocalConnection retorna true; } aLocalConnection.connect("_trace"); LocalConnection.allowDomain 481 No exemplo abaixo, o arquivo SWF receptor aceita comandos somente dos SWF localizados em esteDominio.com ou em aqueleDominio.com. var aLocalConnection = new LocalConnection(); aLocalConnection.Trace = function(aString) { aTextField = aTextField + aString + newline; } aLocalConnection.allowDomain = function(sendingDomain) { return(sendingDomain=="esteDominio.com" || sendingDomain=="aqueleDomínio.com"); } aLocalConnection.connect("_trace"); Consulte também LocalConnection.connect(), LocalConnection.domain(), LocalConnection.send() LocalConnection.allowInsecureDomain() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. LocalConnection.close() Disponibilidade Flash Player 6. Uso receiving_lc.close Parâmetros Nenhum. Retorna Nada. Descrição Método; fecha (desconecta) um objeto LocalConnection. Utilize este comando quando não LocalConnection.connect() quiser mais que o objeto aceite comandos — por exemplo, quando quiser utilizar um comando usando o mesmo parâmetro connectionName em outro arquivoSWF. Consulte também LocalConnection.connect() 482 Capítulo 12: Dicionário do ActionScript LocalConnection.connect() Disponibilidade Flash Player 6. Uso receiving_lc.connect(connectionName) Parâmetros connectionName Seqüência de caracteres correspondente ao nome da conexão especificada comando LocalConnection.send(), que deve fazer a comunicação com receiving_lc. no Retorna O valor booleano true, se não houver outro processo em execução, na mesma máquina cliente, que já tenha emitido este comando com o mesmo valor para o parâmetro connectionName. Caso contrário, o valor será false. Descrição Método; prepara um objeto LocalConnection para receber comandos de um comando LocalConnection.send() (chamado "objeto LocalConnection emissor”). O objeto usado com este comando é chamado "objeto LocalConnection receptor". Os objetos receptor e emissor devem estar em execução na mesma máquina cliente. É importante definir os métodos anexados a receiving_lc antes de chamar este método, conforme mostrado em todos os exemplos desta seção. Por padrão, o Flash Player converte connectionName em um valor no formato "subdomain:connectionName", onde subdomain é o subdomínio do arquivo SWF que contém o comando LocalConnection.connect(). Se, por exemplo, o SWF que contém o objeto LocalConnection receptor estiver no endereço www.umDominio.com, o connectionName o resolverá com "umDominio.com:connectionName". (Se um SWF for localizado na máquina cliente, o valor atribuído a subdomain será "localhost".) Também como padrão, o Flash Player permite que o objeto LocalConnection receptor aceite comandos apenas dos objetos LocalConnection emissores cujos nomes de conexão também estejam no formato "subdomain:connectionName". Deste modo, o Flash torna muito simples a comunicação entre os SWFs localizados no mesmo domínio. Se você estiver implementando comunicação somente entre arquivos SWF do mesmo domínio, especifique uma seqüência de caracteres para connectionName que não comece com um sublinhado (_) e que não especifique um nome de domínio (por exemplo, "myDomain:connectionName"). Use a mesma seqüência de caracteres no comando LocalConnection.connect(connectionName). Se você estiver implementando comunicação entre arquivos SWF localizados em domínios diferentes, consulte LocalConnection.send() e LocalConnection.allowDomain, além da discussão sobre connectionName em LocalConnection.domain(). LocalConnection.connect() 483 Exemplo O exemplo abaixo mostra como um arquivo SWF em um determinado domínio pode invocar um método chamado Trace em um SWF receptor do mesmo domínio. O SWF receptor funciona como uma janela do SWF emissor onde se apresentam textos através de ações trace. Ele contém dois métodos que podem ser chamados por outros SWF — Trace e Clear. Pressionar botões nos SWF emissores chama esses métodos com os parâmetros especificados. // SWF receptor var aLocalConnection = new LocalConnection(); aLocalConnection.Trace = function(aString) { aTextField = aTextField + aString + newline; } aLocalConnection.Clear = function() { aTextField = ""; } aLocalConnection.connect("trace"); stop(); O SWF1 contém o seguinte código anexado a um botão com o rótulo Pressione. Ao pressionar o botão, você verá a frase "O botão foi pressionado" no SWF receptor. on (press) { var lc = new LocalConnection(); lc.send("trace", "Trace", "O botão foi pressionado."); delete lc; } O SWF 2 contém uma caixa de texto de entrada com um nome de variável myText e o seguinte código anexado a um botão com o rótulo Copy (Copiar). Ao digitar algum texto e pressionar o botão, você verá o texto que digitou no SWF receptor. on (press) { _parent.lc.send("trace", "Trace", _parent.myText); _parent.myText = ""; } O SWF 3 contém o seguinte código anexado a um botão com o rótulo Clear (Limpar). Ao pressionar o botão, você limpa (apaga) o conteúdo da janela de controle do SWF receptor. on (press) { var lc = new LocalConnection(); lc.send("trace", "Clear"); delete lc; } Consulte também LocalConnection.send() 484 Capítulo 12: Dicionário do ActionScript LocalConnection.domain() Disponibilidade Flash Player 6. Uso my_lc.domain() Parâmetros Nenhum. Retorna Uma seqüência de caracteres que representa o subdomínio do local do atual arquivo SWF. Descrição Método; retorna uma seqüência de caracteres que representa o subdomínio do local do arquivo SWF atual. Se, por exemplo, o SWF estiver localizado no endereço www.macromedia.com, este comando retorna "macromedia.com". Se o SWF atual for um arquivo local residente na máquina cliente, este comando retornará "localhost". A maneira mais comum de usar este comando é incluindo o nome de domínio do objeto LocalConnection emissor como um parâmetro para o método que você planeja invocar no objeto LocalConnection receptor, ou em conjunto com LocalConnection.allowDomain para aceitar comandos de um determinado domínio. Se estiver ativando a comunicação somente entre objetos LocalConnection localizados no mesmo domínio, você provavelmente não precisará usar este comando. Exemplo No exemplo abaixo, o SWF receptor somente aceita comandos de outros SWF localizados no mesmo domínio ou no macromedia.com. my_lc = new LocalConnection(); my_lc.allowDomain = function(sendingDomain) { return (sendingDomain==this.domain() || sendingDomain=="macromedia.com"); } Neste exemplo, um SWF localizado em seudominio.com invoca um método em um SWF receptor localizado em meudominio.com. O SWF emissor inclui seu nome de domínio como um parâmetro para o método que invoca, assim o SWF receptor pode retornar um valor de resposta para um objeto LocalConnection no domínio correto. O SWF emissor também especifica que aceitará comandos somente dos SWF em meudominio.com. Os números de linhas são incluídos para fins de referência. A seqüência de eventos é a seguinte: • O SWF receptor prepara-se para receber comandos em uma conexão chamada "sum" • (linha 11). O Flash Player resolve o nome desta conexão como "meudominio.com:sum" (consulte LocalConnection.connect()). O SWF emissor prepara-se para receber uma resposta no objeto LocalConnection chamado "result" (linha 58). E também especifica que aceitará comandos somente de SWF do meudominio.com (linhas 51 a 53). LocalConnection.domain() 485 • O SWF invoca o método aSum de uma conexão chamada "meudominio.com:sum" (linha 59) e • passa os seguintes parâmetros: seu domínio (lc.domain()), o nome da conexão para recebimento da resposta ("result") e os valores que devem ser usados por aSum (123 e 456). O método aSum (linha 6) é invocado com os seguintes valores: sender="meudominio.com:result", replyMethod="aResult", n1=123, and n2=456. Portanto, ele executa a seguinte linha de código: this.send("meudominio.com:result", "aResult", (123 + 456)); • O método aResult (linha 54) exibe o valor retornado por aSum (579). // O SWF receptor em http://www.meudominio.com/folder/movie.swf // contém o seguinte código 1 2 3 4 5 6 7 8 9 10 11 var aLocalConnection = new LocalConnection(); aLocalConnection.allowDomain = function() { // Permite conexões de qualquer domínio return true; } aLocalConnection.aSum = function(sender, replyMethod, n1, n2) { this.send(sender, replyMethod, (n1 + n2)); } aLocalConnection.connect("sum"); // O SWF emissor em http://www.seudominio.com/folder/movie.swf // contém o seguinte código 50 51 52 53 54 55 56 57 58 59 var lc = new LocalConnection(); lc.allowDomain = function(aDomain) { // Permite conexões somente de meudominio.com return (aDomain == "meudominio.com"); } lc.aResult = function(aParam) { trace("A soma é " + aParam); } lc.connect("result"); lc.send("meudominio.com:sum", "aSum", lc.domain() + ':' + "result", "aResult", 123, 456); Consulte também LocalConnection.allowDomain 486 Capítulo 12: Dicionário do ActionScript LocalConnection.onStatus Disponibilidade Flash Player 6. Uso sending_lc.onStatus = function(infoObject) { // seus comandos vão aqui } Parâmetros Um parâmetro definido de acordo com a mensagem de status. Para obter informações sobre este parâmetro, veja a descrição abaixo. infoObject Retorna Nada. Descrição Manipulador de eventos; invocado depois que um objeto LocalConnection emissor tenta enviar um comando para um objeto LocalConnection receptor. Se quiser responder a este manipulador de eventos, você precisará criar uma função para processar o objeto de informações enviado pelo objeto LocalConnection. Se a propriedade level do objeto de informações retornado por este manipulador apresentar o valor "status", o Flash terá tido sucesso no envio do comando para um objeto LocalConnection receptor. Isto não significa que o Flash invocou com êxito o método específico do objeto LocalConnection receptor, mas significa apenas que o Flash conseguiu enviar o comando. Por exemplo, o método não será invocado se o objeto LocalConnection receptor não permitir conexões do domínio emissor ou se não for um método existente. A única maneira de saber com certeza se o método foi invocado é fazendo com que o objeto receptor envie uma resposta ao objeto emissor. Se a propriedade level do objeto de informações retornado por este identificador apresentar o valor "error", o Flash não terá conseguido enviar o comando para um objeto LocalConnection receptor, muito provavelmente porque não há nenhum objeto LocalConnection receptor conectado cujo nome corresponda ao nome especificado no comando sending_lc.send() que invocou este manipulador. Na maioria dos casos, você implementará este manipulador somente para responder às condições de erro, conforme mostrado no exemplo abaixo. Exemplo Este exemplo exibe informações em uma janela de controle sobre uma conexão interrompida. sending_lc = new LocalConnection(); sending_lc.onStatus = function(infoObject) { if (infoObject.level == "error") { trace("Não foi possível conectar."); } } sending_lc.send("receiving_lc", "methodName"); LocalConnection.onStatus 487 Consulte também LocalConnection.send() LocalConnection.send() Disponibilidade Flash Player 6. Uso sending_lc.send (connectionName, method [, p1,...,pN]) Parâmetros connectionName Seqüência de caracteres que corresponde ao nome de conexão especificado no comando LocalConnection.connect() que precisa se comunicar com sending_lc. method Seqüência de caracteres que especifica o nome do método a ser invocado no objeto LocalConnection receptor. Os nomes dos seguintes métodos levam à falha do comando: send, connect, close, domain, onStatus e allowDomain. p1,...pN Parâmetros opcionais que devem ser passados para o método específico. Retorna O valor booleano true, se o Flash puder executar a solicitação; caso contrário, o valor será false. Observação: O retorno do valor true não significa necessariamente que o Flash conectou-se com êxito a um objeto LocalConnection receptor, mas que o comando está sintaticamente correto. Para determinar se a conexão foi bem sucedida, consulte LocalConnection.onStatus. Descrição Método; invoca o método chamado method em uma conexão aberta com o comando LocalConnection.connect(connectionName) (chamado “objeto LocalConnection receptor”). O objeto usado com este comando é chamado “objeto LocalConnection emissor”. Os arquivos SWF que contêm os objetos emissor e receptor devem estar em execução na mesma máquina cliente. Há um limite para a quantidade de dados que pode ser passada como parâmetro para este comando. Se o comando retornar false, mas a sintaxe estiver correta, tente dividir as solicitações LocalConnection.send() em vários comandos. Conforme discutido na entrada LocalConnection.connect(), como padrão, o Flash adiciona o atual subdomínio a connectionName. Se estiver implementando comunicação entre domínios diferentes, você precisará definir o connectionName nos dois objetos LocalConnection emissor e receptor, de tal maneira que o Flash não adicione o atual subdomínio ao connectionName. Há duas maneiras de fazer isso: • Use um sublinhado (_) no início do connectionName dos objetos LocalConnection emissor e receptor. No arquivo SWF que contém o objeto receptor, use para especificar que as conexões de qualquer domínio serão aceitas. Esta implementação permite que você armazene os SWF emissor e receptor em qualquer domínio. LocalConnection.allowDomain 488 Capítulo 12: Dicionário do ActionScript • Inclua o subdomínio do connectionName no objeto LocalConnection emissor. Por exemplo, meudominio:myConnectionName. No objeto receptor, use LocalConnection.allowDomain para indicar que as conexões do domínio especificado serão aceitas (neste caso, meudominio.com) ou que as conexões de qualquer domínio serão aceitas. Observação: Você não pode especificar um subdomínio do connectionName no objeto LocalConnection receptor, somente no objeto LocalConnection emissor. Exemplo Para obter um exemplo da comunicação entre objetos LocalConnection localizados no mesmo domínio, consulte LocalConnection.connect(). Para obter um exemplo da comunicação entre objetos LocalConnection localizados em qualquer domínio, consulte LocalConnection.allowDomain. Para obter um exemplo da comunicação entre objetos LocalConnection localizados em domínios específicos, consulte LocalConnection.allowDomain e LocalConnection.domain(). Consulte também LocalConnection.allowDomain, LocalConnection.connect(), LocalConnection.domain(), LocalConnection.onStatus lt (menor que — seqüência de caracteres específica) Disponibilidade Flash Player 4. Este operador foi substituído no Flash 5 pelo novo operador < (menor que). Uso expression1 lt expression2 Parâmetros expression1, expression2 Números, seqüências de caracteres ou variáveis Descrição Operador (comparação); compara a expression1 com a expression2 e retorna true se expression1 for menor do que expression2; caso contrário, retorna false. Consulte também < (menor que) lt (menor que — seqüência de caracteres específica) 489 Classe Math Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Descrição A classe Math é uma classe do nível mais alto, cujos métodos e propriedades podem ser usados sem um construtor. Use os métodos e propriedades desta classe para acessar e manipular constantes e funções matemáticas. Todas as propriedades e métodos da classe Math são estáticas e devem ser chamadas com a sintaxe Math.method(parameter) ou Math.constant. Em ActionScript, as constantes são definidas com a precisão máxima de números de ponto flutuante IEEE-754 de dupla precisão. Vários métodos da classe Math usam o radiano de um ângulo como parâmetro. Você pode usar a equação abaixo para calcular os valores radianos ou simplesmente passar a equação (inserindo um valor para graus) para o parâmetro radiano. Para calcular um valor radiano, use esta fórmula: radiano = Math.PI/180 * grau O exemplo a seguir mostra a passagem de uma equação como um parâmetro para calcular o seno de um ângulo de 45 graus: Math.SIN(Math.PI/180 * 45) é o mesmo que Math.SIN(.7854) A classe Math é totalmente suportada no Flash Player 5. No Flash Player 4, podem ser usados métodos da classe Math, mas eles são emulados com aproximações e podem não ser tão precisos como as funções matemáticas não emuladas suportadas pelo Flash Player 5. Resumo de métodos da classe Math 490 Método Descrição Math.abs() Calcula um valor absoluto. Math.acos() Calcula um arco cosseno. Math.asin() Calcula um arco seno. Math.atan() Calcula um arco tangente. Math.atan2() Calcula um ângulo do eixo x ao ponto. Math.ceil() Arredonda um número para o inteiro mais próximo Math.cos() Calcula um cosseno. Math.exp() Calcula um valor exponencial. Math.floor() Arredonda um número para o inteiro mais próximo Math.log() Calcula um logaritmo natural. Math.max() Retorna o maior de dois inteiros. Capítulo 12: Dicionário do ActionScript Método Descrição Math.min() Retorna o menor de dois inteiros. Math.pow() Calcula x elevado à potência de y. Math.random() Retorna um número pseudo-aleatório entre 0.0 e 1.0. Math.round() Arredonda para o inteiro mais próximo. Math.sin() Calcula um seno. Math.sqrt() Calcula uma raiz quadrada. Math.tan() Calcula uma tangente. Resumo de propriedades da classe Math Todas as propriedades da classe Math são constantes. Propriedade Descrição Math.E Constante de Euler e a base de logaritmos naturais (aproximadamente 2,718). Math.LN2 O logaritmo natural de 2 (aproximadamente 0,693). Math.LOG2E O logaritmo de base 2 de e (aproximadamente 1,442). Math.LN2 O logaritmo natural de10 (aproximadamente 2,302). Math.LOG10E O logaritmo de base 10 de e (aproximadamente 0,434). Math.PI A razão entre a circunferência de um círculo e o seu diâmetro (aproximadamente 3,14159). Math.SQRT1_2 O inverso da raiz quadrada de 1/2 (aproximadamente 0,707). Math.SQRT2 A raiz quadrada de 2 (aproximadamente 1,414). Math.abs() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.abs(x) Parâmetros x Um número. Retorna Um número. Descrição Método; calcula e retorna o valor absoluto do número especificado pelo parâmetro x. Math.abs() 491 Math.acos() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.acos(x) Parâmetros x Um número de -1,0 a 1,0. Retorna Nada. Descrição Método; calcula e retorna o arco cosseno do número especificado no parâmetro x, em radianos. Math.asin() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.asin(x); Parâmetros x Um número de -1,0 a 1,0. Retorna Um número. Descrição Método; calcula e retorna o arco seno de um número especificado no parâmetro x, em radianos. 492 Capítulo 12: Dicionário do ActionScript Math.atan() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.atan(x) Parâmetros x Um número. Retorna Um número. Descrição Método; calcula e retorna o arco tangente do número especificado no parâmetro x. O valor retornado está entre o pi negativo dividido por 2 e o pi positivo dividido por 2. Math.atan2() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.atan2(y, x) Parâmetros x Um número que especifica a coordenada x do ponto. y Um número que especifica a coordenada y do ponto. Retorna Um número. Descrição Método; calcula e retorna o arco tangente de y/x em radianos. O valor retornado representa o ângulo referente ao cateto oposto de um triângulo retângulo, onde x é o cateto adjacente e y é o cateto oposto. Math.atan2() 493 Math.ceil() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.ceil(x) Parâmetros x Um número ou expressão. Retorna Um número. Descrição Método; retorna o teto do número ou expressão especificada. O teto de um número é o número inteiro mais próximo que é maior que ou igual ao número. Math.cos() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e as propriedades da classe Math são emulados através de aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.cos(x) Parâmetros x Um ângulo medido em radianos. Retorna Um número. Descrição Método; retorna o cosseno (um valor de -1,0 a 1,0) do ângulo especificado pelo parâmetro x. O ângulo x deve ser especificado em radianos. Use as informações descritas na entrada Classe Math para calcular um radiano. 494 Capítulo 12: Dicionário do ActionScript Math.E Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.E Parâmetros Nenhum. Retorna Nada. Descrição Constante; uma constante matemática para a base de logaritmos naturais, apresentados como e. O valor aproximado de e é 2,71828. Math.exp() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.exp(x) Parâmetros x O exponente; um número ou expressão. Retorna Um número. Descrição Método; retorna o valor de base do logaritmo natural (e) elevado à potência do exponente especificado no parâmetro x. A constante Math.E pode fornecer o valor de e. Math.exp() 495 Math.floor() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.floor(x) Parâmetros x Um número ou expressão. Retorna Um número. Descrição Método; retorna o piso do número ou expressão especificada no parâmetro x. O piso é o inteiro mais próximo menor ou igual ao número ou expressão especificada. Exemplo O exemplo de código a seguir retorna um valor 12: Math.floor(12.5); Math.log() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.log(x) Parâmetros x Um número ou expressão com um valor maior que 0. Retorna Um número. Descrição Método; retorna o logaritmo do parâmetro x. 496 Capítulo 12: Dicionário do ActionScript Math.LN2 Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.LN2 Parâmetros Nenhum. Retorna Nada. Descrição Constante; uma constante matemática do logaritmo natural de 2, expressa como log e2, com um valor aproximado de 0.69314718055994528623. Math.LN10 Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.LN10 Parâmetros Nenhum. Retorna Nada. Descrição Constante; uma constante matemática do logaritmo natural de 10, expressa como log e10, com um valor aproximado de 2,3025850929940459011. Math.LN10 497 Math.LOG2E Disponibilidade Flash Player 5. No Flash Player 4, os métodos e as propriedades da classe Math são emulados através de aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.LOG2E Parâmetros Nenhum. Retorna Nada. Descrição Constante; constante matemática do logaritmo de base 2 da constante e (Math.E), expressa como log2e, com um valor aproximado de 1,442695040888963387. Math.LOG10E Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.LOG10E Parâmetros Nenhum. Retorna Nada. Descrição Constante; uma constante matemática para o logaritmo de base 10 da constante e (Math.E), expressa como log 10e, com um valor aproximado de 0,43429448190325181667. 498 Capítulo 12: Dicionário do ActionScript Math.max() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.max(x , y) Parâmetros x Um número ou expressão. y Um número ou expressão. Retorna Um número. Descrição Método; avalia x e y e retorna o maior valor. Math.min() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.min(x , y) Parâmetros x Um número ou expressão. y Um número ou expressão. Retorna Um número. Descrição Método; avalia x e y e retorna o menor valor. Math.min() 499 Math.PI Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.PI Parâmetros Nenhum. Retorna Nada. Descrição Constante; uma constante matemática da razão entre a circunferência de um círculo e o seu diâmetro expressa como pi, com um valor de 3,14159265358979 Math.pow() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.pow(x , y) Parâmetros x Um número a ser elevado a uma potência. y Um número que especifica a potência à qual o parâmetro x é elevado. Retorna Um número. Descrição Método; calcula e retorna x à potência de y: xy. 500 Capítulo 12: Dicionário do ActionScript Math.random() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.random() Parâmetros Nenhum. Retorna Um número. Descrição Método; retorna n, onde 0 <= n < 1. Consulte também random Math.round() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.round(x) Parâmetros x Um número. Retorna Um número. Descrição Método; arredonda o valor do parâmetro x para cima ou para baixo para o inteiro mais próximo e retorna esse valor. Math.round() 501 Math.sin() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e as propriedades da classe Math são emulados através de aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.sin(x) Parâmetros x Um ângulo medido em radianos. Retorna Número; o seno do ângulo especificado (entre -1,0 e 1,0). Descrição Método; calcula e retorna o seno do ângulo especificado em radianos. Use as informações descritas na entrada Classe Math para calcular um radiano. Math.sqrt() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.sqrt(x) Parâmetros x Um número ou expressão maior que ou igual a 0. Retorna Um número. Descrição Método; calcula e retorna a raiz quadrada do número especificado. 502 Capítulo 12: Dicionário do ActionScript Math.SQRT1_2 Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.SQRT1_2 Parâmetros Nenhum. Retorna Nada. Descrição Constante; constante matemática da raiz quadrada de 1/2. Math.SQRT2 Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.SQRT2 Parâmetros Nenhum. Descrição Constante; uma constante matemática para a raiz quadrada de 2, com um valor aproximado de 1,414213562373. Math.SQRT2 503 Math.tan() Disponibilidade Flash Player 5. No Flash Player 4, os métodos e propriedades da classe Math são emulados com aproximações e podem não ser tão precisos quanto as funções matemáticas não emuladas suportadas pelo Flash Player 5. Uso Math.tan(x) Parâmetros x Um ângulo medido em radianos. Retorna Um número. Descrição Método; calcula e retorna a tangente do ângulo especificado. Para calcular um radiano, use as informações apresentadas na introdução de Classe Math. maxscroll Disponibilidade Flash Player 4. Esta função foi substituída pela propriedade TextField.maxscroll. Uso variable_name.maxscroll Descrição Propriedade (somente leitura); uma propriedade reprovada que indica o número da linha visível mais acima do texto em um campo quando a linha mais inferior desse campo também está visível. A propriedade maxscroll funciona em conjunto com a propriedade scroll para controlar a exibição de informações em um campo de texto. Esta propriedade pode ser recuperada, mas não modificada. Consulte também TextField.maxscroll, TextField.scroll 504 Capítulo 12: Dicionário do ActionScript mbchr Disponibilidade Flash Player 4. Esta função foi substituída pelo método String.fromCharCode(). Uso mbchr(número) Parâmetros número O número a ser convertido em um caractere de vários bytes. Retorna Uma seqüência de caracteres. Descrição Função de seqüência de caracteres; converte um número de código ASCII em um caractere de vários bytes. Consulte também String.fromCharCode() mblength Disponibilidade Flash Player 4. Esta função foi substituída por Classe String. Uso mblength(seqüência de caracteres) Parâmetros seqüência de caracteres Uma seqüência de caracteres. Retorna Um número. Descrição Função de seqüência de caracteres; retorna o tamanho da seqüência de caracteres de vários bytes. mblength 505 mbord Disponibilidade Flash Player 4. Esta função foi substituída no Flash 5 por String.charCodeAt(). Uso mbord(caractere) Parâmetros caractere O caractere a ser convertido em um número de vários bytes. Retorna Um número. Descrição Função de seqüência de caracteres; converte o caractere especificado em um número de vários bytes. Consulte também String.fromCharCode() mbsubstring Disponibilidade Flash Player 4. Esta função foi substituída no Flash 5 por String.substr(). Uso mbsubstring(valor, índice, contagem) Parâmetros valor A seqüência de caracteres de vários bytes da qual extrair uma nova seqüência de caracteres de vários bytes. índice O número do primeiro caractere a ser extraído. O número de caracteres a ser incluído na seqüência de caracteres extraída, sem incluir o caractere índice. contagem Retorna Uma seqüência de caracteres. Descrição Função de seqüência de caracteres; extrai uma nova seqüência de caracteres de vários bytes de uma seqüência de caracteres de vários bytes. Consulte também String.substr() 506 Capítulo 12: Dicionário do ActionScript Classe Microphone Disponibilidade Flash Player 6. Descrição A classe Microphone permite que você capture áudio de um microfone conectado ao computador que esteja executando o Flash Player. A classe Microphone serve, basicamente, para o Flash Communication Server, porém, pode ser usada de maneira limitada sem o servidor. Por exemplo, para transmitir som do microfone para os alto-falantes no seu sistema local. Para criar ou fazer referência a um objeto Microphone, use o método Microphone.get(). Resumo de métodos da classe Microphone Método Descrição Microphone.get() Retornará um objeto Microphone padrão ou especificado, ou null, se o microfone não estiver disponível. Microphone.setGain() Especifica quanto aumento de intensidade deve ser aplicado ao sinal do microfone. Microphone.setRate() Especifica a taxa na qual o microfone deve capturar som, em kHz. Microphone.setSilenceLevel() Especifica a intensidade de som necessária para ativar o microfone. Microphone.setUseEchoSuppression() Especifica se é preciso usar o recurso de supressão de eco do codec de áudio. Resumo de propriedades da classe Microphone Propriedade (somente leitura) Descrição Microphone.activityLevel O nível de som que o microfone está detectando. Microphone.gain O aumento de intensidade que o microfone aplica ao sinal antes de transmiti-lo. Microphone.index O índice do microfone atual. Microphone.muted Um valor booleano que indica se o usuário permitiu ou negou acesso ao microfone. Microphone.name O nome do atual dispositivo de captura de som, de acordo com o retorno do hardware de captura de som. Microphone.names Propriedade da classe: um array de seqüências de caracteres que refletem os nomes de todos os dispositivos de captura de som disponíveis, inclusive placas de som e microfones. Microphone.rate A taxa de captura de som, em kHz. Classe Microphone 507 Propriedade (somente leitura) Descrição Microphone.silenceLevel() A intensidade de som necessária para ativar o microfone. Microphone.silenceTimeout() A quantidade de milissegundos entre o momento em que o microfone pára de detectar som e o momento em que Microphone.onActivity(false) é chamado. Microphone.useEchoSuppression() Um valor booleano que especifica se a supressão de eco está sendo usada. Resumo de manipuladores de eventos da classe Microphone Identificador de eventos Descrição Microphone.onActivity Invocado quando o microfone inicia ou pára de detectar som. Microphone.onStatus Invocado quando o usuário permite ou nega acesso ao microfone. Construtor da classe Microphone Consulte Microphone.get(). Microphone.activityLevel Disponibilidade Flash Player 6. Uso activeMicrophone.activityLevel Descrição Propriedade somente de leitura; valor numérico que especifica o nível do som que o microfone está detectando. Intervalo de valores de 0 (nenhum som está sendo detectado) a 100 (está sendo detectado som muito alto). O valor desta propriedade pode ajudar você a determinar um bom valor para passar para o método Microphone.setSilenceLevel(). Se o microfone estiver disponível mas ainda não estiver sendo usado porque Microphone.get() não foi chamado, esta propriedade terá o valor -1. Exemplo O exemplo abaixo atribui à variável level o nível da atividade do microfone atual, myMic.activityLevel. var level = myMic.activityLevel; Consulte também Microphone.setGain() 508 Capítulo 12: Dicionário do ActionScript Microphone.gain Disponibilidade Flash Player 6. Uso activeMicrophone.gain Descrição Propriedade somente de leitura; o aumento de intensidade que o microfone aplica ao sinal. Os valores válidos são de 0 a 100. O valor padrão é 50. Exemplo O exemplo abaixo é anexado à ponta de uma barra deslizante. Quando este clipe é carregado, o Flash verifica o valor myMic.gain e fornece um valor padrão caso este valor esteja indefinido. A posição _x é usada para definir o ganho do microfone de acordo com a preferência do usuário. onClipEvent(load){ if (_root.myMic.gain == undefined) { _root.myMic.setGain = 75; } this._x = _root.myMic.gain; _root.txt_micgain = this._x; left = this._x; right = left+50; top = this._y; bottom = top; } on(press){ startDrag(this, false, left, top, right, bottom); this._xscale = 100; this._yscale = 100; } on (release, releaseOutside) { stopDrag(); g = (this._x-50)*2; _root.myMic.setGain(g); _root.txt_micgain = g; this._xscale = 100; this._yscale = 100; } Consulte também Microphone.setGain() Microphone.gain 509 Microphone.get() Disponibilidade Flash Player 6. Uso Microphone.get([índice]) Observação: A sintaxe correta é Microphone.get(). Para atribuir o objeto Microphone a uma variável, use sintaxe como active_mic=Microphone.get(). Parâmetros Um inteiro maior ou igual a zero, opcional, que especifica qual microfone usar, de acordo com o array contido em Microphone.names. Para utilizar o microfone padrão (que é recomendado na maioria dos aplicativos), omita este parâmetro. índice Retorna • Se índice não for especificado, este método retornará uma referência ao microfone padrão ou, • se ele não estiver disponível, ao primeiro microfone disponível. Se não houver qualquer microfone disponível nem instalado, o método retornará null. Se índice for especificado, este método retornará uma referência ao microfone solicitado ou null, caso este não esteja disponível. Descrição Método; retorna uma referência a um objeto Microphone para captura de áudio. Para começar realmente a capturar áudio, você deve associar o objeto Microphone a um objeto MovieClip (consulte MovieClip.attachAudio()). Diferentemente dos objetos criados com o construtor new, várias chamadas a Microphone.get() fazem referência ao mesmo microfone. Desta maneira, se seu script contiver as linhas mic1=Microphone.get() e mic2=Microphone.get(), tanto mic1 como mic2 farão referência ao mesmo microfone (padrão). Em geral, você não deve passar um valor para índice. Simplesmente use Microphone.get() para obter uma referência ao microfone padrão. Por meio do painel de configurações de Microphone (Microfone) (descrito posteriormente nesta seção), o usuário pode especificar o microfone padrão que o Flash deve usar. Se você passar um valor para índice, poderá estar tentando fazer referência a um microfone que não é o preferido do usuário. O índice será usado em casos raros. Por exemplo, se seu aplicativo estiver capturando áudio de dois microfones ao mesmo tempo. Quando um arquivo SWF tenta acessar o microfone retornado pelo método Microphone.get(), por exemplo, quando você emite MovieClip.attachAudio(), o Flash Player exibe uma caixa de diálogo Privacy (Privacidade) que permite ao usuário escolher se vai permitir ou negar acesso ao microfone. (Certifique-se de que o tamanho do Stage (Palco) seja de pelo menos 215 x 138 pixels. Esse é o tamanho mínimo que o Flash necessita para exibir a caixa de diálogo.) 510 Capítulo 12: Dicionário do ActionScript Quando o usuário responde a esta caixa de diálogo, o manipulador de eventos Microphone.onStatus retorna um objeto de informação que indica a resposta do usuário. Para descobrir se o usuário negou ou permitiu acesso à câmera sem processar este manipulador de eventos, use Microphone.muted. O usuário também pode especificar configurações permanentes de privacidade para um domínio em particular clicando com o botão direito do mouse (no Windows) ou pressionando Control e clicando com o mouse (no Macintosh) enquanto um SWF estiver sendo executado, escolhendo Settings (Configurações), abrindo o painel Privacy (Privacidade) e selecionando Remember (Lembre-se). Se Microphone.get() retornar null, o microfone estará em uso por outro aplicativo ou não há microfones instalados no sistema. Para descobrir se há microfones estão instalados, use Microphones.names.length. Para exibir o painel Flash Player Microphone Settings (Configurações de microfone do Flash Player), que permite ao usuário escolher qual microfone Microphone.get() faz referência, use System.showSettings(2). Exemplo O exemplo abaixo permite ao usuário especificar o microfone padrão, depois captura áudio e o reproduz localmente. Para evitar microfonia, talvez seja conveniente testar este código enquanto estiver com os fones de ouvido. System.showSettings(2); myMic = Microphone.get(); _root.attachAudio(myMic); Consulte também Microphone.index, Microphone.muted, Microphone.names, Microphone.onStatus, MovieClip.attachAudio() Microphone.get() 511 Microphone.index Disponibilidade Flash Player 6. Uso activeMicrophone.índice Descrição Propriedade somente de leitura; um inteiro maior ou igual a zero que especifica o índice do microfone, de acordo com o array retornado de Microphone.names. Consulte também Microphone.get(), Microphone.names Microphone.muted Disponibilidade Flash Player 6. Uso activeMicrophone.muted Descrição Propriedade somente de leitura; um valor booleano que especifica se o usuário negou (true) ou permitiu (false) o acesso ao microfone. Quando se modifica este valor, Microphone.onStatus é invocado. Para obter mais informações, consulte Microphone.get(). Exemplo No exemplo abaixo, quando o usuário clica no botão, o Flash publica e reproduz um fluxo ao vivo, se o microfone não estiver mudo. on (press) { // Se o usuário colocar o microfone em mudo, exiba a informação de desconectado. // Senão, publique e reproduza um fluxo ao vivo a partir do microfone. if(myMic.muted) { _root.debugWindow+="Microfone desconectado." + newline; } else { // Publique os dados do microfone, chamando // a função pubLive() de root. _root.pubLive(); // Reproduz o que estiver sendo publicado chamando // a função playLive() de root. _root.playLive(); } } Consulte também Microphone.get(), Microphone.onStatus 512 Capítulo 12: Dicionário do ActionScript Microphone.name Disponibilidade Flash Player 6. Uso activeMicrophone.name Descrição Propriedade somente de leitura; uma seqüência de caracteres que especifica o nome do dispositivo atual de captura de som, como informado pelo hardware de captura de som. Exemplo O exemplo abaixo exibe o nome do microfone padrão no painel Output (Saída). myMic = Microphone.get(); trace("O nome do microfone é: " + myMic.name); Consulte também Microphone.get(), Microphone.names Microphone.name 513 Microphone.names Disponibilidade Flash Player 6. Uso Microphone.names Observação: A sintaxe correta é Microphone.names. Para atribuir o valor de retorno a uma variável, use a sintaxe mic_array = Microphone.names. Para descobrir o nome do microfone atual, use activeMicrophone.name. Descrição Propriedade de classe somente de leitura; recupera um array de seqüências de caracteres que contém os nomes de todos os dispositivos de captura de sons disponíveis sem exibir o painel Flash Player Privacy Settings (Configurações particulares do Flash Player). Este array comporta-se da mesma forma que qualquer outro array do ActionScript, fornecendo, implicitamente, o índice começando em zero de cada dispositivo de captura de som e a quantidade de dispositivos de captura de som do sistema (através de Microphone.names.length). Para obter mais informações, consulte a entrada da Classe Array. Chamar Microphone.names exige uma análise detalhada do hardware e o array poderá levar alguns segundos para ser criado. Na maioria dos casos, é possível usar diretamente o microfone padrão. Exemplo Este código retorna informações do array de dispositivos de áudio. allMicNames_array = Microphone.names; _root.debugWindow += "Microphone.names localizou estes dispositivos:" + newline; for(i=0; i < allMicNames_array.length; i++){ debugWindow += "[" + i + "]: " + allMicNames[i] + newline; } Por exemplo, pode ser exibida a seguinte informação: Microphone.names localizou estes dispositivos: [0]: Crystal SoundFusion(tm) [1]: USB Audio Device Consulte também Classe Array, Microphone.name 514 Capítulo 12: Dicionário do ActionScript Microphone.onActivity Disponibilidade Flash Player 6. Uso activeMicrophone.onActivity = function(atividade) { // seus comandos vão aqui } Parâmetros atividade Um valor booleano definido como true quando o microfone começa a detectar som e false quando pára. Retorna Nada. Descrição Manipulador de eventos; invocado quando o microfone começa ou pára de detectar som. Caso deseje responder a esse manipulador de eventos, será necessário criar uma função para processar o valor atividade. Para especificar a intensidade do som necessário para invocar Microphone.onActivity(true) e o tempo que deve decorrer sem som antes que Microphone.onActivity(false) seja invocado, use Microphone.setSilenceLevel(). Exemplo O exemplo abaixo exibe true ou false no painel Output (Saída) quando o microfone começa ou pára de detectar som. m = Microphone.get(); _root.attachAudio(m); m.onActivity = function(mode) { trace(mode); }; Consulte também Microphone.onActivity, Microphone.setSilenceLevel() Microphone.onActivity 515 Microphone.onStatus Disponibilidade Flash Player 6. Uso activeMicrophone.onStatus = function(infoObject) { // seus comandos vão aqui } Parâmetros infoObject Um parâmetro definido de acordo com a mensagem de status. Retorna Nada. Descrição Manipulador de eventos; invocado quando o usuário permite ou nega acesso ao microfone. Caso deseje responder a esse manipulador de eventos, será necessário criar uma função para processar o objeto de informação gerado pelo microfone. Quando um arquivo SWF tenta acessar o microfone, o Flash Player exibe uma caixa de diálogo Privacy (Privacidade) para que o usuário permita ou proíba o acesso. • Se o usuário permitir acesso, a propriedade Microphone.muted será definida como false e esse manipulador de eventos será invocado com um objeto de informação cuja propriedade é Microphone.Unmuted. Se o usuário proibir o acesso, a propriedade Microphone.muted será definida como true e esse manipulador de eventos será invocado com um objeto de informação cuja propriedade code é Microphone.Muted. code • Para descobrir se o usuário proibiu ou permitiu acesso ao microfone sem processar este manipulador de eventos, use Microphone.muted. Observação: Se o usuário decidir permitir ou proibir permanentemente o acesso a todos os SWFs a partir de um domínio específico, este método não será invocado para os SWFs daquele domínio, a não ser que o usuário posteriormente altere a configuração de privacidade. Para obter mais informações, consulte Microphone.get(). Exemplo Consulte o exemplo de Camera.onStatus. Consulte também Microphone.get(), Microphone.muted 516 Capítulo 12: Dicionário do ActionScript Microphone.rate Disponibilidade Flash Player 6. Uso activeMicrophone.rate Descrição Propriedade somente de leitura; a taxa na qual o microfone está capturando som, em kHz. O valor padrão é de 8 kHz, se seu dispositivo de captura de som suportar este valor. Caso contrário, o valor padrão será o próximo nível de captura disponível acima de 8 kHz suportado pelo seu dispositivo de captura de som, que é geralmente de 11 kHz. Para definir este valor, use Microphone.setRate(). Exemplo O exemplo abaixo salva a taxa atual na variável original. original = myMic.rate; Consulte também Microphone.setRate() Microphone.rate 517 Microphone.setGain() Disponibilidade Flash Player 6. Uso activeMicrophone.setGain(ganho) Parâmetros Um inteiro que especifica qual o aumento de intensidade deve ser aplicado ao sinal do microfone. Os valores válidos são de 0 a 100. O valor padrão é 50. Entretanto, o usuário pode alterar este valor no painel Flash Player Microphone Settings (Configurações de microfone do Flash Player). ganho Retorna Nada. Descrição Método; define o ganho do microfone, ou seja, o valor pelo qual o microfone deve multiplicar o sinal antes de transmiti-lo. Um valor 0 diz ao Flash para multiplicar por 0, ou seja, o microfone não transmitirá nenhum som. Você pode considerar esta configuração como um botão de volume em um aparelho de som: 0 especifica que está sem volume e 50 é o volume normal; os números abaixo de 50 especificam volumes abaixo do normal, ao passo que números acima de 50 especificam volumes acima do normal Exemplo O exemplo abaixo garante que a configuração de ganho do microfone seja menor ou igual a 55. var myMic = Microphone.get(); if (myMic.gain > 55){ myMic.setGain(55); } Consulte também Microphone.gain, Microphone.setUseEchoSuppression() 518 Capítulo 12: Dicionário do ActionScript Microphone.setRate() Disponibilidade Flash Player 6. Uso activeMicrophone.setRate(kHz) Parâmetros kHz A taxa na qual o microfone deve capturar som, em kHz. Os valores aceitáveis são 5, 8, 11, 22 e 44. O valor padrão é 8 kHz se seu dispositivo de captura de som suportar este valor. Caso contrário, o valor padrão será o próximo nível de captura disponível acima de 8 kHz suportado pelo seu dispositivo de captura de som, que é geralmente de 11 kHz. Retorna Nada. Descrição Método; define a taxa, em kHz, na qual o microfone deve capturar som. Exemplo O exemplo abaixo definirá a taxa do microfone segundo a preferência do usuário (que foi atribuída por você na variável userRate), se ela for um dos seguintes valores: 5, 8, 11, 22 ou 44. Caso não seja, o valor será arredondado para o valor aceitável mais próximo que o dispositivo de captura de som suporta. myMic.setRate(userRate); Consulte também Microphone.rate Microphone.setRate() 519 Microphone.setSilenceLevel() Disponibilidade Flash Player 6. Uso activeMicrophone.setSilenceLevel(nível [, timeout]) Parâmetros nível Um inteiro que especifica o nível do som necessário para ativar o microfone e invocar Microphone.onActivity(true). O intervalo de valores aceitáveis vai de 0 a 100. O valor padrão é 10. Um parâmetro inteiro opcional que especifica quantos milissegundos devem decorrer sem atividade antes do Flash considerar que o som parou e invocar Microphone.onActivity(false). O valor padrão é 2000 (2 segundos). timeout Retorna Nada. Descrição Método; define o nível de entrada mínimo que deve ser considerado como som e (opcionalmente) quanto tempo de silêncio deve transcorrer para assumir que o silêncio realmente começou. • Para evitar que o microfone detecte qualquer som, passe um valor de 100 para nível; assim Microphone.onActivity nunca será invocado. • Para descobrir o nível de som que o microfone está detectando num momento, use Microphone.activityLevel. A detecção de atividade é a capacidade de detectar quando os níveis de áudio sugerem que há uma pessoa falando. Quando não houver ninguém falando, a largura de banda pode ser economizada porque não há necessidade de enviar fluxo de áudio associado. Esta informação também pode ser usada para resposta visual de forma que os usuários saibam que eles (ou outros) estão silenciosos. Os valores de silêncio correspondem diretamente a valores de atividade. O silêncio completo é um valor de atividade 0. O barulho alto constante (tão alto quanto possa ser registrado com base na configuração de ganho atual) é um valor de atividade 100. Depois de adequadamente ajustado o ganho, o valor da sua atividade será menor que o valor do seu silêncio quando você não estiver falando; e quando estiver falando, o valor da atividade excederá o valor do silêncio. Este método é semelhante, na sua finalidade, a Camera.setMotionLevel(). Ambos são usados para especificar quando o manipulador de eventos onActivity deve ser invocado. Entretanto, esses métodos possuem um impacto significativamente diferente na publicação de fluxos: • • 520 foi criado para detectar movimento e não afeta o uso da largura de banda. Mesmo que um fluxo de vídeo não detecte movimento, o vídeo ainda assim é enviado. Microphone.setSilenceLevel() foi criado para otimizar a largura de banda. Quando um fluxo de áudio é considerado silencioso, nenhum dado de áudio é enviado. Em vez disso, uma única mensagem é enviada, indicando que o silêncio foi iniciado. Camera.setMotionLevel() Capítulo 12: Dicionário do ActionScript Exemplo O exemplo abaixo altera o nível de silêncio com base na entrada do usuário. O botão tem o seguinte código anexado: on (press) { this.makeSilenceLevel(this.silenceLevel); } A função makeSilenceLevel() chamada pelo botão continua: function makeSilenceLevel(s) { this.obj.setSilenceLevel(s); this.SyncMode(); this.silenceLevel= s; } Para obter mais informações, consulte o exemplo de Camera.setMotionLevel(). Consulte também Microphone.activityLevel, Microphone.onActivity, Microphone.setGain(), Microphone.silenceLevel(), Microphone.silenceTimeout() Microphone.setSilenceLevel() 521 Microphone.setUseEchoSuppression() Disponibilidade Flash Player 6. Uso activeMicrophone.setUseEchoSuppression(supressão) Parâmetros supressão Um valor booleano que indica se a supressão de eco deve ser usada (true) ou não (false). Retorna Nada. Descrição Método; especifica se é para usar o recurso de supressão de eco do codec de áudio. O valor padrão é false, a menos que o usuário tenha selecionado Reduce Echo no painel Flash Player Microphone Settings. A supressão de eco é um esforço para reduzir os efeitos de microfonia, que é causado quando o som que sai do alto-falante é capturado pelo microfone do mesmo computador. Isto é diferente do cancelamento de eco, que remove totalmente a resposta. Geralmente, a supressão de eco é aconselhável quando o som que está sendo capturado é reproduzido pelos alto-falantes, e não pelo fone de ouvido, no mesmo computador. Se seu arquivo SWF permitir aos usuários especificar o dispositivo de saída de som, talvez seja conveniente chamar Microphone.setUseEchoSuppression(true), caso indiquem que estão usando altofalantes e também usarão o microfone. Os usuários também podem ajustar essas configurações no painel Flash Player Microphone Settings (Configurações de microfone do Flash Player). Exemplo O exemplo abaixo ativa a supressão de eco. _root.myMic.setUseEchoSuppression(true); Consulte também Microphone.setGain(), Microphone.useEchoSuppression() 522 Capítulo 12: Dicionário do ActionScript Microphone.silenceLevel() Disponibilidade Flash Player 6. Uso activeMicrophone.silenceLevel Descrição Propriedade somente de leitura; um inteiro que especifica o nível do som necessário para ativar o microfone e invocar Microphone.onActivity(true). O valor padrão é 10. Exemplo Consulte o exemplo de Microphone.silenceTimeout(). Consulte também Microphone.gain, Microphone.setSilenceLevel() Microphone.silenceTimeout() Disponibilidade Flash Player 6. Uso activeMicrophone.silenceTimeout Descrição Propriedade somente de leitura; um valor numérico que representa o tempo em milissegundos entre o momento em que o microfone pára de detectar som e o momento em que Microphone.onActivity(false) é invocado. O valor padrão é 2000 (2 segundos). Para definir este valor, use Microphone.setSilenceLevel(). Exemplo O exemplo abaixo define o intervalo para duas vezes o valor atual. myMic.setSilenceLevel(myMic.silenceLevel, myMic.silenceTimeOut * 2); Consulte também Microphone.setSilenceLevel() Microphone.silenceTimeout() 523 Microphone.useEchoSuppression() Disponibilidade Flash Player 6. Uso activeMicrophone.useEchoSuppression Descrição Propriedade somente de leitura; um valor booleano true se a supressão de eco for ativada e false caso não seja. O valor padrão é false, a menos que o usuário tenha selecionado Reduce Echo no painel Flash Player Microphone Settings. Exemplo O exemplo abaixo verifica a supressão de eco e a ativa se estiver desativada. _root.myMic.onActivity = function(active) { if (active == true) { if (_root.myMic.useEchoSuppression == false) { _root.myMic.setUseEchoSuppression(true); } } } Consulte também Microphone.setUseEchoSuppression() MMExecute() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Classe Mouse Disponibilidade Flash Player 5. Descrição A classe Mouse é uma classe do nível mais alto, cujas propriedades e métodos podem ser acessados sem uso de um construtor. Você pode usar os métodos da classe Mouse para ocultar e mostrar o ponteiro do mouse (cursor) no arquivo SWF. Por padrão, o ponteiro do mouse fica visível, mas é possível ocultá-lo e implementar um ponteiro personalizado usando um clipe de filme. (consulte a seção correspondente “Criando um ponteiro de mouse personalizado” na página 90). 524 Capítulo 12: Dicionário do ActionScript Resumo de métodos da classe Mouse Método Descrição Mouse.addListener() Registra um objeto para receber as notificações onMouseDown, onMouseMove e onMouseUp. Mouse.hide() Oculta o ponteiro do mouse no arquivo SWF. Mouse.removeListener() Remove um objeto que foi registrado com addListener(). Mouse.show() Exibe o ponteiro do mouse no arquivo SWF. Resumo de ouvintes da classe Mouse Método Descrição Mouse.onMouseDown Notificado quando o botão do mouse é pressionado. Mouse.onMouseMove Notificado quando o botão do mouse é movido. Mouse.onMouseUp Notificado quando o botão do mouse é liberado. Mouse.onMouseWheel Notificado quando o usuário rola a roda do mouse. Mouse.addListener() Disponibilidade Flash Player 6. Uso Mouse.addListener (newListener) Parâmetros newListener Um objeto. Retorna Nada. Descrição Método; registra um objeto para receber notificações dos manipuladores de retorno de chamada onMouseDown, onMouseMove e onMouseUp. O parâmetro newListener deve conter um objeto com métodos definidos para os ouvintes onMouseDown, onMouseMove e onMouseUp. Quando o mouse é pressionado, movido ou liberado, independentemente do foco de entrada, todos os objetos ouvintes registrados com este método têm seu método onMouseDown, onMouseMove ou onMouseUp invocado. Vários objetos podem ouvir notificações de mouse. Se o ouvinte newListener já estiver registrado, nenhuma alteração ocorrerá. Consulte também Mouse.onMouseDown, Mouse.onMouseMove, Mouse.onMouseUp Mouse.addListener() 525 Mouse.hide() Disponibilidade Flash Player 5. Uso Mouse.hide() Parâmetros Nenhum. Retorna Um valor booleano: true se o ponteiro estiver visível e false se o ponteiro estiver invisível. Descrição Método; oculta o ponteiro em um arquivo SWF. Por padrão, o cursor fica visível. Exemplo O código a seguir, associado a um clipe de filme na Timeline (Linha de tempo) principal, oculta o ponteiro padrão e define as posições x e y da instância do clipe de filme customPointer_mc como as posições x e y do mouse na Timeline (Linha de tempo) principal. onClipEvent(enterFrame){ Mouse.hide(); customPointer_mc._x = _root._xmouse; customPointer_mc._y = _root._ymouse; } Consulte também Mouse.show(), MovieClip._xmouse, MovieClip._ymouse 526 Capítulo 12: Dicionário do ActionScript Mouse.onMouseDown Disponibilidade Flash Player 6. Uso someListener.onMouseDown Descrição Ouvinte; notificado quando o mouse é pressionado. Para usar o ouvinte onMouseDown, é necessário criar um objeto ouvinte. Em seguida, você pode definir uma função para onMouseDown e usar o método addListener() para registrar o ouvinte com o objeto Mouse, como mostrado no código a seguir: someListener = new Object(); someListener.onMouseDown = function () { ... }; Mouse.addListener(someListener); Os ouvintes permitem a cooperação de partes diferentes de código. Isso ocorre porque vários ouvintes podem receber notificações sobre um único evento. Consulte também Mouse.addListener() Mouse.onMouseDown 527 Mouse.onMouseMove Disponibilidade Flash Player 6. Uso someListener.onMouseMove Descrição Ouvinte; notificado quando o mouse é movido. Para usar o ouvinte onMouseMove, é necessário criar um objeto ouvinte. Em seguida, é possível definir uma função para onMouseMove e usar o método addListener() para registrar o ouvinte com o objeto Mouse, como mostrado no código a seguir: someListener = new Object(); someListener.onMouseMove = function () { ... }; Mouse.addListener(someListener); Os ouvintes permitem a cooperação de partes diferentes de código. Isso ocorre porque vários ouvintes podem receber notificações sobre um único evento. Consulte também Mouse.addListener() Mouse.onMouseUp Disponibilidade Flash Player 6. Uso someListener.onMouseUp Descrição Ouvinte; notificado quando o mouse é liberado. Para usar o ouvinte onMouseUp, é necessário criar um objeto ouvinte. Em seguida, você pode definir uma função para onMouseUp e usar o método addListener() para registrar o ouvinte com o objeto Mouse, como mostrado no código a seguir: someListener = new Object(); someListener.onMouseUp = function () { ... }; Mouse.addListener(someListener); Os ouvintes permitem a cooperação de partes diferentes de código. Isso ocorre porque vários ouvintes podem receber notificações sobre um único evento. Consulte também Mouse.addListener() 528 Capítulo 12: Dicionário do ActionScript Mouse.onMouseWheel Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7 (somente Windows). Uso someListener.onMouseWheel = function (delta) {} Parâmetros delta Um número que indica quantas linhas devem ser roladas para cada ponto rolado na roda o mouse pelo usuário . Essa é uma configuração no nível do sistema, que pode ser modificada pelo usuário. Um valor delta positivo indica uma rolagem para cima ou para a direita; um valor negativo indica uma rolagem para baixo ou para a esquerda. Os valores geralmente vão de 1 a 3, enquanto uma rolagem mais rápida pode resultar em valores maiores (absolutos). Descrição Ouvinte; notificado quando o usuário rola a roda do mouse. Para usar o ouvinte onMouseWheel, é necessário criar um objeto ouvinte. Em seguida, você pode definir uma função para onMouseWheel e usar addListener() para registrar o ouvinte com o objeto Mouse. Observação: Os ouvintes de eventos do Mouse estão disponíveis somente nas versões Windows do Flash Player. Exemplo O exemplo abaixo mostra como criar um objeto ouvinte que responda aos eventos do mouse. Neste exemplo, a coordenada x de um objeto de clipe de filme chamado clip_mc (não mostrado) será alterada sempre que o usuário rolar a roda do mouse. mouseListener = new Object(); mouseListener.onMouseWheel = function(delta) { box._x += delta; } Mouse.addListener(mouseListener); Consulte também Mouse.addListener(), TextField.mouseWheelEnabled Mouse.onMouseWheel 529 Mouse.removeListener() Disponibilidade Flash Player 6. Uso Mouse.removeListener (ouvinte) Parâmetros ouvinte Um objeto. Retorna Se o objeto ouvinte tiver sido removido com êxito, o método retornará true; se a remoção do ouvinte não tiver sido bem-sucedida (por exemplo, se o ouvinte não estava na lista de ouvintes do objeto Mouse), o método retornará false. Descrição Método; remove um objeto registrado anteriormente com o método addListener(). Mouse.show() Disponibilidade Flash Player 5. Uso Mouse.show() Parâmetros Nenhum. Retorna Nada. Descrição Método; exibe o ponteiro do mouse em um arquivo SWF. Por padrão, o cursor fica visível. Consulte também Mouse.show(), MovieClip._xmouse, MovieClip._ymouse 530 Capítulo 12: Dicionário do ActionScript Classe MovieClip Disponibilidade Flash Player 3. Descrição Os métodos da classe MovieClip oferecem a mesma funcionalidade que as ações em relação a clipes de filme de destino. Também existem métodos adicionais que não têm ações equivalentes na caixa de ferramentas Ações do painel Ações. Você não precisa usar um método construtor para chamar os métodos da classe MovieClip. Em vez disso, faça referência às instâncias do clipe de filme por nome, usando a seguinte sintaxe: my_mc.play(); my_mc.gotoAndPlay(3); Resumo de métodos da classe MovieClip Método Descrição MovieClip.attachAudio() Captura e reproduz áudio local no microfone. MovieClip.attachMovie() Anexa um arquivo SWF à biblioteca. MovieClip.createEmptyMovieClip() Cria um clipe de filme vazio. MovieClip.createTextField() Cria um campo de texto vazio. MovieClip.duplicateMovieClip() Duplica o clipe de filme especificado. MovieClip.getBounds() Retorna as coordenadas x e y mínimas e máximas de um SWF em um espaço de coordenadas especificado. MovieClip.getBytesLoaded() Retorna o número de bytes carregados do clipe de filme especificado. MovieClip.getBytesTotal() Retorna o tamanho do clipe de filme, em bytes. MovieClip.getDepth() Retorna a profundidade de um clipe de filme. MovieClip.getInstanceAtDepth() Especifica se uma determinada profundidade já está ocupada por um clipe de filme. MovieClip.getNextHighestDepth() Especifica o valor de profundidade que pode ser passado para outros métodos, para assegurar que o Flash renderize o clipe de filme na frente de todos os outros objetos do atual clipe de filme. MovieClip.getSWFVersion() Retorna um inteiro que indica a versão do Flash Player em que o clipe de filme foi publicado MovieClip.getURL() Recupera um documento de um URL. MovieClip.globalToLocal() Converte o objeto Ponto das coordenadas do Palco nas coordenadas locais do clipe de filme especificado. MovieClip.gotoAndPlay() Envia a reprodução para um quadro específico no clipe de filme e reproduz o arquivo SWF. Classe MovieClip 531 Método Descrição MovieClip.gotoAndStop() Envia a reprodução para um quadro específico no clipe de filme e interrompe o arquivo SWF. MovieClip.hitTest() Retorna true se há interseção entre a caixa delimitadora do clipe de filme especificado e a caixa delimitadora do clipe de filme de destino. MovieClip.loadMovie() Carrega o arquivo SWF especificado no clipe de filme. MovieClip.loadVariables() Carrega variáveis de um URL ou de outro local para o clipe de filme. MovieClip.localToGlobal() Converte um objeto Point de coordenadas locais do clipe de filme em coordenadas globais do Stage (Palco). MovieClip.nextFrame() Envia a reprodução para o próximo quadro do clipe de filme. MovieClip.play() Reproduz o clipe de filme especificado. MovieClip.prevFrame() Envia a reprodução para o quadro anterior do clipe de filme. MovieClip.removeMovieClip() Remove o clipe de filme da Timeline (Linha de tempo) caso tenha sido criado com duplicateMovieClip(), MovieClip.duplicateMovieClip() ou MovieClip.attachMovie(). MovieClip.setMask() Especifica um clipe de filme como uma máscara para outro clipe de filme. MovieClip.startDrag() Especifica um clipe de filme como arrastável e começa a arrastá-lo. MovieClip.stop() Encerra o arquivo SWF que está sendo reproduzido. MovieClip.stopDrag() Pára o arraste de qualquer clipe de filme que esteja sendo arrastado. MovieClip.swapDepths() Troca o nível de profundidade de dois arquivos SWF. MovieClip.unloadMovie() Remove o arquivo SWF que foi carregado com loadMovie(). Resumo de métodos de desenho da classe MovieClip 532 Método Descrição MovieClip.beginFill() Começa a desenhar um preenchimento no Palco. MovieClip.beginGradientFill() Começa a desenhar um preenchimento de gradiente no Palco. MovieClip.clear() Remove todos os comandos de desenho associados a uma instância de clipe de filme. MovieClip.curveTo() Desenha uma curva utilizando o último estilo de linha. MovieClip.endFill() Conclui o preenchimento especificado por beginFill() ou beginGradientFill(). MovieClip.lineStyle() Define o traço das linhas criadas com os métodos lineTo() e curveTo(). Capítulo 12: Dicionário do ActionScript Método Descrição MovieClip.lineTo() Desenha uma linha utilizando o estilo de linha atual. MovieClip.moveTo() Move a posição do desenho especificado para determinadas coordenadas. Resumo das propriedades da classe MovieClip Propriedade Descrição MovieClip._alpha O valor de transparência de uma instância de clipe de filme. MovieClip._currentframe O número do quadro no qual a reprodução está localizada no momento. MovieClip._droptarget O caminho absoluto em notação de sintaxe de barra da instância do clipe de filme na qual um clipe de filme arrastável foi solto. MovieClip.enabled Indica se um clipe de filme de botão está ativado. MovieClip.focusEnabled Permite que um clipe de filme receba o foco. MovieClip._focusrect Indica se um clipe de filme focalizado tem um retângulo amarelo ao seu redor. MovieClip._framesloaded O número de quadros que foram carregados de um arquivo SWF em fluxo. MovieClip._height A altura de uma instância de clipe de filme em pixels. MovieClip.hitArea Designa outro clipe de filme para atuar como a área de clicagem de um clipe de filme de botão. MovieClip._highquality Define a qualidade de renderização de arquivos SWF. MovieClip.menu Associa o objeto ContextMenu especificado com um clipe de filme. MovieClip._name O nome da instância de um clipe de filme. MovieClip._parent Uma referência ao clipe de filme que inclui outro clipe de filme. MovieClip._rotation O grau de rotação de uma instância de clipe de filme. MovieClip._soundbuftime O número de segundos decorridos antes de um som começar a ser reproduzido. MovieClip.tabChildren Indica se os filhos de um clipe de filme são incluídos na ordenação automática de guias. MovieClip.tabEnabled Indica se um clipe de filme é incluído na ordenação de guias. MovieClip.tabIndex Indica a ordem de guias de um objeto. MovieClip._target O caminho de destino de uma instância de clipe de filme. MovieClip._totalframes O número total de quadros de uma instância de clipe de filme. MovieClip.trackAsMenu Indica se outros botões podem receber eventos de liberação de mouse. Classe MovieClip 533 Propriedade Descrição MovieClip._url O URL do arquivo SWF a partir do qual um clipe de filme foi descarregado. MovieClip.useHandCursor Determina se a mão é exibida quando um usuário rola o cursor do mouse sobre um clipe de filme de botão. MovieClip._visible Um valor booleano que determina se uma instância de clipe de filme está oculta ou visível. MovieClip._width A largura de uma instância de clipe de filme em pixels. MovieClip._x A coordenada x de uma instância de clipe de filme. MovieClip._xmouse A coordenada x do ponteiro do mouse em uma instância de clipe de filme. MovieClip._xscale O valor que especifica a porcentagem para o dimensionamento horizontal de um clipe de filme. MovieClip._y A coordenada y de uma instância de clipe de filme. MovieClip._ymouse A coordenada y do ponteiro do mouse em uma instância de clipe de filme. MovieClip._yscale O valor que especifica a porcentagem para o dimensionamento vertical de um clipe de filme. Resumo de manipuladores de evento da classe MovieClip 534 Identificador de eventos Descrição MovieClip.onData Chamada quando todos os dados são carregados em um clipe de filme. MovieClip.onDragOut Chamada enquanto o ponteiro está fora do botão, o botão do mouse é pressionado no interior e rola para fora da área do botão. MovieClip.onDragOver Chamada enquanto o ponteiro está sobre o botão, o botão do mouse foi pressionado, rolado para fora do botão e, a seguir, rolado de volta sobre o botão. MovieClip.onEnterFrame Chamada continuamente na taxa de quadros do arquivo SWF. As ações associadas ao evento de clipe enterFrame são processadas antes de qualquer ação de quadro que tenha sido anexada aos quadros afetados. MovieClip.onKeyDown Chamada quando uma tecla é pressionada. Use os métodos Key.getCode() e Key.getAscii() para recuperar informações sobre a última tecla pressionada. MovieClip.onKeyUp Chamada quando uma tecla é liberada. MovieClip.onKillFocus Chamada quando o foco é removido de um botão. MovieClip.onLoad Chamada quando o clipe de filme é criado e aparece na Timeline (Linha de tempo). MovieClip.onMouseDown Chamada quando o botão esquerdo do mouse é pressionado. Capítulo 12: Dicionário do ActionScript Identificador de eventos Descrição MovieClip.onMouseMove Chamada sempre que o mouse é movido. MovieClip.onMouseUp Chamada quando o botão esquerdo do mouse é liberado. MovieClip.onPress Chamada quando o mouse é pressionado enquanto o ponteiro está sobre um botão. MovieClip.onRelease Chamada quando o mouse é liberado enquanto o ponteiro está sobre um botão. MovieClip.onReleaseOutside Chamada quando o mouse é liberado enquanto o ponteiro está fora de um botão, depois que o botão é pressionado enquanto o ponteiro está dentro do botão. MovieClip.onRollOut Chamada quando o ponteiro rola para fora da área de um botão. MovieClip.onRollOver Chamada quando o ponteiro do mouse rola sobre um botão. MovieClip.onSetFocus Chamada quando um botão tem o foco de entrada e uma tecla é liberada. MovieClip.onUnload Chamada no primeiro quadro depois que o clipe de filme é removido da Linha de tempo. As ações associadas ao evento do clipe de filme Unload são processadas antes que as ações sejam anexadas ao quadro atingido. MovieClip._alpha Disponibilidade Flash Player 4. Uso my_mc._alpha Descrição Propriedade; o valor de transparência alfa do clipe de filme especificado por my_mc. A faixa de valores válidos vai de 0 (totalmente transparente) a 100 (totalmente opaco). O valor padrão é 100. Os objetos em um clipe de filme com _alpha definido como 0 estão ativos, mesmo que estejam invisíveis. Por exemplo, ainda será possível clicar em um botão do clipe de filme cuja propriedade _alpha esteja definida como 0. Exemplo O código a seguir define como 30% a propriedade _alpha de um clipe de filme chamado star_mc quando o botão é clicado: on (release) { star_mc._alpha = 30; } Consulte também Button._alpha, TextField._alpha MovieClip._alpha 535 MovieClip.attachAudio() Disponibilidade Flash Player 6. Uso my_mc.attachAudio(fonte) Parâmetros O objeto que contém o áudio a ser reproduzido. Os valores válidos são um objeto Microphone e false (faz parar a execução do áudio). fonte Retorna Nada. Descrição Método; especifica a origem do áudio a ser reproduzido localmente (objeto Microphone). Para interromper a reprodução da origem de áudio, passe fonte para false. Para reproduzir o áudio local, passe o objeto Microphone como fonte. Isso captura e reproduz o áudio local do microfone. Exemplo O código a seguir associa um microfone a um clipe de filme. my_mic = Microphone.get(); this.attachAudio(my_mic); Consulte também Classe Microphone, Classe Sound 536 Capítulo 12: Dicionário do ActionScript MovieClip.attachMovie() Disponibilidade Flash Player 5. Uso my_mc.attachMovie(idName, newName, depth [, initObject]) Parâmetros O nome de vinculação do símbolo do clipe de filme na biblioteca a ser anexada a um clipe de filme no Stage. É o nome inserido no campo Identifier (Identificador) na caixa de diálogo Linkage Properties (Propriedades de vinculação). idName newname Um nome de instância único para o clipe de filme que está sendo anexado ao clipe de filme. depth Um inteiro que especifica o nível de profundidade em que o arquivo SWF é colocado. (Suportado pelo Flash Player 6 e posteriores) Objeto que contém as propriedades com as quais se deve preencher o clipe de filme recém-anexado. Este parâmetro permite que os clipes de filme criados dinamicamente recebam parâmetros de clipe. Se initObject não for um objeto, ele será ignorado. Todas as propriedades de initObject são copiadas na nova instância. As propriedades especificadas com initObject estão disponíveis para a função construtora. Este parâmetro é opcional. initObject Retorna Uma referência à instância recém-criada. Descrição Método; pega um símbolo na biblioteca e o anexa ao arquivo SWF no Stage especificado por my_mc. Use removeMovieClip() ou unloadMovie() para remover um arquivo SWF anexado com attachMovie(). Exemplo O exemplo a seguir anexa o símbolo com o identificador de vinculação “circulo” à instância de clipe de filme localizada no Stage (Palco) do arquivo SWF. on (release) { thing.attachMovie( "círculo", "círculo1", 2 ); } Consulte também MovieClip.removeMovieClip(), MovieClip.unloadMovie(), Object.registerClass(), removeMovieClip() MovieClip.attachMovie() 537 MovieClip.beginFill() Disponibilidade Flash Player 6. Uso my_mc.beginFill([rgb[, alpha]]) Parâmetro Um valor de cor hexadecimal (por exemplo, vermelho corresponde a 0xFF0000, azul a 0x0000FF e assim por diante). Caso este valor não seja fornecido ou esteja indefinido, nenhum preenchimento será criado. rgb Um número inteiro entre 0 e 100 que especifica o valor alfa do preenchimento. Se este valor não for informado, a opção100 (sólido) será usada. Se o valor for menor que 0, o Flash usará 0. Se for maior que 100, o Flash usará 100. alfa Retorna Nada. Descrição Método; indica o início de um novo caminho de desenho. Se houver um caminho aberto, isto é, se a posição atual do desenho não for igual à posição anterior especificada em um método moveTo() e se houver um preenchimento associado a ele, este caminho será fechado com uma linha e preenchido em seguida. Trata-se de um processo semelhante ao que ocorre quando o método endFill() é chamado. Se atualmente não há nenhum preenchimento associado ao caminho, endFill() deve ser chamado para aplicar o preenchimento. Consulte também MovieClip.beginGradientFill(), MovieClip.endFill() 538 Capítulo 12: Dicionário do ActionScript MovieClip.beginGradientFill() Disponibilidade Flash Player 6. Uso my_mc.beginGradientFill(fillType, colors, alphas, ratios, matrix) Parâmetro fillType A seqüência de caracteres "linear" ou "radial". cores Uma matriz de valores de cores hexadecimais RGB a ser utilizada no gradiente (por exemplo, vermelho corresponde a 0xFF0000, azul a 0x0000FF e assim por diante). alphas Array de valores alfa com as cores correspondentes do array colors; os valores válidos vão de 0 a 100. Se o valor for menor que 0, o Flash usará 0. Se for maior que 100, o Flash usará 100. ratios Array com as taxas de distribuição de cor; os valores válidos vão de 0 a 255. Esse valor define a porcentagem da largura em que a cor é amostrada a 100 por cento. matrix Uma matriz de transformação que é um objeto com um destes dois conjuntos de propriedades: • a, b, c, d, e, f, g, h, i, que pode ser usado para descrever uma matriz do tipo 3 x 3 da seguinte forma: a b c d e f g h i O exemplo a seguir usa um método beginGradientFill() com parâmetro matrix que é um objeto com essas propriedades. _root.createEmptyMovieClip( "grad", 1 ); with ( _root.grad ) { colors = [ 0xFF0000, 0x0000FF ]; alphas = [ 100, 100 ]; ratios = [ 0, 0xFF ]; matrix = { a:200, b:0, c:0, d:0, e:200, f:0, g:200, h:200, i:1 }; beginGradientFill( "linear", cores, alfas, proporções, matriz ); moveto(100,100); lineto(100,300); lineto(300,300); lineto(300,100); lineto(100,100); endFill(); } MovieClip.beginGradientFill() 539 Se não houver uma propriedade matrixType, todos os outros parâmetros serão necessários; a função falhará se faltar qualquer parâmetro. Esta matriz dimensiona, traslada, gira e inclina o gradiente da unidade, que é definido em (-1,-1) e (1,1). • matrixType, x, y, w, h, r. Estas propriedades indicam o seguinte: matrixType é a seqüência de caracteres "box", x é a posição horizontal relativa ao ponto de registro do clipe pai do canto superior esquerdo do gradiente, y é a posição vertical relativa ao ponto de registro do clipe pai do canto superior esquerdo do gradiente, w é a largura do gradiente, h é a altura e r é a rotação em radianos. O exemplo a seguir usa um método beginGradientFill() com parâmetro matrix que é um objeto com essas propriedades. _root.createEmptyMovieClip( "grad", 1 ); with ( _root.grad ) { colors = [ 0xFF0000, 0x0000FF ]; alphas = [ 100, 100 ]; ratios = [ 0, 0xFF ]; matrix = { matrixType:"box", x:100, y:100, w:200, h:200, r:(45/ 180)*Math.PI }; beginGradientFill( "linear", cores, alfas, proporções, matriz ); moveto(100,100); lineto(100,300); lineto(300,300); lineto(300,100); lineto(100,100); endFill(); } 540 Capítulo 12: Dicionário do ActionScript Se houver uma propriedade matrixType, ela deverá ser igual a "box" e todos os outros parâmetros serão necessários. A função falhará se uma dessas condições não for atendida. Retorna Nada. Descrição Método; indica o início de um novo caminho de desenho. Se o primeiro parâmetro estiver indefinido, ou se nenhum parâmetro tiver sido passado, o caminho não terá preenchimento. Se houver um caminho aberto, isto é, se a posição atual do desenho não for igual à posição anterior especificada em um método moveTo(), e se houver um preenchimento associado a ele, este caminho será fechado com uma linha e preenchido em seguida. Trata-se de um processo semelhante ao que ocorre quando você chama o método endFill(). Este método falhará se qualquer uma das condições a seguir for encontrada: • O número de itens nos parâmetros cores, alfas e proporções não é igual. • O parâmetro fillType não é “linear” ou “radial”. • Um dos campos no objeto para o parâmetro matrix está ausente ou é inválido. MovieClip.beginGradientFill() 541 Exemplo O código a seguir usa os dois métodos para desenhar dois retângulos empilhados, com um preenchimento de gradiente vermelho-azul e um traço sólido verde de 5 pontos. _root.createEmptyMovieClip("goober",1); with ( _root.goober ) { colors = [ 0xFF0000, 0x0000FF ]; alphas = [ 100, 100 ]; ratios = [ 0, 0xFF ]; lineStyle( 5, 0x00ff00 ); matrix = { a:500,b:0,c:0,d:0,e:200,f:0,g:350,h:200,i:1}; beginGradientFill( "linear", colors, alphas, ratios, matrix ); moveto(100.100); lineto(100.300); lineto(600.300); lineto(600.100); lineto(100.100); endFill(); matrix = { matrixType:"box", x:100, y:310, w:500, h:200, r:(0/180)*Math.PI }; beginGradientFill( "linear", colors, alphas, ratios, matrix ); moveto(100.310); lineto(100.510); lineto(600.510); lineto(600.310); lineto(100.310); endFill(); } Consulte também MovieClip.beginFill(), MovieClip.endFill(), MovieClip.lineStyle(), MovieClip.lineTo(), MovieClip.moveTo() 542 Capítulo 12: Dicionário do ActionScript MovieClip.clear() Disponibilidade Flash Player 6. Uso my_mc.clear() Parâmetros Nenhum. Retorna Nada. Descrição Método; remove todos os gráficos criados durante o tempo de execução, usando os métodos de desenho de clipe de filme, inclusive os estilos de linha especificados com MovieClip.lineStyle(). Formas e linhas manualmente desenhadas em tempo de criação (com as ferramentas de desenho do Flash) não são afetadas. Consulte também MovieClip.lineStyle() MovieClip.createEmptyMovieClip() Disponibilidade Flash Player 6. Uso my_mc.createEmptyMovieClip(instanceName, depth) Parâmetros instanceName Uma seqüência de caracteres que identifica o nome da instância do novo clipe de filme. profundidade Um inteiro que especifica a profundidade do novo clipe de filme. Retorna Nada. Descrição Método; cria um clipe de filme vazio como filho de outro clipe de filme existente. Este método apresenta um comportamento semelhante ao do método attachMovie(), só que não é preciso fornecer um nome de vinculação externo para o novo clipe de filme. O ponto de registro de um clipe de filme vazio recém-criado é o canto superior esquerdo. Este método falhará se um dos parâmetros estiver faltando. Consulte também MovieClip.attachMovie() MovieClip.createEmptyMovieClip() 543 MovieClip.createTextField() Disponibilidade Flash Player 6. Uso my_mc.createTextField(instanceName, depth, x, y, width, height) Parâmetros instanceName Uma seqüência de caracteres que identifica o nome da instância do novo campo de texto. profundidade Um inteiro positivo que especifica a profundidade do novo campo de texto. x Um inteiro que especifica a coordenada x do novo campo de texto. y Um inteiro que especifica a coordenada y do novo campo de texto. largura altura Um inteiro positivo que especifica a largura do novo campo de texto. Um inteiro positivo que especifica a altura do novo campo de texto. Retorna Nada. Descrição Método; cria um novo campo de texto vazio como filho do clipe de filme especificado pelo parâmetro my_mc. Você pode usar createTextField() para criar campos de texto enquanto o arquivo SWF é reproduzido. O campo de texto é posicionado em (x, y) com as dimensões de largura por altura. Os parâmetros x e y são relativos ao clipe de filme recipiente; esses parâmetros correspondem às propriedades _x e _y do campo de texto. Os parâmetros largura e altura correspondem às propriedades _width e _height do campo de texto. As propriedades padrão de um campo de texto são as seguintes: type = "dynamic" border = false background = false password = false multiline = false html = false embedFonts = false variable = null maxChars = null 544 Capítulo 12: Dicionário do ActionScript Um campo de texto criado com createTextField() recebe o seguinte objeto TextFormat padrão: font = "Times New Roman" size = 12 textColor = 0x000000 bold = false italic = false underline = false url = "" target = "" align = "left" leftMargin = 0 rightMargin = 0 indent = 0 leading = 0 bullet = false tabStops = [] (empty array) Exemplo O exemplo a seguir cria um campo de texto com uma largura de 300, uma altura de 100, uma coordenada x de 100, uma coordenada y de 100, sem borda, com texto vermelho e sublinhado. _root.createTextField("meutexto",1,100,100,300,100); mytext.multiline = true; mytext.wordWrap = true; mytext.border = false; myformat = new TextFormat(); myformat.color = 0xff0000; myformat.bullet = false; myformat.underline = true; mytext.text = "este é o meu primeiro texto de objeto do campo de teste"; mytext.setTextFormat(myformat); Consulte também Classe TextFormat MovieClip._currentframe Disponibilidade Flash Player 4. Uso my_mc._currentframe Descrição Propriedade (somente de leitura); retorna o número do quadro no qual a reprodução está localizada na Timeline especificada por my_mc. Exemplo O exemplo a seguir usa a propriedade _currentframe para direcionar a reprodução de actionClip_mc do clipe de filme para avançar cinco quadros em relação à sua posição atual. actionClip_mc.gotoAndStop(_currentframe + 5); MovieClip._currentframe 545 MovieClip.curveTo() Disponibilidade Flash Player 6. Uso my_mc.curveTo(controlX, controlY, anchorX, anchorY) Parâmetros Um inteiro que especifica uma posição horizontal relativa ao ponto de registro do clipe de filme pai do ponto de controle. controlX Um inteiro que especifica uma posição vertical relativa ao ponto de registro do clipe de filme pai do ponto de controle. controlY Um inteiro que especifica uma posição horizontal relativa ao ponto de registro do clipe de filme pai do próximo ponto de ancoragem. anchorX Um inteiro que especifica uma posição vertical relativa ao ponto de registro do clipe de filme pai do próximo ponto de ancoragem. anchorY Retorna Nada. Descrição Método; desenha uma curva, utilizando o estilo de linha atual, da posição de desenho até (anchorX, anchorY) com o ponto de controle especificado por (controlX, controlY). Em seguida, a posição atual do desenho é definida para (anchorX, anchorY). Se o clipe de filme em criação apresentar conteúdo elaborado com as ferramentas de desenho do Flash, as chamadas para curveTo() serão desenhadas sob esse conteúdo. Se você chamar curveTo() antes de fazer qualquer chamada a moveTo(), a posição atual do desenho será predefinida como (0, 0). Se faltar algum parâmetro, o método falhará e a posição atual do desenho não será alterada. Exemplo O exemplo a seguir desenha um círculo com uma linha azul sólida e fina, e um preenchimento vermelho sólido. _root.createEmptyMovieClip( "círculo", 1 ); with ( _root.circle ) { lineStyle( 0, 0x0000FF, 100 ); beginFill( 0xFF0000 ); moveTo( 500, 500 ); curveTo( 600, 500, 600, 400 ); curveTo( 600, 300, 500, 300 ); curveTo( 400, 300, 400, 400 ); curveTo( 400, 500, 500, 500 ); endFill(); } Consulte também MovieClip.beginFill(), MovieClip.createEmptyMovieClip(), MovieClip.endFill(), MovieClip.lineStyle(), MovieClip.lineTo(), MovieClip.moveTo() 546 Capítulo 12: Dicionário do ActionScript MovieClip._droptarget Disponibilidade Flash Player 4. Uso my_mc._droptarget Descrição Propriedade (somente de leitura); retorna o caminho absoluto, em notação de sintaxe de barra, da instância do clipe de filme em que my_mc foi solto. A propriedade _droptarget sempre retorna um caminho iniciado com uma barra (/). Para comparar a propriedade _droptarget de uma instância com uma referência, use a eval() função para converter o valor retornado da sintaxe de barra em uma referência de sintaxe de ponto. Exemplo O exemplo a seguir avalia a propriedade _droptarget da instância de clipe de filme garbage e usa eval() para convertê-la de sintaxe de barra em uma referência de sintaxe de ponto. A referência garbage é, então, comparada com a referência à instância do clipe de filme trash. Se as duas referências forem equivalentes, a visibilidade de garbage será definida como false. Se não forem equivalentes, a instância de garbage será redefinida para sua posição original. if (eval(garbage._droptarget) == _root.trash) { garbage._visible = false; else { garbage._x = x_pos; garbage._y = y_pos; } As variáveis x_pos e y_pos são definidas no quadro 1 do arquivo SWF com o seguinte script: x_pos = garbage._x; y_pos = garbage._y; Consulte também startDrag() MovieClip._droptarget 547 MovieClip.duplicateMovieClip() Disponibilidade Flash Player 5. Uso my_mc.duplicateMovieClip(newname, depth [,initObject]) Parâmetros newname Um identificador exclusivo do clipe de filme duplicado. depth Um número exclusivo que especifica o nível de profundidade em que o arquivo SWF deve ser colocado. (Suportado pelo Flash Player 6 e posterior.) Um objeto que contém propriedades com as quais se deve preencher o clipe de filme duplicado. Este parâmetro permite que os clipes de filme criados dinamicamente recebam parâmetros de clipe. Se initObject não for um objeto, ele será ignorado. Todas as propriedades de initObject são copiadas na nova instância. As propriedades especificadas com initObject estão disponíveis para a função construtora. Este parâmetro é opcional. initObject Retorna Nada. Descrição Método; cria uma instância do clipe de filme especificado enquanto o arquivo SWF está sendo reproduzido. A reprodução dos clipes de filme duplicados sempre começam no quadro 1, independentemente de em qual quadro o clipe de filme original esteja quando o método duplicateMovieClip() é chamado. As variáveis no clipe de filme pai não são copiadas para o clipe de filme duplicado. Os clipes de filme criados com o método duplicateMovieClip() não serão duplicados se você chamar duplicateMovieClip() em seus pais. Se o clipe de filme pai for excluído, o clipe de filme duplicado também o será. Os clipes de filme adicionados com duplicateMovieClip() podem ser excluídos com a ação ou o método removeMovieClip(). Consulte também duplicateMovieClip(), MovieClip.removeMovieClip(), removeMovieClip() 548 Capítulo 12: Dicionário do ActionScript MovieClip.enabled Disponibilidade Flash Player 6. Uso my_mc.enabled Descrição Propriedade; um valor booleano que indica se um clipe de filme de botão está ativado. O valor padrão de enabled é true. Se for atribuído o valor false para enabled, os métodos de retorno de chamada do clipe de filme de botão e os manipuladores de evento onAction não serão mais chamados. Além disso, os quadros Over (Sobre), Down (Para baixo) e Up (Para cima) serão desativados. A propriedade enabled não afeta a Linha de tempo do clipe de filme de botão; se um clipe de filme estiver sendo reproduzido, esse processo não será interrompido. O clipe de filme continuará a receber eventos do clipe de filme (por exemplo, mouseDown, mouseUp, keyDown e keyUp). A propriedade enabled regula apenas as propriedades de botão de um clipe de filme de botão. É possível alterar a propriedade enabled a qualquer momento; o clipe de filme de botão modificado é ativado ou desativado imediatamente. A propriedade enabled pode ser lida a partir de um objeto de protótipo. Se enabled estiver definida como false, o objeto não será incluído na ordenação automática de guias. MovieClip.endFill() Disponibilidade Flash Player 6. Uso my_mc.endFill() Parâmetros Nenhum. Retorna Nada. Descrição Método; aplica um preenchimento às linhas e curvas adicionadas desde a última chamada ao método beginFill() ou beginGradientFill(). O Flash usa o preenchimento especificado na chamada anterior a beginFill() ou beginGradientFill(). Se a posição de desenho atual não for igual à posição anterior especificada em um método moveTo() e um preenchimento for definido, o caminho será fechado com uma linha e preenchido em seguida. MovieClip.endFill() 549 MovieClip.focusEnabled Disponibilidade Flash Player 6. Uso my_mc.focusEnabled Descrição Propriedade; se o valor for undefined ou false, um clipe de filme não poderá receber o foco de entrada, a menos que o clipe seja um clipe de filme de botão. Se o valor da propriedade focusEnabled for true, um clipe de filme poderá receber o foco de entrada mesmo que não seja do tipo de botão. MovieClip._focusrect Disponibilidade Flash Player 6. Uso my_mc._focusrect Descrição Propriedade; um valor booleano que especifica se um clipe de filme apresenta um retângulo amarelo ao seu redor quando tem o foco do teclado. Esta propriedade pode prevalecer sobre a propriedade global _focusrect. 550 Capítulo 12: Dicionário do ActionScript MovieClip._framesloaded Disponibilidade Flash Player 4. Uso my_mc._framesloaded Descrição Propriedade (somente de leitura); o número de quadros que foram carregados de um arquivo SWF em fluxo. Esta propriedade é útil para determinar se o conteúdo de um determinado quadro e todos os quadros antes dele foram carregados e estão disponíveis localmente no navegador. Isso é útil para monitorar o processo de download de arquivos SWF grandes. Por exemplo, você pode exibir uma mensagem para os usuários indicando que o SWF está carregando até que um determinado quadro do SWF tenha sido carregado. Exemplo O exemplo a seguir utiliza a propriedade _framesloaded para iniciar um SWF quando todos os quadros estão carregados. Se nem todos os quadros estiverem carregados, a propriedade _xscale da instância do clipe de filme loader será aumentada proporcionalmente para criar uma barra de progresso. if (_framesloaded >= _totalframes) { gotoAndPlay ("Scene 1", "start"); else { _root.loader._xscale = (_framesloaded/_totalframes)*100; } MovieClip._framesloaded 551 MovieClip.getBounds() Disponibilidade Flash Player 5. Uso my_mc.getBounds(targetCoordinateSpace) Parâmetros targetCoordinateSpace O caminho de destino da Linha de tempo cujo sistema de coordenadas você deseja usar como ponto de referência. Retorna Um objeto com as propriedades xMin, xMax, yMin e yMax. Descrição Método; retorna as propriedades correspondentes aos valores mínimos e máximos de coordenadas x e y da instância especificada por my_mc para o parâmetro targetCoordinateSpace. Observação: Use MovieClip.localToGlobal() e MovieClip.globalToLocal() para converter as coordenadas locais do clipe de filme em coordenadas do Stage (Palco), ou coordenadas do Stage (Palco) em coordenadas locais, respectivamente. Exemplo No exemplo a seguir, o objeto retornado por getBounds() é atribuído ao identificador clipBounds. Em seguida, é possível acessar os valores de cada propriedade e utilizá-los em um script. Outra instância de clipe de filme, chamada clip2, é colocada junto de clip neste script. clipBounds = clip.getBounds(_root); clip2._x = clipBounds.xMax; Consulte também MovieClip.globalToLocal(), MovieClip.localToGlobal() 552 Capítulo 12: Dicionário do ActionScript MovieClip.getBytesLoaded() Disponibilidade Flash Player 5. Uso my_mc.getBytesLoaded() Parâmetros Nenhum. Retorna Um inteiro que indica o número de bytes carregados. Descrição Método; retorna a quantidade de bytes já carregados (transmitidos) do clipe de filme especificado por my_mc. Este valor pode ser comparado com o valor retornado por MovieClip.getBytesTotal() para determinar a porcentagem já carregada do clipe de filme. Consulte também MovieClip.getBytesTotal() MovieClip.getBytesTotal() Disponibilidade Flash Player 5. Uso my_mc.getBytesTotal() Parâmetros Nenhum. Retorna Um inteiro que indica o tamanho total, em bytes, de my_mc. Descrição Método; retorna o tamanho em bytes do clipe de filme especificado por my_mc. No caso de clipes de filme externos (o SWF raiz ou um clipe de filme que esteja sendo carregado em um destino ou nível), o valor de retorno será o tamanho do arquivo SWF. Consulte também MovieClip.getBytesLoaded() MovieClip.getBytesTotal() 553 MovieClip.getDepth() Disponibilidade Flash Player 6. Uso my_mc.getDepth() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna a profundidade de uma instância de clipe de filme. Para obter mais informações, consulte “Gerenciando profundidades do clipe de filme” na página 128. Consulte também MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth(), MovieClip.swapDepths() MovieClip.getInstanceAtDepth() Disponibilidade Flash Player 7. Uso my_mc.getInstanceAtDepth(depth) Parâmetros depth Um inteiro que especifica o nível de profundidade da consulta. Retorna Uma seqüência de caracteres contendo o nome do clipe de filme localizado na profundidade especificada ou undefined se não houver nenhum clipe de filme naquela profundidade. Descrição Método; permite determinar se uma certa profundidade já está ocupada por um clipe de filme. Pode-se usar esse método antes de usar MovieClip.attachMovie(), MovieClip.duplicateMovieClip() ou MovieClip.createEmptyMovieClip() para descobrir se o parâmetro depth que você deseja passar para qualquer desses métodos já contém um clipe de filme. Para obter mais informações, consulte “Gerenciando profundidades do clipe de filme” na página 128. Consulte também MovieClip.getDepth(), MovieClip.getNextHighestDepth(), MovieClip.swapDepths() 554 Capítulo 12: Dicionário do ActionScript MovieClip.getNextHighestDepth() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Uso my_mc.getNextHighestDepth() Parâmetros Nenhum. Retorna Um inteiro que informa o próximo índice de profundidade disponível e que levaria à renderização sobre todos os outros objetos em my_mc. Descrição Método; permite determinar um valor de profundidade que pode ser passado para MovieClip.attachMovie(), MovieClip.duplicateMovieClip() ou MovieClip.createEmptyMovieClip(), a fim de assegurar que o Flash renderize o clipe de filme na frente de todos os outros objetos no clipe de filme atual. O valor retornado é 0 ou maior (ou seja, números negativos não são retornados). Para obter mais informações, consulte “Gerenciando profundidades do clipe de filme” na página 128. Consulte também MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.swapDepths() MovieClip.getSWFVersion() Disponibilidade Flash Player 7. Uso my_mc.getSWFVersion() Parâmetros Nenhum. Retorna Um inteiro que especifica a versão do arquivo SWF carregado no my_mc. Descrição Método; retorna um inteiro que indica a versão do Flash Player em que my_mc foi publicado. Se my_mc for um arquivo JPEG ou se ocorrer um erro e o Flash não puder descobrir a versão SWF de my_mc, -1 será retornado. MovieClip.getSWFVersion() 555 MovieClip.getTextSnapshot() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). MovieClip.getURL() Disponibilidade Flash Player 5. Uso my_mc.getURL(URL [,janela, variáveis]) Parâmetros url O URL de onde pode ser obtido o documento. janela Um parâmetro opcional que especifica o nome, o quadro ou a expressão que determina a janela ou o quadro HTML em que o documento foi carregado. Também é possível usar um dos seguintes nomes de destino reservados: _self especifica o quadro atual na janela atual, _blank especifica uma nova janela, _parent especifica o pai do quadro atual e _top especifica o quadro de alto nível na janela atual. variáveis Um parâmetro opcional que especifica um método de envio de variáveis associado ao filme a ser carregado. Se não houver variáveis, omita esse parâmetro; caso contrário, especifique se deseja carregar as variáveis usando um método GET ou POST. GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. POST envia as variáveis em um cabeçalho HTTP em separado e é usado para maiores seqüências de caracteres de variáveis. Retorna Nada. Descrição Método; carrega um documento do URL especificado na janela especificada. O método getURL também pode ser usado para passar variáveis para outro aplicativo definido no URL usando o método GET ou POST. Consulte também getURL() 556 Capítulo 12: Dicionário do ActionScript MovieClip.globalToLocal() Disponibilidade Flash Player 5. Uso my_mc.globalToLocal(point) Parâmetros O nome ou identificador de um objeto criado com o Classe Object genérico. O objeto especifica as coordenadas x e y como coordenadas. point Retorna Nada. Descrição Método; converte o objeto Ponto das coordenadas do Palco (global) em coordenadas do clipe de filme (local). Exemplo O exemplo a seguir converte as coordenadas x e y globais do objeto Ponto em coordenadas locais do clipe de filme. onClipEvent(mouseMove) { point = new object(); point.x = _root._xmouse; point.y = _root._ymouse; globalToLocal(point); trace(_root._xmouse + " " + _root._ymouse); trace(point.x + " " + point.y); updateAfterEvent(); } Consulte também MovieClip.getBounds(), MovieClip.localToGlobal() MovieClip.globalToLocal() 557 MovieClip.gotoAndPlay() Disponibilidade Flash Player 5. Uso my_mc.gotoAndPlay(quadro) Parâmetros quadro O número do quadro para o qual a reprodução é enviada. Retorna Nada. Descrição Método; começa a reproduzir o arquivo SWF no quadro especificado. Consulte também gotoAndPlay() MovieClip.gotoAndStop() Disponibilidade Flash Player 5. Uso my_mc.gotoAndStop(quadro) Parâmetros quadro O número do quadro para o qual a reprodução é enviada. Retorna Nada. Descrição Método; envia a reprodução para o quadro especificado do clipe de filme e a interrompe nessa posição. Consulte também gotoAndStop() 558 Capítulo 12: Dicionário do ActionScript MovieClip._height Disponibilidade Flash Player 4. Uso my_mc._height Descrição Propriedade; a altura em pixels do clipe de filme. Exemplo O exemplo de código a seguir define a altura e a largura de um clipe de filme quando o usuário clica com o botão do mouse. onClipEvent(mouseDown) { _width=200; _height=200; } MovieClip._highquality Disponibilidade Flash Player 6. Uso my_mc._highquality Descrição Propriedade (global); especifica o nível de eliminação de serrilhado aplicado ao arquivo SWF atual. Especifique 2 (melhor qualidade) para aplicar alta qualidade com a suavização de bitmap sempre ativada. Especifique 1 (alta qualidade) para aplicar o recurso de eliminação de serrilhado; isso suavizará os bitmaps se o SWF não contiver animação. Especifique 0 (baixa qualidade) para evitar o recurso sem serrilhado. Esta propriedade pode substituir a propriedade global _highquality. Exemplo my_mc._highquality = 1; Consulte também _quality, toggleHighQuality() MovieClip._highquality 559 MovieClip.hitArea Disponibilidade Flash Player 6. Uso my_mc.hitArea Retorna Uma referência a um clipe de filme. Descrição Propriedade; designa outro clipe de filme para atuar como a área de clicagem de um clipe de filme de botão. Se não houver uma propriedade hitArea ou se ela for null ou undefined, o próprio clipe de filme de botão será usado como a área de clicagem. O valor da propriedade hitArea pode ser uma referência para um objeto de clipe de filme. É possível alterar a propriedade hitArea a qualquer momento; o clipe de filme de botão modificado assume imediatamente o comportamento da nova área de clicagem. O clipe de filme designado como área de clicagem não precisa ficar visível; sua forma gráfica é testada mesmo que esteja invisível. A propriedade hitArea pode ser lida de um objeto de protótipo. 560 Capítulo 12: Dicionário do ActionScript MovieClip.hitTest() Disponibilidade Flash Player 5. Uso my_mc.hitTest(x, y, shapeFlag) my_mc.hitTest(target) Parâmetros x A coordenada x da área de clicagem no Palco. y A coordenada y da área de clicagem no Palco. As coordenadas x e y são definidas no espaço de coordenadas globais. target O caminho de destino da área de clicagem que pode entrar em interseção ou sobreposição com a instância especificada por my_mc. Normalmente, target representa um botão ou um campo de entrada de texto. shapeFlag Um valor booleano que determina se será avaliada a forma completa da instância especificada (true) ou apenas a caixa delimitadora (false). Esse parâmetro só poderá ser especificado se a área de clicagem for identificada com os parâmetros de coordenadas x e y. Retorna Um valor booleano true, se my_mc for sobreposto à área de clicagem especificada, caso contrário, false. Descrição Método; avalia a instância especificada por my_mc para ver se ela se sobrepõe ou entra em interseção com a área de clicagem identificada por target ou pelos parâmetros de coordenadas x e y. Uso 1: Compara as coordenadas x e y com a forma ou com a caixa delimitadora da instância especificada, de acordo com a definição de shapeFlag. Se shapeFlag for definido como true, somente a área realmente ocupada pela instância no Palco é avaliada e se x e y se sobrepuserem em algum ponto, um valor true é retornado. Isso é útil para determinar se o clipe de filme está dentro de uma área de clicagem ou de ponto ativo especificada. Uso 2: Avalia as caixas delimitadoras de target e da instância especificada e retorna true caso elas se sobreponham ou entrem em interseção em algum ponto. MovieClip.hitTest() 561 Exemplo O exemplo a seguir usa hitTest() com as propriedades x_mouse e y_mouse para determinar se o ponteiro do mouse está sobre a caixa delimitadora de destino: if (hitTest( _root._xmouse, _root._ymouse, false)); O exemplo a seguir usa hitTest() para determinar se o clipe de filme ball se sobrepõe ou entra em interseção com o clipe de filme square: if(_root.ball.hitTest(_root.square)){ trace("ball intersects square"); } Consulte também MovieClip.getBounds(), MovieClip.globalToLocal(), MovieClip.localToGlobal() MovieClip.lineStyle() Disponibilidade Flash Player 6. Uso my_mc.lineStyle ([espessura[, rgb[, alfa]]]) Parâmetros espessura Um inteiro que indica a espessura da linha, em pontos. Os valores válidos vão de 0 a 255. Se um número não for especificado ou se o parâmetro for undefined, nenhuma linha será desenhada. Se um valor menor que 0 for passado, o Flash usará 0. O valor 0 indica espessura fina; a espessura máxima é 255. Se um valor maior que 255 for passado, o interpretador do Flash usará 255. Um valor de cor hexadecimal da linha (por exemplo, vermelho corresponde a 0xFF0000, azul corresponde a 0x0000FF e assim por diante). Se nenhum valor for indicado, o Flash usará 0x000000 (preto). rgb alfa Um inteiro que indica o valor alfa da cor da linha; os valores válidos vão de 0 a 100. Se nenhum valor for indicado, o Flash usará 100 (sólido). Se o valor for menor do que 0, o Flash usará 0 e se for maior do que 100, o Flash usará100. Retorna Nada. Descrição Método; especifica um estilo de linha que será usado pelo Flash para as chamadas subseqüentes aos métodos lineTo() e curveTo() até que lineStyle() seja chamado com parâmetros diferentes. É possível chamar o método lineStyle() durante o desenho de um caminho para especificar estilos diferentes para segmentos de linha distintos em um caminho. Observação: As chamadas para clear redefinem o método lineStyle() como undefined. 562 Capítulo 12: Dicionário do ActionScript Exemplo O código a seguir desenha um triângulo com uma linha magenta sólida de 5 pontos e sem preenchimento. _root.createEmptyMovieClip( "triângulo", 1 ); with ( _root.triangle ) { lineStyle( 5, 0xff00ff, 100 ); moveTo( 200, 200 ); lineTo( 300,300 ); lineTo( 100, 300 ); lineTo( 200, 200 ); } Consulte também MovieClip.beginFill(), MovieClip.beginGradientFill(), MovieClip.clear(), MovieClip.curveTo(), MovieClip.lineTo(), MovieClip.moveTo() MovieClip.lineStyle() 563 MovieClip.lineTo() Disponibilidade Flash Player 6. Uso my_mc.lineTo(x, y) Parâmetros x Um inteiro que indica a posição horizontal relativa ao ponto de registro do clipe de filme pai. y Um inteiro que indica a posição vertical relativa ao ponto de registro do clipe de filme pai. Retorna Nada. Descrição Método; desenha uma linha utilizando o estilo atual a partir da posição do desenho no momento em (x, y); a posição atual do desenho é então definida como (x, y). Se o clipe de filme em que você está desenhando apresentar conteúdo criado com as ferramentas de desenho do Flash, as chamadas para lineTo() serão feitas sob o conteúdo. Se você chamar lineTo() antes de realizar qualquer chamada ao método moveTo(), o padrão da posição atual do desenho será (0, 0). Se faltar algum parâmetro, o método falhará e a posição atual do desenho não será alterada. Exemplo O exemplo a seguir desenha um triângulo sem nenhuma linha e um preenchimento azul parcialmente transparente. _root.createEmptyMovieClip ("triangle", 1); with (_root.triangle){ beginFill (0x0000FF, 50); lineStyle (5, 0xFF00FF, 100); moveTo (200, 200); lineTo (300, 300); lineTo (100, 300); lineTo (200, 200); endFill(); } Consulte também MovieClip.beginFill(), MovieClip.createEmptyMovieClip(), MovieClip.endFill(), MovieClip.lineStyle(), MovieClip.moveTo() 564 Capítulo 12: Dicionário do ActionScript MovieClip.loadMovie() Disponibilidade Flash Player 5. Uso my_mc.loadMovie("url" [,variáveis]) Parâmetros Um URL absoluto ou relativo do arquivo SWF ou JPEG a ser carregado. Um caminho relativo deve ser relativo ao arquivo SWF no nível 0. Para utilização em um Flash Player independente ou para verificação no modo de teste do aplicativo de criação do Flash, todos os arquivos SWF devem estar armazenados na mesma pasta e os nomes de arquivo não podem incluir especificações de pasta ou unidade de disco. url variáveis Um parâmetro opcional que especifica um método HTTP para o envio ou carregamento de variáveis. O parâmetro deve ser a seqüência de caracteres GET ou POST. Se não houver nenhuma variável a ser enviada, omita esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado para seqüências de caracteres maiores de variáveis. Retorna Nada. Descrição Método; carrega arquivos SWF ou JPEG em um clipe de filme no Flash Player durante a reprodução do arquivo SWF original. Sem o método loadMovie(), o Flash Player exibe um único arquivo SWF e, em seguida, é encerrado. O método loadMovie() permite que você exiba vários SWFs de uma só vez e alterne entre os SWFs sem carregar outro documento HTML. Um SWF ou uma imagem carregada em um clipe de filme herda as propriedades de posição, rotação e dimensionamento do clipe de filme. Utilize o caminho de destino do clipe de filme para especificar o SWF carregado. Use o método unloadMovie() para remover SWFs ou imagens carregadas com o método Use o método loadVariables() para manter o SWF ativo e atualizar as variáveis com os novos valores. loadMovie(). Se desejar monitorar o progresso de um arquivo à medida que ele é carregado, use em vez deste método. Para obter mais informações, consulte a entrada da Classe MovieClipLoader. MovieClipLoader.loadClip() Consulte também loadMovie(), loadMovieNum(), MovieClip.loadVariables(), MovieClip.unloadMovie(), unloadMovie(), unloadMovieNum() MovieClip.loadMovie() 565 MovieClip.loadVariables() Disponibilidade Flash Player 5. Uso my_mc.loadVariables("url", variáveis) Parâmetros url O URL absoluto ou relativo para o arquivo externo que contém as variáveis a serem carregadas. O host do URL deve estar no mesmo subdomínio que o clipe de filme. variáveis Um parâmetro opcional que especifica um método HTTP para o envio de variáveis. O parâmetro deve ser a seqüência de caracteres GET ou POST. Se não houver nenhuma variável a ser enviada, omita esse parâmetro. O método GET anexa as variáveis ao final do URL e é usado para pequenos números de variáveis. O método POST envia as variáveis em um cabeçalho HTTP separado e é usado para seqüências de caracteres maiores de variáveis. Retorna Nada. Descrição Método; lê dados de um arquivo externo e define os valores das variáveis em my_mc. O arquivo externo pode ser um arquivo de texto gerado por script CGI, Active Server Pages (ASP) ou PHP, e pode conter qualquer número de variáveis. Esse método também pode ser usado para atualizar variáveis no clipe de filme ativo com novos valores. O método precisa que o texto do URL esteja no formato MIME padrão: application/x-www-formurlencoded (formato de script CGI). Consulte também loadMovie(), loadVariables(), loadVariablesNum(), MovieClip.unloadMovie() 566 Capítulo 12: Dicionário do ActionScript MovieClip.localToGlobal() Disponibilidade Flash Player 5. Uso my_mc.localToGlobal(point) Parâmetros O nome ou identificador de um objeto criado com a classe Object Classe Object, especificando as coordenadas x e y como propriedades. point Retorna Nada. Descrição Método; converte o objeto Point das coordenadas (locais) do clipe de filme em coordenadas (globais) do Stage (Palco). Exemplo O exemplo a seguir converte as coordenadas x e y do objeto point de coordenadas do clipe de filme (locais) em coordenadas globais do Stage (Palco). As coordenadas x e y locais são especificadas com as propriedades _xmouse e _ymouse para recuperar as coordenadas x e y da posição do ponteiro do mouse. onClipEvent(mouseMove) { point = new object(); point.x = _xmouse; point.y = _ymouse; _root.out3 = point.x + " === " + point.y; _root.out = _root._xmouse + " === " + _root._ymouse; localToGlobal(point); _root.out2 = point.x + " === " + point.y; updateAfterEvent(); } Consulte também MovieClip.globalToLocal() MovieClip.localToGlobal() 567 MovieClip._lockroot Disponibilidade Flash Player 7. Uso my_mc._lockroot Descrição Propriedade; especifica o que está sendo apontado por _root no momento em que um arquivo SWF foi carregado no clipe de filme. O valor padrão da propriedade _lockroot é undefined. É possível definir essa propriedade no SWF ou no manipulador que está carregando o clipe de filme. Por exemplo, vamos supor que você tenha um documento chamado Games.fla, que permite ao usuário escolher um jogo e carrega o jogo (por exemplo, Chess.swf ) no clipe de filme game_mc. Você gostaria de ter certeza de que, se _root for usado em Chess.swf, ele ainda fará referência a _root de Chess.swf depois de ter sido carregado em Games.swf. Se tiver acesso a Chess.fla e publicá-lo no Flash Player 7 ou posterior, você poderá adicionar esse comando a ele: this._lockroot = true; Se não tiver acesso a Chess.fla (por exemplo, se estiver carregando Chess.swf a partir do site de outra pessoa), você poderá definir a propriedade _lockroot quando carregá-lo, conforme mostrado abaixo. Nesse caso, Chess.swf poderá ser publicado em qualquer versão do Flash Player desde que Games.swf seja publicado no Flash Player 7 ou posterior. onClipEvent (load) { this._lockroot = true; } game_mc.loadMovie ("Chess.swf"); Caso não tenha usado o comando this._lockroot = true em nenhum dos SWFs, _root de Chess.swf irá se referir a _root do Games.swf depois que Chess.swf tiver sido carregado em Games.swf. Consulte também _root, MovieClip.attachMovie(), MovieClip.loadMovie() 568 Capítulo 12: Dicionário do ActionScript MovieClip.menu Disponibilidade Flash Player 7. Uso my_mc.menu = contextMenu Parâmetros contextMenu Um objeto ContextMenu. Descrição Propriedade; associa o objeto ContextMenu especificado ao clipe de filme my_mc. A classe ContextMenu permite modificar o menu contextual que aparece quando o usuário clica com o botão direito do mouse (Windows) ou com a tecla Control pressionada (Macintosh) no Flash Player. Exemplo O exemplo a seguir atribui o objeto ContextMenu menu_cm ao clipe de filme content_mc. O objeto ContextMenu contém um item de menu personalizado “Imprimir...” com um manipulador associado de retorno de chamada denominado doPrint(). var menu_cm = new ContextMenu(); menu_cm.customItems.push(new ContextMenuItem("Imprimir...", doPrint)); function doPrint(menu, obj) { // Aqui vai o código de "Imprimir" } content_mc.menu = menu_cm; Consulte também Button.menu, Classe ContextMenu, Classe ContextMenuItem, TextField.menu MovieClip.menu 569 MovieClip.moveTo() Disponibilidade Flash Player 6. Uso my_mc.moveTo(x, y) Parâmetros x Um inteiro que indica a posição horizontal relativa ao ponto de registro do clipe de filme pai. y Um inteiro que indica a posição vertical relativa ao ponto de registro do clipe de filme pai. Retorna Nada. Descrição Método; move a posição atual do desenho para (x, y). Se faltar algum parâmetro, o método falhará e a posição atual do desenho não será alterada. Exemplo Este exemplo desenha um triângulo com linhas magenta sólidas de 5 pontos, sem preenchimento. A primeira linha cria um clipe de filme vazio para o desenho. Um tipo de linha é definido no comando with; em seguida, a posição inicial do desenho é indicada pelo método moveTo(). _root.createEmptyMovieClip( "triângulo", 1 ); with ( _root.triangle ) { lineStyle( 5, 0xff00ff, 100 ); moveTo( 200, 200 ); lineTo( 300,300 ); lineTo( 100, 300 ); lineTo( 200, 200 ); } Consulte também MovieClip.createEmptyMovieClip(), MovieClip.lineStyle(), MovieClip.lineTo() MovieClip._name Disponibilidade Flash Player 4. Uso my_mc._name Descrição Propriedade; retorna o nome da instância do clipe de filme especificado por my_mc. 570 Capítulo 12: Dicionário do ActionScript MovieClip.nextFrame() Disponibilidade Flash Player 5. Uso my_mc.nextFrame() Parâmetros Nenhum. Retorna Nada. Descrição Método; envia a reprodução para o próximo quadro e a encerra. Consulte também nextFrame() MovieClip.onData Disponibilidade Flash Player 6. Uso my_mc.onData = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando um clipe de filme recebe dados de uma chamada loadVariables() ou loadMovie(). É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Esse manipulador poderá ser usado somente com clipes de filme para os quais você tenha um símbolo em biblioteca associada a uma classe. Se desejar que um manipulador de eventos seja invocado quando um clipe de filme específico receber dados, use onClipEvent(data) em vez deste manipulador. Este manipulador será chamado quando qualquer clipe de filme receber dados. MovieClip.onData 571 Exemplo O exemplo a seguir ilustra o uso correto de MovieClip.onData() e onClipEvent(data). // symbol_mc é um símbolo de clipe de filme na biblioteca. // Está vinculado à classe MovieClip. // A função a seguir é ativada para cada instância de symbol_mc // quando recebe dados. symbol_mc.onData = function() { trace("O clipe de filme recebeu dados"); } // dynamic_mc é um clipe de filme que está sendo carregado com MovieClip.loadMovie(). // Esse código tenta chamar uma função quando o clipe é carregado, // mas não funcionará porque o SWF carregado não é um símbolo // na biblioteca associada à classe MovieClip. function output() { trace("Nunca será chamado."); } dynamic_mc.onData = output; dynamic_mc.loadMovie("replacement.swf"); // A função a seguir é chamada para qualquer clipe de filme que // recebe dados, quer esteja na biblioteca ou não. // Portanto, essa função é chamada quando symbol_mc é instanciado // e também quando replacement.swf é carregado. onClipEvent(data) { trace("O clipe de filme recebeu dados"); } Consulte também onClipEvent() 572 Capítulo 12: Dicionário do ActionScript MovieClip.onDragOut Disponibilidade Flash Player 6. Uso my_mc.onDragOut = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o botão do mouse é pressionado e o ponteiro rola para fora da área do objeto. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onDragOut que envia uma ação trace() ao painel Output (Saída). my_mc.onDragOut = function () { trace ("onDragOut chamado"); }; Consulte também MovieClip.onDragOver MovieClip.onDragOut 573 MovieClip.onDragOver Disponibilidade Flash Player 6. Uso my_mc.onDragOver = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; invocado quando o ponteiro é arrastado fora e, em seguida, para cima do clipe de filme. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onDragOver que envia uma ação trace() ao painel Output (Saída). my_mc.onDragOver = function () { trace ("onDragOver chamado"); }; Consulte também MovieClip.onDragOut 574 Capítulo 12: Dicionário do ActionScript MovieClip.onEnterFrame Disponibilidade Flash Player 6. Uso my_mc.onEnterFrame = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado continuamente na mesma taxa de quadros do arquivo SWF. As ações associadas ao evento de clipe enterFrame são processadas antes de qualquer ação de quadro que tenha sido anexada aos quadros afetados. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onEnterFrame que envia uma ação trace() ao painel Output (Saída). my_mc.onEnterFrame = function () { trace ("onEnterFrame chamado"); }; MovieClip.onEnterFrame 575 MovieClip.onKeyDown Disponibilidade Flash Player 6. Uso my_mc.onKeyDown = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando um clipe de filme tem o foco de entrada e uma tecla é pressionada. O manipulador de eventos onKeyDown é chamado sem nenhum parâmetro. É possível usar os métodos Key.getAscii() e Key.getCode() para determinar qual tecla foi pressionada. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. O manipulador de eventos onKeyDown só funcionará se o clique de filme tiver foco de entrada ativado e definido. Primeiro, a propriedade focusEnabled deve ser definida como true para o clipe de filme. Em seguida, é preciso dar foco ao clipe. Para isso, use Selection.setFocus() ou então acione a tecla Tab para navegar até o clipe. Se Selection.setFocus() for utilizado, o caminho do clipe de filme deverá ser passado para Selection.setFocus(). É muito fácil para outros elementos retomarem o foco depois que o mouse é movido. Exemplo O exemplo a seguir define uma função para o método onKeyDown() que envia uma ação trace() ao painel Output (Saída): my_mc.onKeyDown = function () { trace ("onKeyDown chamado"); }; O exemplo a seguir define o foco de entrada: MovieClip.focusEnabled = true; Selection.setFocus(MovieClip); Consulte também MovieClip.onKeyUp 576 Capítulo 12: Dicionário do ActionScript MovieClip.onKeyUp Disponibilidade Flash Player 6. Uso my_mc.onKeyUp = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando uma tecla é liberada. O manipulador de eventos onKeyUp é chamado sem nenhum parâmetro. É possível usar os métodos Key.getAscii() e Key.getCode() para determinar qual tecla foi pressionada. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. O manipulador de eventos onKeyUp só funcionará se o clipe de filme tiver foco de entrada ativado e definido. Primeiro, a propriedade focusEnabled deve ser definida como true para o clipe de filme. Em seguida, é preciso dar foco ao clipe. Para isso, use Selection.setFocus() ou então acione a tecla Tab para navegar até o clipe. Se Selection.setFocus() for utilizado, o caminho do clipe de filme deverá ser passado para Selection.setFocus(). É muito fácil para outros elementos retomarem o foco depois que o mouse é movido. Exemplo O exemplo a seguir define uma função para o método onKeyUp que envia uma ação trace() ao painel Output (Saída). my_mc.onKeyUp = function () { trace ("onKeyUp chamada"); }; O exemplo a seguir define o foco de entrada: MovieClip.focusEnabled = true; Selection.setFocus(MovieClip); MovieClip.onKeyUp 577 MovieClip.onKillFocus Disponibilidade Flash Player 6. Uso my_mc.onKillFocus = function (newFocus) { // seus comandos vão aqui } Parâmetros newFocus O objeto que recebe o foco do teclado. Retorna Nada. Descrição Manipulador de eventos; chamado quando um clipe de filme perde o foco do teclado. O método onKillFocus recebe um parâmetro, newFocus, que é um objeto representando o novo objeto a receber o foco. Se nenhum objeto receber o foco, newFocus conterá o valor null. MovieClip.onLoad Disponibilidade Flash Player 6. Uso my_mc.onLoad = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o clipe de filme é criado e aparece na Linha de tempo. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Esse manipulador poderá ser usado somente com clipes de filme para os quais você tenha um símbolo em biblioteca associada a uma classe. Se desejar que um manipulador de eventos seja chamado ao carregar um clipe de filme específico, por exemplo, ao usar MovieClip.loadMovie() para carregar dinamicamente um arquivo SWF, você deverá usar onClipEvent(load) em vez deste manipulador. Este manipulador será chamado quando qualquer clipe de filme for carregado. 578 Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir ilustra o uso correto de MovieClip.onLoad() e onClipEvent(load). // symbol_mc é um símbolo de clipe de filme na biblioteca. // Está vinculado à classe MovieClip. // A função a seguir é ativada para cada instância de symbol_mc // à medida que são instanciadas e apareçam na Timeline. symbol_mc.onLoad = function() { trace("O clipe de filme foi carregado"); } // dynamic_mc é um clipe de filme que está sendo carregado com MovieClip.loadMovie(). // Esse código tenta chamar uma função quando o clipe é carregado, // mas não funcionará porque o SWF carregado não é um símbolo // na biblioteca associada à classe MovieClip. function output() { trace("Nunca será chamado."); } dynamic_mc.onLoad = output; dynamic_mc.loadMovie("replacement.swf"); // A função a seguir é chamada para qualquer clipe de filme que // aparece na Timeline (Linha de tempo), quer esteja na biblioteca ou não. // Portanto, essa função é chamada quando symbol_mc é instanciado // e também quando replacement.swf é carregado. OnClipEvent( load ) { trace("O clipe de filme foi carregado"); } Consulte também onClipEvent() MovieClip.onLoad 579 MovieClip.onMouseDown Disponibilidade Flash Player 6. Uso my_mc.onMouseDown = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o botão do mouse é pressionado. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onMouseDown que envia uma ação trace() ao painel Output. my_mc.onMouseDown = function () { trace ("onMouseDown chamado"); } 580 Capítulo 12: Dicionário do ActionScript MovieClip.onMouseMove Disponibilidade Flash Player 6. Uso my_mc.onMouseMove = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o mouse é movido. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onMouseMove que envia uma ação trace() ao painel Output. my_mc.onMouseMove = function () { trace ("onMouseMove chamado"); }; MovieClip.onMouseMove 581 MovieClip.onMouseUp Disponibilidade Flash Player 6. Uso my_mc.onMouseUp = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o botão do mouse é liberado. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onMouseUp que envia uma ação trace() ao painel Output. my_mc.onMouseUp = function () { trace ("onMouseUp chamado"); }; 582 Capítulo 12: Dicionário do ActionScript MovieClip.onPress Disponibilidade Flash Player 6. Uso my_mc.onPress = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o usuário clica no mouse enquanto o ponteiro permanece sobre um clipe de filme. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onPress que envia uma ação trace() ao painel Output. my_mc.onPress = function () { trace ("onPress chamado"); }; MovieClip.onPress 583 MovieClip.onRelease Disponibilidade Flash Player 6. Uso my_mc.onRelease = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando um clipe de filme de botão é liberado. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onPress que envia uma ação trace() ao painel Output. my_mc.onRelease = function () { trace ("onRelease chamado"); }; 584 Capítulo 12: Dicionário do ActionScript MovieClip.onReleaseOutside Disponibilidade Flash Player 6. Uso my_mc.onReleaseOutside = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o mouse é liberado enquanto o ponteiro está fora do clipe de filme, depois que o botão do mouse é pressionado dentro do clipe de filme. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onReleaseOutside que envia uma ação trace() ao painel Output. my_mc.onReleaseOutside = function () { trace ("onReleaseOutside chamado"); }; MovieClip.onReleaseOutside 585 MovieClip.onRollOut Disponibilidade Flash Player 6. Uso my_mc.onRollOut = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o ponteiro se move para fora da área do clipe de filme. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onRollOut que envia uma ação trace() ao painel Output. my_mc.onRollOut = function () { trace ("onRollOut chamado"); }; 586 Capítulo 12: Dicionário do ActionScript MovieClip.onRollOver Disponibilidade Flash Player 6. Uso my_mc.onRollOver = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando o ponteiro se move para cima da área do clipe de filme. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. Exemplo O exemplo a seguir define uma função para o método onRollOver que envia uma ação trace() ao painel Output. my_mc.onRollOver = function () { trace ("onRollOver chamado"); }; MovieClip.onRollOver 587 MovieClip.onSetFocus Disponibilidade Flash Player 6. Uso my_mc.onSetFocus = function(oldFocus){ // seus comandos vão aqui } Parâmetros oldFocus O objeto que perde o foco. Retorna Nada. Descrição Manipulador de eventos; chamado quando um clipe de filme recebe o foco do teclado. O parâmetro oldFocus é o objeto que perde o foco. Por exemplo, se o usuário pressionar a tecla Tab para mover o foco de entrada de um clipe de filme para um campo de texto, oldFocus conterá a instância do clipe de filme. Se nenhum objeto possuía o foco anteriormente, oldFocus conterá um valor null. MovieClip.onUnload Disponibilidade Flash Player 6. Uso my_mc.onUnload = function() { // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado no primeiro quadro depois que o clipe de filme é removido da Linha de tempo. O Flash processa as ações associadas ao manipulador de eventos onUnload antes de anexar qualquer ação ao quadro afetado. É necessário definir uma função que seja executada quando o manipulador de eventos for chamado. 588 Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir define uma função para o método MovieClip.onUnload que envia uma ação trace() ao painel Output (Saída). my_mc.onUnload = function () { trace ("onUnload chamado"); }; MovieClip._parent Disponibilidade Flash Player 5. Uso my_mc._parent.property _parent.property Descrição Propriedade; uma referência ao clipe de filme ou objeto que contém o clipe de filme ou objeto atual. O objeto atual é o que contém o código ActionScript que faz referência a _parent. Use a propriedade _parent para especificar um caminho relativo para clipes de filme ou objetos que estiverem acima do clipe de filme ou objeto atual. É possível usar _parent para subir vários níveis na lista de exibição, conforme mostrado a seguir: _parent._parent._alpha = 20; Consulte também Button._parent, _root, targetPath, TextField._parent MovieClip.play() Disponibilidade Flash Player 5. Uso my_mc.play() Parâmetros Nenhum. Retorna Nada. Descrição Método; move a reprodução na Linha de tempo do clipe de filme. Consulte também play() MovieClip.play() 589 MovieClip.prevFrame() Disponibilidade Flash Player 5. Uso my_mc.prevFrame() Parâmetros Nenhum. Retorna Nada. Descrição Método; envia a reprodução do quadro anterior e o pára. Consulte também prevFrame() MovieClip.removeMovieClip() Disponibilidade Flash Player 5. Uso my_mc.removeMovieClip() Parâmetros Nenhum. Retorna Nada. Descrição Método; remove uma instância de clipe de filme criada com duplicateMovieClip(), MovieClip.duplicateMovieClip(), ou MovieClip.attachMovie(). MovieClip._rotation Disponibilidade Flash Player 4. Uso my_mc._rotation Descrição Propriedade; especifica a rotação do clipe de filme em graus. 590 Capítulo 12: Dicionário do ActionScript MovieClip.setMask() Disponibilidade Flash Player 6. Uso my_mc.setMask(mask_mc) Parâmetros my_mc mask_mc O nome de instância de um clipe de filme a ser mascarado. O nome de instância de um clipe de filme que será uma máscara. Retorna Nada. Descrição Método; transforma o clipe de filme no parâmetro mask_mc em uma máscara que revela o clipe de filme especificado pelo parâmetro my_mc. Esse método permite que clipes de filme com vários quadros e conteúdo complexo em diversas camadas atuem como máscaras. É possível ativar e desativar máscaras em tempo de execução. Entretanto, você não pode usar a mesma máscara para vários itens com máscara (o que é possível através do uso de camadas de máscara). Se houver fontes de dispositivo em um clipe de filme mascarado, elas serão desenhadas, mas não mascaradas. Não é possível definir um clipe de filme de modo que ele seja sua própria máscara, por exemplo, my_mc.setMask(my_mc). Se você criar uma camada de máscara que contenha um clipe de filme e, em seguida, aplicar o método setMask() a ele, a chamada setMask() terá prioridade e não será possível reverter isso. Por exemplo, se houver um clipe de filme em uma camada de máscara chamada UIMask, esta mascara outra camada que contém outro clipe de filme chamado UIMaskee. Se, à medida que o SWF for reproduzido, você chamar UIMask.setMask(UIMaskee), UIMask será mascarado por UIMaskee desse ponto em diante. Para cancelar uma máscara criada com ActionScript, passe o valor null para o método setMask(). O código a seguir cancela a máscara sem afetar a camada da máscara na Linha de tempo. UIMask.setMask(null); Exemplo O código a seguir usa o clipe de filme circleMask_mc para mascarar o clipe de filme theMaskee_mc. theMaskee_mc.setMask(circleMask_mc); MovieClip.setMask() 591 MovieClip._soundbuftime Disponibilidade Flash Player 6. Uso my_mc._soundbuftime Descrição Propriedade (global); um inteiro que especifica o número de segundos em que um som é armazenado em pré-buffer antes de começar a fluir. MovieClip.startDrag() Disponibilidade Flash Player 5. Uso my_mc.startDrag([bloqueio, [esquerdo, superior, direito, inferior]]) Parâmetros bloqueio Um valor booleano que especifica se o clipe de filme a ser arrastado está bloqueado no centro da posição do mouse (true) ou no ponto onde o usuário clicou pela primeira vez no clipe de filme (false). Este parâmetro é opcional. esquerdo, superior, direito, inferior Valores relativos às coordenadas do pai do clipe de filme que especificam um retângulo de restrição para o clipe de filme. Esses parâmetros são opcionais. Retorna Nada. Descrição Método; permite que o usuário arraste o clipe de filme especificado. O clipe de filme permanecerá arrastável até que explicitamente esta característica seja cancelada por uma chamada a MovieClip.stopDrag() ou até que outro clipe de filme se torne arrastável. Somente um clipe de filme é arrastável de cada vez. Consulte também MovieClip._droptarget, startDrag(), MovieClip.stopDrag() 592 Capítulo 12: Dicionário do ActionScript MovieClip.stop() Disponibilidade Flash Player 5. Uso my_mc.stop() Parâmetros Nenhum. Retorna Nada. Descrição Método ; pára o clipe de filme em execução no momento. Consulte também stop() MovieClip.stopDrag() Disponibilidade Flash Player 5. Uso my_mc.stopDrag() Parâmetros Nenhum. Retorna Nada. Descrição Método; finaliza um método MovieClip.startDrag(). Um filme que adquire a característica de arrastável com esse método permanece assim até que o método stopDrag() seja adicionado ou até que outro filme se torne arrastável. Somente um clipe de filme é arrastável de cada vez. Consulte também MovieClip._droptarget, MovieClip.startDrag(), stopDrag() MovieClip.stopDrag() 593 MovieClip.swapDepths() Disponibilidade Flash Player 5. Uso my_mc.swapDepths(depth) my_mc.swapDepths(target) Parâmetros depth Um número que especifica o nível de profundidade no qual my_mc deve ser colocado. target Uma seqüência de caracteres que especifica a instância de clipe de filme cuja profundidade é trocada pela instância especificada por my_mc. As duas instâncias devem ter o mesmo clipe de filme pai. Retorna Nada. Descrição Método; troca a ordem de empilhamento ou ordem z (nível de profundidade) da instância especificada (my_mc) com o clipe de filme determinado pelo parâmetro target ou com o clipe de filme que ocupa atualmente o nível de profundidade indicado no parâmetro depth. Os dois clipes de filme devem ter o mesmo clipe de filme pai. Trocar o nível de profundidade de clipes de filme tem o efeito de mover um clipe de filme para frente ou para trás de outro. Se um clipe de filme estiver realizando uma interpolação quando esse método for chamado, a interpolação será encerrada. Para obter mais informações, consulte “Gerenciando profundidades do clipe de filme” na página 128. Consulte também _level, MovieClip.getDepth(), MovieClip.getInstanceAtDepth(), MovieClip.getNextHighestDepth() 594 Capítulo 12: Dicionário do ActionScript MovieClip.tabChildren Disponibilidade Flash Player 6. Uso my_mc.tabChildren Descrição Propriedade; indefinida por padrão. Se tabChildren for undefined ou true, os filhos de um clipe de filme serão incluídos na ordenação automática de guias. Se o valor de tabChildren for false, os filhos de um clipe de filme não serão incluídos na ordenação automática de guias. Exemplo Um dispositivo de IU de caixa de listagem criado como um clipe de filme contém vários itens. O usuário pode clicar em cada item para selecioná-lo, pois cada item é um botão. Todavia, somente a própria caixa de listagem deve ser considerada uma interrupção de tabulação. Os itens contidos na caixa de listagem devem ser excluídos da ordenação de guias. Para fazer isso, defina a propriedade tabChildren da caixa de listagem como false. A propriedade tabChildren não terá nenhum efeito se a propriedade tabIndex for utilizada. A propriedade tabChildren só afeta a ordenação automática de guias. Consulte também Button.tabIndex, MovieClip.tabEnabled, MovieClip.tabIndex, TextField.tabIndex MovieClip.tabEnabled Disponibilidade Flash Player 6. Uso my_mc.tabEnabled Descrição Propriedade; especifica se my_mc está incluído na ordenação automática de guias. A opção undefined é utilizada por padrão. Se tabEnabled for undefined ou true, o objeto será incluído na ordenação automática de guias. Se a propriedade tabIndex também estiver definida com um determinado valor, o objeto será incluído na ordenação personalizada de guias também. Se tabEnabled for false, o objeto não será incluído nem na ordenação de guias automática nem na personalizada, ainda que a propriedade tabIndex seja definida. Entretanto, se MovieClip.tabChildren for true, o filho do clipe de filme ainda poderá ser incluído na ordenação automática de guias, mesmo se tabEnabled for false. Consulte também Button.tabEnabled, MovieClip.tabChildren, MovieClip.tabIndex, TextField.tabEnabled MovieClip.tabEnabled 595 MovieClip.tabIndex Disponibilidade Flash Player 6. Uso my_mc.tabIndex Descrição Propriedade; permite personalizar a ordenação de guias dos objetos em um filme. A propriedade tabIndex permanece indefinida por padrão. Você pode definir tabIndex em um botão, clipe de filme ou instância de campo de texto. Se um objeto em um arquivo SWF tiver uma propriedade tabIndex, a ordenação automática de guias será desativada. Nesse caso, a ordenação é calculada com base nas propriedades tabIndex dos objetos no SWF. A ordenação personalizada de guias inclui apenas os objetos que têm propriedades tabIndex. A propriedade tabIndex deve ser um inteiro positivo. Os objetos são ordenados de acordo com suas propriedades tabIndex, em ordem ascendente. Um objeto cujo tabIndex tenha valor 1 precede um objeto com tabIndex com valor 2. A ordenação personalizada de guias ignora os relacionamentos hierárquicos dos objetos em um arquivo SWF. Todos os objetos contidos no SWF que tiverem propriedades tabIndex serão colocados na ordenação de guias. Você não deve usar o mesmo valor de tabIndex para vários objetos. Consulte também Button.tabIndex, TextField.tabIndex MovieClip._target Disponibilidade Flash Player 4. Uso my_mc._target Descrição Propriedade (somente de leitura); retorna o caminho de destino da instância de clipe de filme especificada por my_mc. MovieClip._totalframes Disponibilidade Flash Player 4. Uso my_mc._totalframes Descrição Propriedade (somente leitura); retorna o número total de quadros na instância de clipe de filme especificada no parâmetro MovieClip. 596 Capítulo 12: Dicionário do ActionScript MovieClip.trackAsMenu Disponibilidade Flash Player 6. Uso my_mc.trackAsMenu Descrição Propriedade; uma propriedade booleana que indica se outros botões ou clipes de filme podem ou não receber eventos de liberação de mouse. Permite a criação de menus. Você pode definir a propriedade trackAsMenu em qualquer botão ou objeto de clipe de filme. Se a propriedade trackAsMenu não existir, o comportamento padrão será false. Você pode alterar a propriedade trackAsMenu a qualquer momento; o clipe de filme de botão modificado adquire imediatamente o novo comportamento. Consulte também Button.trackAsMenu MovieClip.unloadMovie() Disponibilidade Flash Player 5. Uso my_mc.unloadMovie() Parâmetros Nenhum. Retorna Nada. Descrição Método; retorna o conteúdo de uma instância de clipe de filme. As propriedades de instância e os manipuladores de clipe permanecem. Para remover a instância, inclusive suas propriedades e seus manipuladores de clipe, use MovieClip.removeMovieClip(). Consulte também MovieClip.attachMovie(), MovieClip.loadMovie(), unloadMovie(), unloadMovieNum() MovieClip.unloadMovie() 597 MovieClip._url Disponibilidade Flash Player 4. Uso my_mc._url Descrição Propriedade (somente de leitura); recupera o URL do arquivo SWF do qual o clipe de filme foi descarregado. MovieClip.useHandCursor Disponibilidade Flash Player 6. Uso my_mc.useHandCursor Descrição Propriedade; um valor booleano que indica se o cursor em forma de mão (mão apontando) é exibido quando o mouse rola sobre um clipe de filme de botão. O valor padrão de useHandCursor é true. Se useHandCursor for definido como true, o cursor em forma de mão usado para botões será exibido quando o mouse rolar sobre um clipe de filme de botão. Se useHandCursor for false, o cursor em forma de seta será usado. Você pode alterar a propriedade useHandCursor a qualquer momento; o clipe de filme de botão modificado adquire imediatamente o comportamento do novo cursor. A propriedade useHandCursor pode ser lida de um objeto de protótipo. MovieClip._visible Disponibilidade Flash Player 4. Uso my_mc._visible Descrição Propriedade; um valor booleano que indica se o clipe de filme especificado por my_mc fica visível. Os clipes de filme que não são visíveis (propriedade _visible definida como false) são desativados. Por exemplo, não é possível clicar em um botão em um clipe de filme com a propriedade _visible definida como false. Consulte também Button._visible, TextField._visible 598 Capítulo 12: Dicionário do ActionScript MovieClip._width Disponibilidade Flash Player 4 como uma propriedade somente leitura. Uso my_mc._width Descrição Propriedade; a largura em pixels do clipe de filme. Exemplo O exemplo de código a seguir define a altura e a largura das propriedades de um clipe de filme quando o usuário clica com o mouse. onclipEvent(mouseDown) { _width=200; _height=200; } Consulte também MovieClip._height MovieClip._x Disponibilidade Flash Player 3. Uso my_mc._x Descrição Propriedade; um inteiro que define a coordenada x de um clipe de filme em relação às coordenadas locais do clipe de filme pai. Se um clipe de filme estiver na Linha de tempo principal, seu sistema de coordenadas refere-se ao canto superior esquerdo do Palco como (0, 0). Se o clipe de filme estiver dentro de outro clipe de filme que tem transformações, o clipe de filme está no sistema de coordenadas local do clipe de filme anexado. Assim, para um clipe de filme girado 90º no sentido anti-horário, os filhos do clipe de filme herdam um sistema de coordenadas que é girado 90º no mesmo sentido. As coordenadas do clipe de filme referem-se à posição do ponto de registro. Consulte também MovieClip._xscale, MovieClip._y, MovieClip._yscale MovieClip._x 599 MovieClip._xmouse Disponibilidade Flash Player 5. Uso my_mc._xmouse Descrição Propriedade (somente leitura); retorna a coordenada x da posição do mouse. Consulte também Classe Mouse, MovieClip._ymouse MovieClip._xscale Disponibilidade Flash Player 4. Uso my_mc._xscale Descrição Propriedade; determina o dimensionamento horizontal (porcentagem) do clipe de filme como aplicado do ponto do registro do clipe de filme. O ponto de registro padrão é (0,0). Dimensionar o sistema de coordenadas local afeta as configurações da propriedade _x e _y, que são definidas em pixels. Por exemplo, se o clipe de filme pai é dimensionado em 50%, a definição da propriedade _x move um objeto no clipe de filme pela metade do número de pixels, como se o filme tivesse sido definido em 100%. Consulte também MovieClip._x, MovieClip._y, MovieClip._yscale 600 Capítulo 12: Dicionário do ActionScript MovieClip._y Disponibilidade Flash Player 3. Uso my_mc._y Descrição Propriedade; define a coordenada y de um clipe de filme relativa às coordenadas locais do clipe de filme pai. Se um clipe de filme estiver na Linha de tempo principal, seu sistema de coordenadas refere-se ao canto superior esquerdo do Palco como (0, 0). Se o clipe de filme estiver dentro de outro clipe de filme que tem transformações, o clipe de filme está no sistema de coordenadas local do clipe de filme anexado. Assim, para um clipe de filme girado 90º no sentido anti-horário, os filhos do clipe de filme herdam um sistema de coordenadas que é girado 90º no mesmo sentido. As coordenadas do clipe de filme referem-se à posição do ponto de registro. Consulte também MovieClip._x, MovieClip._xscale, MovieClip._yscale MovieClip._ymouse Disponibilidade Flash Player 5. Uso my_mc._ymouse Descrição Propriedade (somente leitura); indica a coordenada y da posição do mouse. Consulte também Classe Mouse, MovieClip._xmouse MovieClip._ymouse 601 MovieClip._yscale Disponibilidade Flash Player 4. Uso my_mc._yscale Descrição Propriedade; define a escala vertical (porcentagem) do clipe de filme conforme aplicado do ponto de registro do clipe de filme. O ponto de registro padrão é (0,0). Dimensionar o sistema de coordenadas local afeta as configurações da propriedade _x e _y, que são definidas em pixels. Por exemplo, se o clipe de filme pai é dimensionado em 50%, definir a propriedade _x move um objeto no clipe de filme pela metade do número de pixels, como se o filme tivesse sido dimensionado em 100%. Consulte também MovieClip._x, MovieClip._xscale, MovieClip._y Classe MovieClipLoader Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Resumo dos métodos da classe MovieClipLoader Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Resumo de ouvintes da classe MovieClipLoader Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Construtor da classe MovieClipLoader Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. 602 Capítulo 12: Dicionário do ActionScript MovieClipLoader.addListener() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.getProgress() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.loadClip() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.onLoadComplete() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.onLoadError() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.onLoadInit() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.onLoadInit() 603 MovieClipLoader.onLoadProgress() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.onLoadStart() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.removeListener() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. MovieClipLoader.unloadClip() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. NaN Disponibilidade Flash Player 5. Uso NaN Descrição Variável; uma variável predefinida com o valor IEEE 754 para NaN (Não Número). Para determinar se um número é NaN, use isNaN(). Consulte também isNaN(), Number.NaN 604 Capítulo 12: Dicionário do ActionScript ne (diferente — específico de seqüência de caracteres) Disponibilidade Flash Player 4. Esse operador foi substituído pelo operador != (diferença). Uso expression1 ne expression2 Parâmetros expression1,expression2 Números, seqüências de caracteres ou variáveis. Retorna Um valor booleano. Descrição Operador (comparação); compara a expression1 com a expression2 e retorna true se a expression1 não for igual à expression2; caso contrário, retorna false. Consulte também != (diferença) ne (diferente — específico de seqüência de caracteres) 605 Classe NetConnection Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. Descrição A classe NetConnection fornece os meios para reproduzir arquivos FLV de fluxo a partir de uma unidade local ou de um endereço HTTP. Resumo dos métodos da classe NetConnection Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Resumo de eventos da classe NetConnection Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Construtor da classe NetConnection Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetConnection.connect() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. 606 Capítulo 12: Dicionário do ActionScript NetConnection.onStatus Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. Classe NetStream Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. Descrição A classe NetStream fornece métodos e propriedades para reproduzir arquivos Flash Video (FLV) no sistema de arquivos local ou em um endereço HTTP. Resumo dos métodos da classe NetStream Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Resumo das propriedades da classe NetStream Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Resumo de manipuladores de eventos da classe NetStream Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Construtor da classe NetStream Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. Classe NetStream 607 NetStream.bufferLength Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa classe também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.bufferTime Disponibilidade Flash Player 7. Observação: Essa propriedade também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.bytesLoaded Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. NetStream.bytesTotal Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. NetStream.close() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Esse método também é suportado pelo Flash Player 6 quando usado com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. 608 Capítulo 12: Dicionário do ActionScript NetStream.currentFps Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa propriedade também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.onStatus Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Esse manipulador também é suportado pelo Flash Player 6 quando usado com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.pause() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Esse método também é suportado pelo Flash Player 6 quando usado com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.play() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Esse método também é suportado pelo Flash Player 6 quando usado com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.play() 609 NetStream.seek() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Esse método também é suportado pelo Flash Player 6 quando usado com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.setBufferTime() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Esse método também é suportado pelo Flash Player 6 quando usado com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. NetStream.time Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 7. Observação: Essa propriedade também é suportada pelo Flash Player 6 quando usada com o Flash Communication Server. Para obter mais informações, consulte a documentação do Flash Communication Server. 610 Capítulo 12: Dicionário do ActionScript new Disponibilidade Flash Player 5. Uso novo construtor() Parâmetros construtor Uma função seguida por parâmetros opcionais em parênteses. Normalmente, a função é o nome do tipo de objeto (por exemplo, Array, Number ou Object) a ser criado. Retorna Nada. Descrição Operador; cria um novo objeto, inicialmente anônimo, e chama a função identificada pelo parâmetro construtor. O novo operador passa à função quaisquer parâmetros opcionais em parênteses, bem como o objeto recém-criado, que é referenciado com a palavra-chave this. Em seguida, a função construtora pode usar this para definir as variáveis do objeto. Exemplo O exemplo a seguir cria a função Book() e, em seguida, usa o operador new para criar os objetos book1 e book2. function Book(nome, preço){ this.name = nome; this.price = preco; } book1 = new Book("Confederacy of Dunces", 19.95); book2 = new Book("The Floating Opera", 10.95); Exemplo O exemplo a seguir usa o operador new para criar um objeto Array com 18 elementos: golfCourse_array = new Array(18); Consulte também [] (acesso de array), {} (inicializador de objeto) new 611 newline Disponibilidade Flash Player 4. Uso newline Parâmetros Nenhum. Retorna Nada. Descrição Constante; insere um caractere de retorno de carro (\n) que gera uma linha em branco na saída de texto criada por seu código. Use newline para aumentar o espaço para informações recuperadas por uma função ou ação em seu código. Exemplo O exemplo a seguir mostra como newline exibe a saída da ação trace() em várias linhas. var myName:String = "Lisa", myAge:Number = 30; trace(myName + myAge); trace(myName + newline + myAge); nextFrame() Disponibilidade Flash 2. Uso nextFrame() Parâmetros Nenhum. Retorna Nada. Descrição Função; envia a reprodução para o próximo quadro e a interrompe. Exemplo Neste exemplo, quando o usuário clica no botão, a reprodução passa para o próximo quadro e é encerrada. on (release) { nextFrame(); } 612 Capítulo 12: Dicionário do ActionScript nextScene() Disponibilidade Flash 2. Uso nextScene() Parâmetros Nenhum. Retorna Nada. Descrição Ação; envia a reprodução para o Quadro 1 da próxima cena e a interrompe. Exemplo Neste exemplo, quando o usuário libera o botão, a reprodução é enviada para o Quadro1 da próxima cena. on (release) { nextScene(); } Consulte também prevScene() not Disponibilidade Flash Player 4. Esse operador foi substituído pelo operador ! (NOT lógico). Uso not expressão Parâmetros expressão Uma variável ou outra expressão que seja convertida em um valor booleano. Descrição Operador; executa uma operação NOT lógica no Flash Player 4. Consulte também ! (NOT lógico) not 613 null Disponibilidade Flash Player 5. Uso null Parâmetros Nenhum. Retorna Nada. Descrição Constante; um valor especial que pode ser atribuído a variáveis ou retornado por uma função caso nenhum dado seja fornecido. Você pode usar null para representar os valores ausentes ou que não têm um tipo de dados definido. Exemplo Em contexto numérico, null é avaliado como 0. Testes de igualdade podem ser realizados com null. Neste comando, um nó de árvore binário não tem filho à esquerda; por isso, o campo do filho à esquerda pode ser definido como null. if (tree.left == null) { tree.left = new TreeNode(); } Classe Number Disponibilidade Flash Player 5 (tornou-se um objeto nativo no Flash Player 6, o que melhorou significativamente o desempenho). Descrição A classe Number é um objeto envoltório simples para o tipo de dados número. É possível manipular valores numéricos primitivos, usando métodos e propriedades associados à classe Number. Essa classe é idêntica à classe Number de JavaScript. É necessário usar um construtor para chamar os métodos de um objeto Number, mas não é preciso utilizá-lo durante a chamada às propriedades deste objeto. Os exemplos a seguir especificam a sintaxe para chamar métodos e propriedades do objeto Number. O exemplo a seguir chama o método toString() do objeto Number, que retorna a seqüência de caracteres “1234”. myNumber = new Number (1234); myNumber.toString(); Este exemplo chama a propriedade MIN_VALUE (também denominada constante) do objeto Number: smallest = Number.MIN_VALUE 614 Capítulo 12: Dicionário do ActionScript Resumo dos métodos da classe Number Método Descrição Number.toString() Retorna a representação da seqüência de caracteres do objeto Number. Number.valueOf() Retorna o valor primitivo do objeto Number. Resumo das propriedades da classe Number Propriedade Descrição Number.MAX_VALUE Constante que representa o maior número representável (IEEE 754 de dupla precisão). Esse número é aproximadamente 1,79E+308. Number.MIN_VALUE Constante que representa o menor número representável (IEEE 754 de dupla precisão). Esse número é aproximadamente 5e-324. Number.NaN Constante que representa o valor Não Número (NaN). Number.NEGATIVE_INFINITY Constante que representa o valor do infinito negativo. Number.POSITIVE_INFINITY Constante que representa o valor do infinito positivo. Este valor é o mesmo que a variável global Infinity. Construtor da classe Number Disponibilidade Flash Player 5. Uso new Number(valor) Parâmetros O valor numérico do objeto Number que está sendo criado ou um valor a ser convertido em número. valor Retorna Nada. Descrição Construtor; cria um novo objeto Number. Você deverá usar o construtor Number ao usar Number.toString() e Number.valueOf(). Não use um construtor quando estiver usando as propriedades do objeto Number. O construtor new Number é usado, basicamente, como um espaço reservado. Um objeto Number não é o mesmo que na função Number(), a qual converte um parâmetro em um valor primitivo. Exemplo O código a seguir cria objetos new Number. n1 = new Number(3.4); n2 = new Number(-10); Consulte também Number() Classe Number 615 Number.MAX_VALUE Disponibilidade Flash Player 5. Uso Number.MAX_VALUE Descrição Propriedade; o maior número representável (IEEE 754 de dupla precisão). Esse número é aproximadamente 1,79E+308. Number.MIN_VALUE Disponibilidade Flash Player 5. Uso Number.MIN_VALUE Descrição Propriedade; o menor número representável (IEEE 754 de dupla precisão). Esse número é aproximadamente 5e-324. Number.NaN Disponibilidade Flash Player 5. Uso Number.NaN Descrição Propriedade; o valor IEEE-754 que representa Não Número (NaN). Consulte também isNaN(), NaN 616 Capítulo 12: Dicionário do ActionScript Number.NEGATIVE_INFINITY Disponibilidade Flash Player 5. Uso Number.NEGATIVE_INFINITY Descrição Propriedade; especifica o valor IEEE 754 que representa o infinito negativo. O valor dessa propriedade é o mesmo valor da constante -Infinity. O infinito negativo é um valor numérico especial que é retornado quando uma operação ou função matemática retorna um valor negativo maior do que pode ser representado. Number.POSITIVE_INFINITY Disponibilidade Flash Player 5. Uso Number.POSITIVE_INFINITY Descrição Propriedade; especifica o valor IEEE 754 que representa o infinito positivo. O valor dessa propriedade é o mesmo valor da constante Infinity. O infinito positivo é um valor numérico especial retornado quando uma operação ou função matemática retorna um valor maior do que pode ser representado. Number.POSITIVE_INFINITY 617 Number.toString() Disponibilidade Flash Player 5. Uso myNumber.toString(raiz) Parâmetros Especifica a base numérica (de 2 a 36) a ser usada para a conversão de número em seqüência de caracteres. Se você não especificar o parâmetro raiz, o valor padrão será 10. raiz Retorna Uma seqüência de caracteres. Descrição Método; retorna a representação da seqüência de caracteres do objeto Number especificado (myNumber). Exemplo O exemplo a seguir usa 2 para o parâmetro raiz e retorna uma seqüência de caracteres que contém a representação binária do número 1000. myNumber = new Number (1000); myNumber.toString(2); // 1111101000 Number.valueOf() Disponibilidade Flash Player 5. Uso myNumber.valueOf() Parâmetros Nenhum. Retorna Um número. Descrição Método; retorna o tipo de valor primitivo do objeto Number especificado. 618 Capítulo 12: Dicionário do ActionScript Number() Disponibilidade Flash Player 4. Uso Number(expressão) Parâmetros expressão Uma expressão a ser convertida em um número. Retorna Nada. Descrição Função; converte o parâmetro expressão em um número e retorna um valor como a seguir: Se expressão for um número, o valor de retorno será expressão. Se a expressão for um valor booleano, o valor de retorno será 1 caso a expressão seja true ou 0 caso a expressão seja false. Se expressão for uma seqüência de caracteres, a função tenta analisar expressão como um número decimal com um exponente inicial opcional, isto é, 1,57505e-3. Se expressão for indefinida, o valor de retorno será 0. Essa função é usada para converter os arquivos do Flash 4 com operadores obsoletos que são importados no ambiente de criação do Flash 5 ou posterior. Para obter mais informações, consulte & (operador AND bit a bit). Consulte também Classe Number Classe Object Disponibilidade Flash Player 5 (tornou-se um objeto nativo no Flash Player 6, o que melhorou significativamente o desempenho). Descrição A classe Object está na raiz da hierarquia de classes do ActionScript. Essa classe contém um pequeno subconjunto de recursos fornecido pela classe Object do JavaScript. Classe Object 619 Resumo dos métodos da classe Object Método Descrição Object.addProperty() Cria uma propriedade de apanhador/definidor em um objeto. Object.registerClass() Associa um símbolo de clipe de filme a uma classe de objeto do ActionScript. Object.toString() Converte o objeto especificado em uma seqüência de caracteres e o retorna. Object.unwatch() Remove o ponto de controle criado por Object.watch(). Object.valueOf() Retorna o valor primitivo do objeto Object Object.watch() Registra uma função de chamada a ser ativada quando uma determinada propriedade de um objeto do ActionScript é alterada. Resumo das propriedades da classe Object Propriedade Descrição Object.__proto__ Uma referência à propriedade prototype da função construtora do objeto. Construtor da classe Object Disponibilidade Flash Player 5. Uso new Object(valor) Parâmetros valor Um número, valor booleano ou seqüência de caracteres a ser convertido em um objeto. Este parâmetro é opcional. Se você não especificar valor, o construtor criará um novo objeto sem propriedades definidas. Retorna Nada. Descrição Construtor; cria um novo objeto Object. 620 Capítulo 12: Dicionário do ActionScript Object.addProperty() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso myObject.addProperty(prop, getFunc, setFunc) Parâmetros prop O nome da propriedade de objeto a ser criada. getFunc A função chamada para recuperar o valor da propriedade; este parâmetro é um objeto de função. setFunc A função chamada para definir o valor da propriedade; este parâmetro é um objeto de função. Se você passar o valor null para este parâmetro, a propriedade será do tipo somente leitura. Retorna Retorna um valor de true se a propriedade for criada com êxito; caso contrário, retorna false. Descrição Método; cria uma propriedade getter/setter (que se pode ler e escrever). Quando o Flash lê uma propriedade de apanhador/definidor, chama a função get e o valor de retorno da função torna-se um valor de prop. Quando o Flash grava uma propriedade de apanhador/definidor, chama a função set e passa a ela o novo valor como um parâmetro. Se já houver uma propriedade com o mesmo nome, a nova propriedade a substituirá. A função "get" não possui nenhum parâmetro. Seu valor de retorno pode ser de qualquer tipo. Seu tipo pode ser alterado entre as chamadas. O valor de retorno é tratado como o valor atual da propriedade. A função "set" utiliza um único parâmetro, que é o novo valor da propriedade. Por exemplo, se a propriedade x for atribuída pelo comando x = 1, a função set será passada para o parâmetro 1 do tipo number. O valor de retorno da função set será ignorado. É possível adicionar propriedades de apanhador/definidor aos objetos de protótipo. Se você adicionar uma propriedade de apanhador/definidor a um objeto de protótipo, todas as instâncias de objeto que herdam o objeto de protótipo também herdam esta propriedade. Isso torna possível adicionar uma propriedade de apanhador/definidor em um local, o objeto de protótipo, e fazer com que ela seja propagada para todas as instâncias de uma classe (muito semelhante à adição de métodos a objetos de protótipo). Se uma função get/set for chamada para uma propriedade de apanhador/definidor em um objeto de protótipo herdado, a referência passada à função get/set será o objeto referenciado originalmente, e não o objeto de protótipo. Object.addProperty() 621 Se chamado incorretamente, Object.addProperty() poderá apresentar erro. A tabela a seguir descreve os erros que podem ocorrer: Condição de erro O que acontece prop não é um nome de propriedade válido; por Retorna false e a propriedade não é adicionada. exemplo, uma seqüência de caracteres vazia. getFunc não é um objeto de função válido. Retorna false e a propriedade não é adicionada. setFunc não é um objeto de função válido. Retorna false e a propriedade não é adicionada. Exemplo Uso 1: Um objeto tem dois métodos internos, setQuantity() e getQuantity(). Uma propriedade, bookcount, pode ser usada para chamar esses métodos quando é definida ou recuperada. Um terceiro método interno, getTitle(), retorna um valor somente leitura que está associado à propriedade bookname: function Book() { this.setQuantity = function(numBooks) { this.books = numBooks; } this.getQuantity = function() { return this.books; } this.getTitle = function() { return "Catcher in the Rye"; } this.addProperty("bookcount", this.getQuantity, this.setQuantity); this.addProperty("bookname", this.getTitle, null); } myBook = new Book(); myBook.bookcount = 5; order = "Você encomendou " + myBook.bookcount + " cópias de myBook.bookname; " + Quando um script recupera o valor de myBook.bookcount, o interpretador do ActionScript automaticamente chama myBook.getQuantity(). Quando um script modifica o valor de myBook.bookcount, o interpretador chama myObject.setQuantity(). A propriedade bookname não especifica uma função set, portanto, as tentativas feitas para modificar bookname são ignoradas. Uso 2: O exemplo acima de bookcount e bookname funciona, mas as propriedades bookcount e bookname são adicionadas a cada instância do objeto Book. Isso significa que o custo para estabelecer as propriedades é de dois slots de propriedades para cada instância do objeto. Se houver muitas propriedades como bookcount e bookname em uma classe, elas possivelmente irão consumir uma grande quantidade de memória. Uma alternativa é adicionar as propriedades a Book.prototype: 622 Capítulo 12: Dicionário do ActionScript function Book () {} Book.prototype.setQuantity = function(numBooks) { this.books = numBooks; } Book.prototype.getQuantity = function() { return this.books; } Book.prototype.getTitle = function() { return "Catcher in the Rye"; } Book.prototype.addProperty("bookcount", Book.prototype.getQuantity, Book.prototype.setQuantity); Book.prototype.addProperty("bookname", Book.prototype.getTitle, null); myBook = new Book(); myBook.bookcount = 5; order = "Você encomendou "+myBook.bookcount+" cópias de "+myBook.bookname; Agora as propriedades bookcount e bookname existem somente em um único local: no objeto Book.prototype. O efeito, porém, é o mesmo efeito do código no Uso 1, o qual adicionou bookcount e bookname diretamente a cada instância. Se bookcount ou bookname for acessada em uma instância de Book, a cadeia de protótipos será percorrida para cima e a propriedade getter/ setter em Book.prototype será encontrada. Uso 3: As propriedades internas TextField.scroll e TextField.maxscroll são propriedades getter/setter. O objeto TextField possui os métodos internos getScroll(), setScroll() e getMaxScroll(). O construtor TextField cria as propriedades de apanhador/definidor e as aponta para os métodos get/set internos, como mostrado a seguir: this.addProperty("scroll", this.getScroll, this.setScroll); this.addProperty("maxscroll", this.getMaxScroll, null); Quando um script recupera o valor de myTextField.scroll, o interpretador do ActionScript automaticamente chama myTextField.getScroll(). Quando um script modifica o valor de myTextField.scroll, o interpretador chama myTextField.setScroll(). A propriedade maxscroll não especifica uma função set, portanto, as tentativas feitas para modificar maxscroll são ignoradas. Uso 4: Embora as propriedades internas TextField.scroll e TextField.maxscroll funcionem no exemplo de Uso 3, as propriedades scroll e maxscroll são adicionadas a cada instância do objeto TextField. Isso significa que o custo para estabelecer as propriedades é de dois slots de propriedades para cada instância do objeto. Se houver muitas propriedades como scroll e maxscroll em uma classe, é possível que elas consumam uma grande quantidade de memória. Nesse caso, você pode adicionar as propriedades scroll e maxscroll a TextField.prototype: TextField.prototype.addProperty("scroll", this.getScroll, this.setScroll); TextField.prototype.addProperty("maxscroll", this.getMaxScroll, null); Agora as propriedades scroll e maxscroll existem somente em um único local: no objeto TextField.prototype. Entretanto, o efeito é o mesmo do código anterior que adicionou scroll e maxscroll diretamente a todas as instâncias. Se scroll ou maxscroll for acessada em uma instância de TextField, a cadeia de protótipos será percorrida para cima e a propriedade de apanhador/definidor de TextField.prototype será encontrada. Object.addProperty() 623 Object.__proto__ Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 5. Uso myObject.__proto__ Parâmetros Nenhum. Descrição Propriedade; refere-se à propriedade prototype da função construtora que criou myObject. A propriedade __proto__ é atribuída automaticamente a todos os objetos durante sua criação. O interpretador do ActionScript usa a propriedade __proto__ para acessar a propriedade prototype da função construtora do objeto e, assim, descobrir quais propriedades e métodos o objeto herda de sua classe. 624 Capítulo 12: Dicionário do ActionScript Object.registerClass() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Object.registerClass(symbolID, theClass) Parâmetros O identificador de vinculação do símbolo de clipe de filme ou o identificador de seqüência de caracteres da classe do ActionScript. symbolID Uma referência à função construtora da classe do ActionScript ou null para cancelar o registro do símbolo. theClass Retorna Se o registro da classe for bem-sucedido, será retornado um valor de true; caso contrário, false será retornado. Descrição Método; associa um símbolo de clipe de filme a uma classe de objeto do ActionScript. Se não houver um símbolo, o Flash criará uma associação entre um identificador de seqüência de caracteres e uma classe de objeto. Quando uma instância do símbolo de clipe de filme especificado for colocada pela Linha de tempo, ela será registrada na classe indicada pelo parâmetro theClass e não na classe MovieClip. Quando uma instância do símbolo de clipe de filme especificado é criada por meio de isso é registrado para a MovieClip.attachMovie() ou MovieClip.duplicateMovieClip(), classe especificada por theClass e não pela classe MovieClip. Se theClass for null, esse método removerá qualquer definição de classe de ActionScript associada ao símbolo de clipe de filme ou identificador de classe especificado. No caso de símbolos de clipe de filme, qualquer instância existente do clipe de filme permanecerá inalterada, mas as novas instâncias do símbolo serão associadas à classe MovieClip padrão. Se um símbolo já estiver registrado para a classe, esse método irá substituí-lo por um novo registro. Quando uma instância de clipe de filme é colocada pela Timeline ou criada com attachMovie() ou duplicateMovieClip(), ActionScript chama o construtor da classe apropriada com a palavrachave this apontando para o objeto. A função construtora é chamada sem nenhum parâmetro. Ao usar este método para registrar um clipe de filme com uma classe ActionScript diferente de MovieClip, o símbolo do clipe de filme não herdará os métodos, propriedades e eventos da classe interna MovieClip, a menos que a classe MovieClip seja incluída na cadeia de protótipos da nova classe. O código a seguir cria uma nova classe ActionScript denominada theClass que herda as propriedades da classe MovieClip: theClass.prototype = new MovieClip(); Consulte também MovieClip.attachMovie(), MovieClip.duplicateMovieClip() Object.registerClass() 625 Object.toString() Disponibilidade Flash Player 5. Uso myObject.toString() Parâmetros Nenhum. Retorna Uma seqüência de caracteres. Descrição Método; converte o objeto especificado em uma seqüência de caracteres e o retorna. Object.unwatch() Disponibilidade Flash Player 6. Uso myObject.unwatch (prop) Parâmetros O nome da propriedade de objeto que não deverá mais ser observada, como uma seqüência de caracteres. prop Retorna Um valor booleano. Descrição Método; remove um ponto de controle criado por Object.watch(). Este método retornará um valor de true se o ponto de controle tiver sido removido com êxito; caso contrário, retornará false. 626 Capítulo 12: Dicionário do ActionScript Object.valueOf() Disponibilidade Flash Player 5. Uso myObject.valueOf() Parâmetros Nenhum. Retorna O valor primitivo do objeto especificado, ou seja, o próprio objeto. Descrição Método; retorna o valor primitivo do objeto especificado. Se o objeto não tiver um valor primitivo, o objeto é retornado. Object.watch() Disponibilidade Flash Player 6. Uso myObject.watch( prop, callback [, userData] ) Parâmetros prop Uma seqüência de caracteres que indica o nome da propriedade do objeto a ser observada. A função a ser chamada quando a propriedade observada é alterada. Este parâmetro é um objeto de função e não um nome de função como uma seqüência de caracteres. O formato de callback é callback(prop, oldval, newval, userData). callback Uma parte arbitrária dos dados de ActionScript passada ao método callback. Se o parâmetro userData for omitido, undefined será passado ao método callback. Este parâmetro é opcional. userData Retorna Um valor de true se o ponto de controle tiver sido criado com êxito, caso contrário, retorna um valor false. Descrição Método; registra uma função de retorno de chamada a ser ativada quando uma determinada propriedade de um objeto do ActionScript é alterada. Quando a propriedade é alterada, a função de retorno de chamada é ativada com myObject como o objeto recipiente. É preciso retornar o novo valor a partir do método Object.watch() ou, à propriedade do objeto observado, será atribuído um valor undefined. Object.watch() 627 Um ponto de controle pode filtrar (ou anular) a atribuição de valor retornando um newval modificado (ou oldval). Se você excluir uma propriedade para a qual tenha sido definido um ponto de controle, este ponto não desaparecerá. Se, posteriormente, você recriar a propriedade, o ponto de controle ainda estará valendo. Para remover o ponto de controle, use o método Object.unwatch. Apenas um único ponto de controle pode ser registrado em uma propriedade. As chamadas subseqüentes a Object.watch() na mesma propriedade substituem o ponto de controle original. O método Object.watch() apresenta um comportamento semelhante à função Object.watch() no Netscape JavaScript 1.2 ou posterior. A diferença principal é o parâmetro userData, que é uma adição do Flash ao Object.watch() não suportado pelo Netscape Navigator. Você pode passar o parâmetro userData à função de retorno de chamada e usá-lo nesta função. O método Object.watch() não pode observar propriedades getter/setter. As propriedades de apanhador/definidor funcionam através de “avaliação preguiçosa”— o valor da propriedade não é determinado até que ela seja realmente consultada. Com freqüência, a “avaliação preguiçosa” é eficiente porque a propriedade não é atualizada constantemente; assim, ela é avaliada quando necessário. Entretanto, Object.watch() precisa avaliar uma propriedade para então acionar pontos de controle sobre ela. Para funcionar com uma propriedade getter/setter, o Object.watch() precisa avaliá-la constantemente, o que é um processo ineficaz. Geralmente, as propriedades predefinidas de ActionScript, como _x, _y, _width e _height, são propriedades getter/setter e, portanto, não podem ser observadas com Object.watch(). Exemplo Este exemplo mostra um componente CheckBox com métodos que definem o identificador ou valor de cada instância de caixa de seleção: myCheckBox1.setValue(true); myCheckBox1.setLabel("novo identificador"); ... É adequado considerar o valor e o identificador de uma caixa de seleção como propriedades. É possível utilizar Object.watch() para fazer com que o acesso ao valor e ao rótulo se pareça com o acesso à propriedade e não com uma chamada de método, conforme mostrado a seguir: // Definir o construtor para (e, portanto, definir) a classe CheckBox function CheckBox() { ... this.watch('value', function (id, oldval, newval){ ... }); this.watch('label', function(id, oldval, newval){ ... }); } 628 Capítulo 12: Dicionário do ActionScript Quando a propriedade do valor ou rótulo é modificada, a função especificada pelo componente é chamada para realizar as tarefas necessárias à atualização da aparência e do estado do componente. O exemplo a seguir chama um método Object.watch() para notificar o componente de que a variável foi modificada, fazendo com que o componente atualize sua representação gráfica. myCheckBox1.value = false; Esta sintaxe é mais concisa do que a anterior: myCheckBox1.setValue(false); Consulte também Object.addProperty(), Object.unwatch() Object() Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 5. Uso Object(expressão) Parâmetros expressão Uma expressão para converter em um objeto. Retorna Um objeto. Descrição Função; converte o parâmetro expressão em um objeto. Consulte também Classe Object Object() 629 on() Disponibilidade Flash 2. Nem todos os eventos são suportados pelo Flash 2. Uso on(mouseEvent) { // seus comandos vão aqui } Parâmetros comando(s) Os comandos a serem executados quando o evento mouseEvent ocorre. Um mouseEvent é um disparador chamado "evento". Quando o evento ocorre, são executados os comandos posteriores a ele entre chaves. Qualquer um dos valores a seguir pode ser especificado pelo parâmetro movieEvent: • • • • • • • • O botão do mouse é pressionado enquanto o ponteiro está sobre o botão. release O botão do mouse é liberado enquanto o ponteiro está sobre o botão. releaseOutside O botão do mouse é liberado enquanto o ponteiro está fora do botão, depois que o botão foi pressionado enquanto o ponteiro estava dentro do botão. rollOut O ponteiro rola fora da área do botão. rollOver O ponteiro do mouse rola sobre o botão. dragOut Enquanto o ponteiro está sobre o botão, o botão do mouse é pressionado e rolado para fora da área do botão. dragOver Com o ponteiro sobre o botão, o botão do mouse é pressionado, rolado para fora do botão e, a seguir, rolado de volta sobre o botão. keyPress (“tecla”) A tecla especificada é pressionada. Para a parte do parâmetro que se refere à tecla, especifique um código ou uma constante de tecla. Para obter uma lista dos códigos de teclas associados às teclas de um teclado padrão, consulte Apêndice C, “Teclas do teclado e valores de códigos de teclas”, na página 859; para obter uma lista de constantes de teclas, consulte “Resumo de propriedades da classe Key” na página 450. press Descrição Manipulador de eventos; especifica o evento do mouse ou o pressionamento de tecla que dispara uma ação. Exemplo No script a seguir, a ação startDrag() é executada quando o mouse é pressionado; o script condicional é executado quando o mouse é liberado e o objeto é solto. on(press){ startDrag("rabbit"); } on (release) { trace(_root.rabbit._y); trace(_root.rabbit._x); stopDrag(); } Consulte também onClipEvent() 630 Capítulo 12: Dicionário do ActionScript onClipEvent() Disponibilidade Flash Player 5. Uso onClipEvent(movieEvent){ // seus comandos vão aqui } Parâmetros é um dispositivo de ativação chamado evento. Quando o evento ocorre, são executados os comandos posteriores a ele entre chaves. Qualquer um dos valores a seguir pode ser especificado pelo parâmetro movieEvent: movieEvent • • • • • • • • • A ação é iniciada assim que o clipe de filme é criado e aparece na Linha de tempo. unload A ação é iniciada no primeiro quadro depois do clipe de filme ser removido da Linha de tempo. As ações associadas ao evento do clipe de filme Unload são processadas antes que as ações sejam anexadas ao quadro atingido. enterFrame A ação é ativada continuamente à taxa de quadros do clipe de filme. As ações associadas ao evento de clipe enterFrame são processadas antes de qualquer ação de quadro que tenha sido anexada aos quadros afetados. mouseMove A ação é iniciada toda vez que o mouse é movido. Use as propriedades _xmouse e _ymouse para determinar a posição do mouse atual. mouseDown A ação é iniciada quando o botão esquerdo do mouse é pressionado. mouseUp A ação é iniciada quando o botão esquerdo do mouse é liberado. keyDown A ação é iniciada quando uma tecla é pressionada. Use Key.getCode() para recuperar informações sobre a última tecla pressionada. keyUp A ação é iniciada quando uma tecla é liberada. Use o método Key.getCode() para recuperar informações sobre a última tecla pressionada. data A ação é iniciada quando os dados são recebidos em uma ação loadVariables() ou loadMovie(). Se especificado com uma ação loadVariables(), o evento data ocorrerá somente uma vez, quando a última variável for carregada. Quando especificado com uma ação loadMovie, o evento data ocorre repetidamente, à medida que cada seção de dados é recuperada. load Descrição Manipulador de eventos; dispara ações definidas por uma instância específica de um clipe de filme. Exemplo O comando a seguir inclui o script de um arquivo externo quando o arquivo SWF é exportado; as ações no script incluído são executadas quando o clipe de filme ao qual elas estão anexadas é carregado: onClipEvent(load){ #include "myScript.as" } onClipEvent() 631 O exemplo a seguir usa onClipEvent() com o evento de filme keyDown. Normalmente, o evento de filme keyDown é usado juntamente com um ou mais métodos e propriedades do objeto Key. O script a seguir usa Key.getCode() para descobrir qual tecla foi pressionada pelo usuário. Se a tecla pressionada corresponder à propriedade Key.RIGHT, o filme será enviado ao quadro seguinte; se corresponder à propriedade Key.LEFT, o filme será enviado ao quadro anterior. onClipEvent(load) { if (Key.getCode() == Key.RIGHT) { _parent.nextFrame(); } else if (Key.getCode() == Key.LEFT){ _parent.prevFrame(); } } O exemplo a seguir usa onClipEvent() com o evento de filme mouseMove. As propriedades _xmouse e _ymouse controlam a posição do mouse sempre que ele é movido. onClipEvent(mouseMove) { stageX=_root._xmouse; stageY=_root._ymouse; } Consulte também Classe key, MovieClip._xmouse, MovieClip._ymouse, on(), updateAfterEvent() 632 Capítulo 12: Dicionário do ActionScript onUpdate Disponibilidade Flash Player 6. Uso function onUpdate() { ...comandos...; } Parâmetros Nenhum. Retorna Nada. Descrição Função de retorno de chamada; onUpdate é definido para um filme Live Preview (Visualização ao vivo) usado com um componente. Quando uma instância de componente no Stage (Palco) tem um filme Live Preview, a ferramenta de criação chamará a função onUpdate do filme Live Preview sempre que houver modificações nos parâmetros de componente da instância do componente. A função onUpdate é chamada pela ferramenta de criação sem nenhum parâmetro e o valor de retorno é ignorado. A função onUpdate deve ser declarada na Timeline (Linha de tempo) principal do filme Live Preview. Definir uma função onUpdate em um filme Live Preview é opcional. Para obter mais informações sobre filmes Live Preview, consulte Usando Componentes. Exemplo A função onUpdate proporciona ao filme Live Preview a oportunidade de atualizar sua aparência, a fim de corresponder aos novos valores dos parâmetros de componente. Quando o usuário altera um valor de parâmetro no inspetor Property (Propriedades) dos componentes ou no painel Component Parameters (Parâmetros de componentes), onUpdate é chamada. A função onUpdate executará alguma ação para atualizar a si mesma. Por exemplo, se o componente incluir um parâmetro color, a função onUpdate poderá alterar a cor de um clipe de filme dentro do Live Preview para refletir o novo valor de parâmetro. Além disso, poderá também armazenar a nova cor em uma variável interna. Aqui está um exemplo de utilização da função onUpdate para passar valores a um clipe de filme vazio no filme Live Preview. Vamos supor que você tenha um componente de botão rotulado com uma variável labelColor, a qual especifica a cor do rótulo de texto. O código a seguir está no primeiro quadro da Timeline (Linha de tempo) principal do filme do componente: //Define o parâmetro textColor para especificar a cor do texto do rótulo do botão. buttonLabel.textColor = labelColor; onUpdate 633 No filme Live Preview, coloque um clipe de filme vazio chamado “xch” no filme Live Preview. Em seguida, coloque o seguinte código no primeiro quadro do filme Live Preview. Adicione “xch” ao caminho da variável labelColor para passar a variável ao clipe de filme my_mc: //Escreve uma função onUpdate, adicionando "my_mc." aos nomes de variáveis: function onUpdate (){ buttonLabel.textColor = my_mc.labelColor; } or Disponibilidade Flash 4. Esse operador foi substituído pelo operador || (OR lógico). Uso condition1 ou condition2 Parâmetros condition1,2 Uma expressão que pode receber o valor true ou false. Retorna Nada. Descrição Operador; avalia condition1 e condition2 e se alguma das expressões for true, toda a expressão será true. Consulte também || (OR lógico), | (OR bit a bit) ord Disponibilidade Flash Player 4. Essa função foi substituída por métodos e propriedades da classe String. Uso ord(caractere) Parâmetros caractere O caractere a ser convertido em um número de código ASCII. Retorna Nada. Descrição Função de seqüência de caracteres; converte caracteres em números de código ASCII. Consulte também Classe String 634 Capítulo 12: Dicionário do ActionScript _parent Disponibilidade Flash Player 5. Uso _parent.property _parent._parent.property Descrição Identificador; especifica ou retorna uma referência ao clipe de filme ou objeto que contém o clipe de filme ou objeto atual. O objeto atual é o que contém o código ActionScript que faz referência a _parent. Use _parent para especificar um caminho relativo para clipes de filme ou objetos que estiverem acima do clipe de filme ou objeto atual. Exemplo No exemplo a seguir, o clipe de filme desk é um filho do clipe de filme classroom. Quando o script abaixo é executado dentro do clipe de filme desk, a reprodução salta para o Quadro 10 na Linha de tempo do clipe de filme classroom. _parent.gotoAndStop(10); Consulte também _root, targetPath _parent 635 parseFloat() Disponibilidade Flash Player 5. Uso parseFloat (seqüência de caracteres) Parâmetros seqüência de caracteres A seqüência de caracteres a ser lida e convertida em um número de ponto flutuante. Retorna Nada. Descrição Função; converte uma seqüência de caracteres em um número de ponto flutuante. A função lê ou "analisa" e retorna os números em uma seqüência de caracteres até alcançar um caractere que não seja parte do número inicial. Se a seqüência de caracteres não começar com um número que possa ser analisado, parseFloat retornará NaN. O espaço em branco que precede os inteiros válidos é ignorado, pois são caracteres precedentes não numéricos. Exemplo O exemplo a seguir usa a função parseFloat para avaliar vários tipos de números. parseFloat("-2") retorna -2 parseFloat("2.5") retorna 2.5 parseFloat("3.5e6") retorna 3.5e6, or 3500000 parseFloat("foobar") parseFloat(" 5.1") 636 retorna NaN retorna 5.1 parseFloat("3.75math") retorna 3.75 parseFloat("0garbage") retorna 0 Capítulo 12: Dicionário do ActionScript parseInt Disponibilidade Flash Player 5. Uso parseInt(expressão [, raiz]) Parâmetros expressão Uma seqüência de caracteres a ser convertida em um inteiro. Opcional; um inteiro que representa a raiz (base) do número a ser analisado. Os valores permitidos vão de 2 a 36. raiz Retorna Um número ou NaN. Descrição Função; converte uma seqüência de caracteres em um inteiro. Se não for possível converter a seqüência de caracteres especificada nos parâmetros em um número, a função retornará NaN. As seqüências de caracteres que começam com 0x são interpretadas como números hexadecimais. Os inteiros que começam com 0 ou que especificam uma raiz de 8 são interpretados como números octais. O espaço em branco que precede os inteiros válidos é ignorado, pois são caracteres precedentes não numéricos. Exemplo Os exemplos a seguir usam a função parseInt para avaliar vários tipos de números. parseInt("3.5") // retorna 3 parseInt("barra") // retorna NaN parseInt("4foo") // retorna 4 A seguir são mostrados exemplos de conversões hexadecimais: parseInt("0x3F8") // retorna 1016 parseInt("3E8", 16) // retorna 1000 Este é um exemplo de conversão binária: parseInt("1010", 2) // retorna 10 (a representação decimal do binário 1010) Estes são exemplos de análise de números octais: parseInt("0777") parseInt("777", 8) // retorna 511 (a representação decimal do octal 777) parseInt 637 play() Disponibilidade Flash 2. Uso play() Parâmetros Nenhum. Retorna Nada. Descrição Função; move a reprodução para frente na Timeline (Linha de tempo). Exemplo O código a seguir usa um comando if para verificar o valor de um nome que o usuário insere. Se o usuário inserir Steve, a ação play() será chamada e a reprodução se moverá para frente na Timeline (Linha de tempo). Se o usuário inserir qualquer coisa diferente de Steve, o arquivo SWF não será reproduzido e um campo de texto com o nome de variável alert será exibido. stop(); if (name == "Steve") { play(); else { alert="Você não é Steve!"; } 638 Capítulo 12: Dicionário do ActionScript prevFrame() Disponibilidade Flash 2. Uso prevFrame() Parâmetros Nenhum. Retorna Nada. Descrição Função; envia a reprodução para o próximo quadro e faz uma interrupção. Se o quadro atual for o quadro 1, a reprodução não será movida. Exemplo Quando o usuário clica em um botão que tem o manipulador a seguir anexado, a reprodução é enviada ao quadro anterior. on (release) { prevFrame(); } Consulte também MovieClip.prevFrame() prevFrame() 639 prevScene() Disponibilidade Flash 2. Uso prevScene() Parâmetros Nenhum. Retorna Nada. Descrição Função; envia a reprodução para o quadro 1 da próxima cena e faz uma interrupção. Consulte também nextScene() 640 Capítulo 12: Dicionário do ActionScript print() Disponibilidade Flash Player 4.20. Observação: Se estiver criando com o Flash Player 7 ou posterior, você poderá criar um objeto PrintJob, o que permitirá que você (e o usuário) tenha mais controle sobre o processo de impressão. Para obter mais informações, consulte a entrada da Classe PrintJob. Uso print(destino, "Caixa delimitadora") Parâmetros O nome da instância do clipe de filme a ser impresso. Por padrão, todos os quadros na instância de destino são impressos. Se você quiser imprimir quadros específicos do clipe de filme, atribua um identificador de quadro #p a esses quadros. destino Caixa delimitadora Um modificador que define a área de impressão do clipe de filme. Coloque esse parâmetro entre aspas e especifique um dos seguintes valores: • • • bmovie Indica a caixa delimitadora de um quadro específico em um filme como a área de impressão de todos os quadros imprimíveis no filme. Atribua um identificador de quadro #b ao quadro cuja caixa delimitadora você deseja usar como a área de impressão. bmax Indica uma composição de todas as caixas delimitadoras, de todos os quadros imprimíveis, como a área de impressão. Especifique bmax quando os quadros imprimíveis em seu filme variarem em tamanho. bframe Indica que a caixa delimitadora de cada quadro imprimível deve ser usada como a área de impressão do quadro. Isso altera a área de impressão de cada quadro e dimensiona os objetos para caberem na área de impressão. Use bframe se você tiver objetos de tamanhos diferentes em cada quadro e desejar que cada objeto ocupe toda a página impressa. Retorna Nenhum. Descrição Função; imprime o clipe de filme de destino de acordo com os limites especificados no parâmetro (bmovie, bmax ou bframe). Para imprimir quadros específicos do clipe de filme de destino, anexe um identificador de quadro #p a esses quadros. Embora print() resulte em impressões de melhor qualidade, se comparado a printAsBitmap(), ela não pode ser usada para imprimir clipes de filme que usem transparência alfa ou efeitos de cor especiais. Se você não especificar um parâmetro de área de impressão, ela será determinada pelo tamanho do Palco do filme carregado, por padrão. O filme não herda o tamanho do Palco do filme principal. Você pode controlar a área de impressão especificando o valor do parâmetro bmovie, bmax ou bframe. Todos os elementos imprimíveis em um filme devem ser totalmente carregados antes que a impressão possa começar. O recurso de impressão do Flash Player suporta as impressoras PostScript e não PostScript. As impressoras não PostScript convertem vetores em bitmaps. print() 641 Exemplo O exemplo a seguir imprime todos os quadros imprimíveis no clipe de filme my_mc com a área de impressão definida pela caixa delimitadora do quadro que tem anexado o identificador do quadro #b: print(my_mc,"bmovie"); O exemplo a seguir imprime todos os quadros imprimíveis em my_mc com uma área de impressão definida pela caixa delimitadora de cada quadro: print(my_mc,"bframe"); Consulte também printAsBitmap(), printAsBitmapNum(), Classe PrintJob, printNum() printAsBitmap() Disponibilidade Flash Player 4.20. Observação: Se estiver criando com o Flash Player 7 ou posterior, você poderá criar um objeto PrintJob, o que permitirá que você (e o usuário) tenha mais controle sobre o processo de impressão. Para obter mais informações, consulte a entrada da Classe PrintJob. Uso printAsBitmap(destino, "Caixa delimitadora") Parâmetros destino O nome da instância do clipe de filme a ser impresso. Por padrão, todos os quadros do filme são impressos. Para imprimir quadros específicos do filme, é necessário anexar um identificador de quadro #p a esses quadros. Caixa delimitadora Um modificador que define a área de impressão do filme. Coloque esse parâmetro entre aspas e especifique um dos seguintes valores: • • • bmovie Indica a caixa delimitadora de um quadro específico em um filme como a área de impressão de todos os quadros imprimíveis no filme. Atribua um identificador de quadro #b ao quadro cuja caixa delimitadora você deseja usar como a área de impressão. bmax Indica uma composição de todas as caixas delimitadoras, de todos os quadros imprimíveis, como a área de impressão. Especifique o parâmetro bmax quando os quadros imprimíveis em seu filme variarem em tamanho. bframe Indica que a caixa delimitadora de cada quadro imprimível deve ser usada como a área de impressão do quadro. Isso altera a área de impressão de cada quadro e dimensiona os objetos para caberem na área de impressão. Use bframe se você tiver objetos de tamanhos diferentes em cada quadro e desejar que cada objeto ocupe toda a página impressa. Retorna Nada. 642 Capítulo 12: Dicionário do ActionScript Descrição Função; imprime o clipe de filme de destino como um bitmap. Use printAsBitmap() para imprimir filmes contendo quadros com objetos que usem transparência ou efeitos de cor. A ação printAsBitmap() imprime na resolução mais alta disponível da impressora para manter a melhor definição e qualidade possível. Se o filme não contém transparências alfa ou efeitos de cor, a Macromedia recomenda o uso de para obter melhores resultados em termos de qualidade. print() Por padrão, a área de impressão é determinada pelo tamanho do Palco do filme carregado. O filme não herda o tamanho do Palco do filme principal. Você pode controlar a área de impressão especificando o valor do parâmetro bmovie, bmax ou bframe. Todos os elementos imprimíveis em um filme devem ser totalmente carregados antes que a impressão possa começar. O recurso de impressão do Flash Player suporta as impressoras PostScript e não PostScript. As impressoras não PostScript convertem vetores em bitmaps. Consulte também print(), printAsBitmapNum(), Classe PrintJob, printNum() printAsBitmapNum() Disponibilidade Flash Player 5. Observação: Se estiver criando com o Flash Player 7 ou posterior, você poderá criar um objeto PrintJob, o que permitirá que você (e o usuário) tenha mais controle sobre o processo de impressão. Para obter mais informações, consulte a entrada da Classe PrintJob. Uso printAsBitmapNum(nível, "Caixa delimitadora") Parâmetros nível O nível a ser impresso no Flash Player. Por padrão, todos os quadros do nível são impressos. Se você quiser imprimir quadros específicos do nível, atribua um identificador de quadro #p aos quadros desejados. Caixa delimitadora Um modificador que define a área de impressão do filme. Coloque esse parâmetro entre aspas e especifique um dos seguintes valores: • • • bmovie Indica a caixa delimitadora de um quadro específico em um filme como a área de impressão de todos os quadros imprimíveis no filme. Atribua um identificador de quadro #b ao quadro cuja caixa delimitadora você deseja usar como a área de impressão. bmax Indica uma composição de todas as caixas delimitadoras, de todos os quadros imprimíveis, como a área de impressão. Especifique o parâmetro bmax quando os quadros imprimíveis em seu filme variarem em tamanho. bframe Indica que a caixa delimitadora de cada quadro imprimível deve ser usada como a área de impressão do quadro. Isso altera a área de impressão de cada quadro e dimensiona os objetos para caberem na área de impressão. Use bframe se você tiver objetos de tamanhos diferentes em cada quadro e desejar que cada objeto ocupe toda a página impressa. printAsBitmapNum() 643 Retorna Nenhum. Descrição Função; imprime um nível no Flash Player como um bitmap. Use printAsBitmapNum() para imprimir filmes contendo quadros com objetos que usem transparência ou efeitos de cor. A ação printAsBitmapNum() imprime na resolução mais alta disponível da impressora para manter definição e qualidade as mais altas possíveis. Para calcular o tamanho do arquivo imprimível de um quadro indicado para ser impresso como um bitmap, multiplique a largura do pixel pela altura do pixel pela resolução da impressora. Se o filme não contém transparências alfa ou efeitos de cor, recomenda-se o uso de printNum() para obter melhores resultados em termos de qualidade. Por padrão, a área de impressão é determinada pelo tamanho do Palco do filme carregado. O filme não herda o tamanho do Palco do filme principal. Você pode controlar a área de impressão especificando os parâmetros bmovie, bmax ou bframe. Todos os elementos imprimíveis em um filme devem ser totalmente carregados antes que a impressão possa começar. O recurso de impressão do Flash Player suporta as impressoras PostScript e não PostScript. As impressoras não PostScript convertem vetores em bitmaps. Consulte também print(), printAsBitmap(), 644 Classe PrintJob, printNum() Capítulo 12: Dicionário do ActionScript Classe PrintJob Disponibilidade Flash Player 7. Descrição A classe PrintJob permite criar conteúdo e imprimi-lo em uma ou mais páginas. Além de oferecer aprimoramentos à funcionalidade de impressão propiciada pelo método print(), essa classe permite renderizar conteúdo dinâmico fora da tela, orientar usuários com uma única caixa de diálogo de impressão, e imprimir um documento não dimensionado com proporções mapeadas às proporções do conteúdo. Essa capacidade é especialmente útil na renderização e impressão de conteúdo dinâmico externo, como conteúdo de banco de dados e texto dinâmico. Além disso, com as propriedades preenchidas por PrintJob.start(), o documento pode acessar as configurações de impressora do usuário, como altura da página, largura e orientação, e você pode configurar seu documento para que ele formate dinamicamente o conteúdo Flash da maneira apropriada às configurações da impressora. Resumo dos métodos da classe PrintJob Método Descrição PrintJob.addPage() Adiciona uma página ao dispositivo de spool de impressão. PrintJob.send() Envia as páginas colocadas em spool para a impressora. PrintJob.start() Exibe as caixas de diálogo de impressão do sistema operacional e dá início ao processo de spool. Construtor da classe PrintJob Disponibilidade Flash Player 7. Uso my_pj = new PrintJob() Parâmetros Nenhum. Retorna Nada. Classe PrintJob 645 Descrição Construtor; cria o objeto PrintJob que será usado para imprimir várias páginas. Para implementar um trabalho de impressão, use estes métodos na seqüência mostrada: // cria o objeto PrintJob my_pj = new PrintJob(); // exibe a caixa de diálogo de impressão my_pj.start(); // adiciona a área especificada ao trabalho de impressão // repete uma vez para cada página a ser impressa my_pj.addPage([params]); my_pj.addPage([params]); my_pj.addPage([params]); my_pj.addPage([params]); // envia as páginas do spooler para a impressora my_pj.send(); // limpa delete my_pj; Ao implementar objetos PrintJob, verifique os valores de retorno de PrintJob.start() e PrintJob.addPage() antes de continuar a impressão. Consulte os exemplos de PrintJob.addPage(). Exemplo Consulte PrintJob.addPage(). Consulte também PrintJob.addPage(), PrintJob.send(), PrintJob.start() 646 Capítulo 12: Dicionário do ActionScript PrintJob.addPage() Disponibilidade Flash Player 7. Uso my_pj.addPage(target [, printArea] [, options ] [, frameNumber]) Parâmetros O nível ou nome de instância do clipe de filme a ser impresso. Passe um número para especificar o nível (por exemplo, 0 corresponde ao filme _root) ou a seqüência de caracteres (entre aspas) para especificar o nome de instância de um clipe de filme. target printArea Um objeto opcional que especifica a área a ser impressa, no seguinte formato: {xMin:topLeft, xMax:topRight, yMin:bottomLeft, yMax:bottomRight} As coordenadas especificadas para printArea (área de impressão) representam os pixels de tela relativos ao ponto de registro do filme _root (se target=0) ou do nível ou clipe de filme especificado por target. Você deve fornecer todas as quatro coordenadas. A largura (xMax-xMin) e a altura (yMax-yMin) devem ser maiores ou iguais a 0. Ou seja, se esses dois valores forem 0, a página será impressa, mas se apenas um deles for 0, a página não será impressa. Pontos são unidades de medida de impressão e pixels são unidades de medida de tela; um ponto é igual, em tamanho, a um pixel. Podem-se usar as seguintes equivalências para converter polegadas ou centímetros em pixels ou pontos. • 1 pixel = 1 ponto = 1/72 polegada = 20 twips • 1 polegada = 1440 twips • 1 cm = 567 twips Observação: Se tiver usado print(), printAsBitmap(), printAsBitmapNum() ou printNum() anteriormente para imprimir no Flash, o identificador de quadro #b terá sido usado para especificar a área a ser impressa. Ao usar o método addPage(), você deverá usar o parâmetro printArea para especificar a área de impressão; os identificadores de quadro #b serão ignorados. Se omitir o parâmetro printArea ou se ele for passado de maneira incorreta, toda a área de destino será impressa. Se não desejar especificar um valor para printArea, mas quiser especificar um valor para options ou frameNumber, passe null para a printArea. Um parâmetro opcional que determina se a impressão será como vetor ou como bitmap, no seguinte formato: options {printAsBitmap:Boolean} Por padrão, páginas são impressas no formato vetorial. Para imprimir target como bitmap, passe true para printAsBitmap. O valor padrão é false, representando uma solicitação de impressão vetorial. Lembre-se das seguintes sugestões ao determinar os valores a serem usados: • Se o conteúdo a ser impresso incluir uma imagem em bitmap, use {printAsBitmap:true} para incluir qualquer transparência ou efeito de cor. • Se o conteúdo não incluir imagens em bitmap, omita esse parâmetro ou use {printAsBitmap:false} para imprimir o conteúdo em formato vetorial com nível mais alto de qualidade. PrintJob.addPage() 647 Se o recurso options for omitido ou passado de maneira incorreta, será executada a impressão vetorial. Se não desejar especificar um valor para options, mas quiser especificar um valor para frameNumber, passe null para options. Um número opcional que permite especificar o quadro a ser impresso. Se omitir esse parâmetro, o quadro atual em target será impresso. frameNumber Observação: Se tiver usado print(), printAsBitmap(), printAsBitmapNum() ou printNum() anteriormente para imprimir no Flash, talvez o identificador de quadro #p tenha sido usado em vários quadros para especificar as páginas a serem impressas. Para usar PrintJob.addPage() para imprimir vários quadros, é preciso emitir um comando PrintJob.addPage() para cada quadro; os identificadores de quadro #p são ignorados. Para consultar um modo de fazer isso por programação, verifique o exemplo mais adiante nesta entrada. Retorna Um valor booleano true se a página tiver sido enviada com êxito para o dispositivo de spool de impressão, caso contrário, false. Descrição Método; envia o nível ou clipe de filme especificado como uma única página a ser impressa pelo dispositivo de spool. Antes de usar esse método, use PrintJob.start(); depois de chamar PrintJob.addPage() uma ou mais vezes para um trabalho de impressão, use PrintJob.send() para enviar as páginas colocadas em spool para a impressora. Se esse método retornar false (por exemplo, caso você não tenha chamado PrintJob.start() ou o usuário tenha cancelado o trabalho de impressão), todas as chamadas subseqüentes para PrintJob.addPage() não terão êxito. Entretanto, se chamadas anteriores a PrintJob.addPage() tiverem tido êxito, o comando de conclusão PrintJob.send() enviará para a impressora todas as páginas que tiverem tido êxito ao serem colocadas em spool. Se tiver passado um valor para a printArea, as coordenadas xMin e yMin farão o mapeamento para o canto superior esquerdo (coordenadas 0,0) da área imprimível na página; a área imprimível é determinada pelas propriedades pageHeight e pageWidth definidas por PrintJob.start(). Como a impressão é alinhada ao canto superior esquerdo da área imprimível na página, a impressão será cortada à direita e/ou na parte inferior se a área definida em printArea for maior que a área imprimível na página. Se não tiver passado um valor para a printArea e o Stage (Palco) for maior que a área imprimível, o mesmo tipo de corte ocorrerá. Se desejar dimensionar um clipe de filme antes de imprimi-lo, defina as propriedades e MovieClip._yscale antes de chamar esse método; posteriormente, defina-as outra vez com os valores originais. Se dimensionar um clipe de filme e também passar um valor para a printArea, os valores de pixel passados para a printArea refletirão o tamanho original do clipe de filme. Por exemplo, se você definir o dimensionamento do clipe de filme como sendo 50% e especificar uma área de impressão de 500 x 500 pixels, o conteúdo impresso será idêntico ao conteúdo que seria impresso se você não tivesse dimensionado o clipe de filme para metade do tamanho. MovieClip._xscale O recurso de impressão do Flash Player suporta as impressoras PostScript e não PostScript. As impressoras não PostScript convertem vetores em bitmaps. 648 Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir ilustra várias maneiras diferentes de emitir o comando addPage(). my_btn.onRelease = function() { var my_pj = new PrintJob(); var myResult; myResult = my_pj.start(); while(myResult){ // Imprime todo o quadro atual do filme _root em formato vetorial myPage = my_pj.addPage(0); if(!myPage){ break; // se addPage() não for bem-sucedido, sai do loop e chama send() } // Iniciando em 0,0, imprime uma área de 400 pixels de largura e 500 pixels de altura // do quadro atual do filme _root no formato vetorial myPage = my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500}); if(!myPage){ break; } // Iniciando em 0,0, imprime uma área de 400 pixels de largura e 500 pixels de altura // do quadro 1 do filme _root no formato de bitmap myPage = my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500}, {printAsBitmap:true}, 1); if(!myPage){ break; } // Iniciando 50 pixels à direita de 0,0 e 70 pixels abaixo, // imprime uma área de 500 pixels de largura e 600 pixels de altura // do quadro 4 do nível 5 no formato vetorial myPage = my_pj.addPage(5, {xMin:50,xMax:550,yMin:70,yMax:670}, null, 4); // Iniciando em 0,0, imprime uma área de 400 pixels de largura e 400 pixels de altura // do quadro 3 do clipe de filme "dance_mc" no formato de bitmap myPage = my_pj.addPage("dance_mc", {xMin:0,xMax:400,yMin:0,yMax:400}, {printAsBitmap:true}, 3); if(!myPage){ break; } // Iniciando em 0,0, imprime uma área de 400 de largura e 600 pixels de altura // do quadro 3 do clipe de filme "dance_mc" no formato vetorial // a 50% de seu tamanho real var x = dance_mc._xscale; var y = dance_mc._yscale; dance_mc._xscale = 50; dance_mc._yscale = 50; myPage = my_pj.addPage("dance_mc", {xMin:0,xMax:400,yMin:0,yMax:600}, null, 3); dance_mc._xscale = x; dance_mc._yscale = y; if(!myPage){ PrintJob.addPage() 649 break; } break; //sai do loop while se todas as chamadas addPage() forem bemsucedidas } my_pj.send(); delete my_pj; } O exemplo a seguir mostra como usar um loop for para imprimir vários quadros. myButton.onRelease = function() { my_pj = new PrintJob(); var myResult; var currentFrame; var totalFrames = 10; myResult = my_pj.start(); for (currentFrame=1; currentFrame<=totalFrames;currentFrame++) { myResult = my_pj.addPage(0, null, null, currentFrame); } my_pj.send(); delete my_pj; } Consulte também PrintJob.send(), PrintJob.start() 650 Capítulo 12: Dicionário do ActionScript PrintJob.send() Disponibilidade Flash Player 7. Uso my_pj.send() Parâmetros Nenhum. Retorna Nada. Descrição Método; usado após PrintJob.start() e PrintJob.addPage() para enviar páginas no spool para a impressora. Exemplo Consulte PrintJob.addPage(). Consulte também PrintJob.addPage(), PrintJob.start() PrintJob.send() 651 PrintJob.start() Disponibilidade Flash Player 7. Uso my_pj.start() Parâmetros Nenhum. Retorna Um valor booleano true se o usuário clicar em OK quando as caixas de diálogo de impressão forem exibidas, ou false se o usuário clicar em Cancelar ou ocorrer um erro. Descrição Método; exibe as caixas de diálogo de impressão do sistema operacional e inicia o processo de spool. As caixas de diálogo de impressão oferecem ao usuário a oportunidade de alterar as configurações de impressão e, em seguida, preencher as seguintes propriedades somente de leitura (observe que 1 ponto equivale a 1 pixel de tela) Propriedade Tipo Unidades Observações PrintJob.paperHeight Number Pontos Altura geral do papel PrintJob.paperWidth Number Pontos Largura geral do papel PrintJob.pageHeight Number Pontos Altura da verdadeira área imprimível da página; as margens definidas pelo usuário serão ignoradas PrintJob.pageWidth Number Pontos Largura da verdadeira área imprimível da página; as margens definidas pelo usuário serão ignoradas PrintJob.orientation String N/A “Portrait” (Retrato) ou “landscape” (Paisagem) O exibidor inicia o processo de enviar o trabalho de impressão no spool para o sistema operacional após o usuário clicar em OK na caixa de diálogo. Você pode usar agora os comandos PrintJob.addPage() para começar a enviar páginas para o spooler. Se desejar, use as propriedades de altura, largura e orientação que este método retorna para determinar a formatação da impressão. Como o usuário vê informações como “Printing page 1” (Imprimindo página 1) imediatamente após clicar em OK, você deve chamar os comandos PrintJob.addPage() e PrintJob.send() logo que possível. Se decorrerem 10 segundos entre o momento da chamada de PrintJob.start() e o momento em que você chamar PrintJob.send(), o Flash Player chamará efetivamente PrintJob.send(), iniciando o processo de impressão das páginas adicionadas com PrintJob.addPage() e interrompendo o processo de envio de páginas para o spool. 652 Capítulo 12: Dicionário do ActionScript Se esse método retornar false (por exemplo, se o usuário clicar em Cancel (Cancelar) em vez de em OK), todas as chamadas subseqüentes para PrintJob.addPage() e PrintJob.send() não terão êxito. No entanto, mesmo que você teste esse valor de retorno e não envie comandos PrintJob.addPage() como resultado, ainda assim poderá excluir o objeto PrintJob para assegurar que o spooler de impressão esteja limpo, como mostrado a seguir. var my_pj = new PrintJob(); var myResult = my_pj.start(); if(myResult) { // comandos addPage() e send() aqui } delete my_pj; Exemplo Consulte PrintJob.addPage(). Consulte também PrintJob.addPage(), PrintJob.send() PrintJob.start() 653 printNum() Disponibilidade Flash Player 5. Observação: Se estiver criando com o Flash Player 7 ou posterior, você poderá criar um objeto PrintJob, o que permitirá que você (e o usuário) tenha mais controle sobre o processo de impressão. Para obter mais informações, consulte a entrada da Classe PrintJob. Uso printNum (nível, "Caixa delimitadora") Parâmetros O nível a ser impresso no Flash Player. Por padrão, todos os quadros do nível são impressos. Se você quiser imprimir quadros específicos do nível, atribua um identificador de quadro #p aos quadros desejados. nível Caixa delimitadora Um modificador que define a área de impressão do filme. Coloque esse parâmetro entre aspas e especifique um dos seguintes valores: • • • bmovie Indica a caixa delimitadora de um quadro específico em um filme como a área de impressão de todos os quadros imprimíveis no filme. Atribua um identificador de quadro #b ao quadro cuja caixa delimitadora você deseja usar como a área de impressão. bmax Indica uma composição de todas as caixas delimitadoras, de todos os quadros imprimíveis, como a área de impressão. Especifique o parâmetro bmax quando os quadros imprimíveis em seu filme variarem em tamanho. bframe Indica que a caixa delimitadora de cada quadro imprimível deve ser usada como a área de impressão do quadro. Isso altera a área de impressão de cada quadro e dimensiona os objetos para caberem na área de impressão. Use bframe se você tiver objetos de tamanhos diferentes em cada quadro e desejar que cada objeto ocupe toda a página impressa. Retorna Nada. Descrição Função; imprime o nível no Flash Player conforme os limites especificados no parâmetro Caixa delimitadora ("bmovie", "bmax", "bframe"). Para imprimir quadros específicos do filme de destino, é necessário anexar um identificador de quadro #p a esses quadros. Embora a ação printNum() ofereça impressões de qualidade superior às da ação printAsBitmapNum(), não é possível usar printNum() para imprimir filmes com transparências alfa ou efeitos de cor especiais. Se você não especificar um parâmetro de área de impressão, ela será determinada pelo tamanho do Palco do filme carregado, por padrão. O filme não herda o tamanho do Palco do filme principal. Você pode controlar a área de impressão especificando o valor do parâmetro bmovie, bmax ou bframe. Todos os elementos imprimíveis em um filme devem ser totalmente carregados antes que a impressão possa começar. O recurso de impressão do Flash Player suporta as impressoras PostScript e não PostScript. As impressoras não PostScript convertem vetores em bitmaps. Consulte também print(), printAsBitmap(), printAsBitmapNum(), 654 Capítulo 12: Dicionário do ActionScript Classe PrintJob private Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Para obter mais informações, consulte “Controlando o acesso de membros” na página 168. Consulte também private, static public Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Para obter mais informações, consulte “Controlando o acesso de membros” na página 168. Consulte também private, static public 655 _quality Disponibilidade Flash Player 5. Uso _quality Descrição Propriedade (global); define ou recupera a qualidade usada para um filme. As fontes de dispositivo são sempre serrilhadas, sendo assim não são afetadas pela propriedade _quality. A propriedade _quality pode ser definida nos seguintes valores: • • • • "LOW" Qualidade baixa. Os gráficos não são apresentados sem serrilhado, os bitmaps não são suavizados. "MEDIUM" Qualidade média. Os gráficos são apresentados sem serrilhado usando uma grade de 2 x 2, em pixels, mas os bitmaps não são suavizados. Adequado para filmes que não contêm texto. "HIGH" Qualidade alta. Os gráficos são apresentados sem serrilhado usando uma grade de 4 x 4, em pixels, e os bitmaps são suavizados quando o filme é estático. Essa é a configuração de qualidade padrão usada pelo Flash. "BEST" Qualidade muito alta. Os gráficos são apresentados sem serrilhado usando uma grade de 4 x 4, em pixels, e os bitmaps sempre são suavizados. Exemplo O exemplo a seguir define a qualidade como LOW: _quality = "LOW"; Consulte também _highquality, toggleHighQuality() 656 Capítulo 12: Dicionário do ActionScript random Disponibilidade Flash Player 4. Esta função foi substituída no Flash 5 por Math.random(). Uso random(valor) Parâmetros valor Um inteiro. Retorna Um inteiro. Descrição Função; retorna um inteiro aleatório entre 0 e 1 a menos que o inteiro especificado no parâmetro valor. Exemplo O seguinte uso de random() retorna um valor de 0, 1, 2, 3 ou 4: random(5); Consulte também Math.random() removeMovieClip() Disponibilidade Flash Player 4. Uso removeMovieClip(destino) Parâmetros destino O caminho de destino de uma instância de clipe de filme com duplicateMovieClip(), ou o nome da instância de clipe de filme criada com MovieClip.attachMovie() ou MovieClip.duplicateMovieClip(). Retorna Nenhum. Descrição Função; exclui o clipe de filme especificado. Consulte também duplicateMovieClip(), MovieClip.duplicateMovieClip(), MovieClip.attachMovie(), MovieClip.removeMovieClip() removeMovieClip() 657 return Disponibilidade Flash Player 5. Uso return[expressão] return Parâmetros Uma seqüência de caracteres, um número, uma matriz ou um objeto a ser avaliado e retornado como um valor da função. Este parâmetro é opcional. expressão Retorna O parâmetro avaliado expressão, se fornecido. Descrição Comando; especifica o valor retornado pela função. A ação return avalia expressão e retorna o resultado como o valor da função em que é executada. A ação return faz com que a função pare de ser executada e a substitui pelo valor retornado. Se o comando return for usado isoladamente, retornará null. Exemplo O exemplo a seguir usa a ação return dentro do corpo da função sum() para retornar o valor adicionado dos três parâmetros. A próxima linha de código chama a função sum() e atribui o valor retornado à variável newValue: function sum(a, b, c){ return a + b + c; } newValue = sum(4, 32, 78); trace(newValue); // Envia 114 ao Painel Output (saída) Consulte também function 658 Capítulo 12: Dicionário do ActionScript _root Disponibilidade Flash Player 5. Uso _root.movieClip _root.action _root.property Parâmetros movieClip action property O nome da instância de um clipe de filme. Uma ação ou método. Uma propriedade do objeto MovieClip. Descrição Propriedade; especifica ou retorna uma referência à Linha de tempo do filme raiz. Se um filme tem vários níveis, a Timeline do filme raiz está no nível contido no script sendo executado no momento. Por exemplo, se um script no nível 1 avaliar _root, será retornado _level1. Especificar _root é o mesmo que usar a notação de barra (/) para especificar um caminho absoluto dentro do nível atual. Observação: Se um filme que contém _root for carregado em outro filme, _root se referirá à Timeline (Linha de tempo) do filme que está sendo carregado, não à que contém o _root. Para assegurar-se que _root se refira à Timeline (Linha de tempo) do filme carregado, mesmo que este seja carregado dentro de outro filme, use MovieClip._lockroot. Exemplo O exemplo a seguir interrompe a Linha de tempo do nível que contém o script sendo executado no momento: _root.stop(); O exemplo a seguir envia a Timeline (Linha de tempo) no nível atual para o quadro 3: _root.gotoAndStop(3); Consulte também MovieClip._lockroot, _parent, targetPath _root 659 scroll Disponibilidade Flash Player 4. Uso textFieldVariableName.scroll = x Descrição Propriedade; uma propriedade obsoleta que controla a exibição de informações em um campo de texto associado a uma variável. A propriedade scroll define onde o campo de texto começa exibindo o conteúdo; depois de defini-lo, o Flash Player o atualiza à medida que o usuário rola pelo campo de texto. A propriedade scroll é útil para direcionar os usuários para um parágrafo em específico em um trecho longo, ou para criar campos de texto de rolagem. Essa propriedade pode ser recuperada e modificada. Exemplo O código a seguir é anexado a um botão Para cima que rola o campo de texto myText: on (release) { myText.scroll = myText.scroll + 1; } Consulte também TextField.maxscroll, TextField.scroll Classe Selection Disponibilidade Flash Player 5. Descrição A classe Selection permite que você defina e controle o campo de texto no qual está localizado o ponto de inserção, ou seja, o campo que possui o foco. Os índices do intervalo de seleção são baseados em zero (por exemplo, a primeira posição é 0, a segunda é 1 e assim por diante). Não há nenhuma função construtora para a classe Selection, pois só pode haver um campo focalizado por vez. 660 Capítulo 12: Dicionário do ActionScript Resumo dos métodos da classe Selection Método Descrição Selection.addListener() Registra um objeto para receber notificação quando onSetFocus é chamado. Selection.getBeginIndex() Retorna o índice no início do intervalo de seleção. Retorna -1 se não houver índice ou campo selecionado no momento. Selection.getCaretIndex() Retorna a posição atual do cursor (ponto de inserção) no intervalo de seleção focalizado atualmente. Retorna -1 se não houver posição de cursor ou intervalo de seleção focalizado no momento. Selection.getEndIndex() Retorna o índice no final do intervalo de seleção. Retorna -1 se não houver índice ou campo selecionado no momento. Selection.getFocus() Retorna o nome da variável do campo de texto em foco no momento. Retorna null caso não haja campo de texto em foco no momento. Selection.removeListener() Remove um objeto que foi registrado com addListener(). Selection.setFocus() Focaliza o campo de texto associado à variável especificada. Selection.setSelection() Define os índices de início e de fim do intervalo de seleção. Resumo dos ouvintes da classe Selection Ouvinte Descrição Selection.onSetFocus Notificado quando o foco de entrada é alterado. Selection.addListener() Disponibilidade Flash Player 6. Uso Selection.addListener(novo_Ouvinte) Parâmetros novo_Ouvinte Objeto com um método onSetFocus. Retorna Nenhum. Descrição Método; registra um objeto para receber notificações de alteração de foco do teclado. Quando o foco é alterado (por exemplo, sempre que Selection.setFocus() é chamado), todos os objetos ouvintes registrados com addListener() têm o método onSetFocus chamado. Vários objetos podem ouvir notificações de alteração de foco. Se o ouvinte newListener já estiver registrado, nenhuma alteração ocorrerá. Selection.addListener() 661 Selection.getBeginIndex() Disponibilidade Flash Player 5. Uso Selection.getBeginIndex() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o índice no início do intervalo de seleção. Se nenhum índice existir ou nenhum campo de texto possuir foco no momento, o método retornará -1. Os índices do intervalo de seleção têm zero como base (por exemplo, a primeira posição é 0, a segunda posição é 1, e assim por diante). Selection.getCaretIndex() Disponibilidade Flash Player 5. Uso Selection.getCaretIndex() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o índice da posição do ponto de inserção intermitente (cursor em forma de circunflexo). Se não for exibido um ponto de inserção intermitente, o método retornará -1. Os índices do intervalo de seleção têm zero como base (por exemplo, a primeira posição é 0, a segunda posição é 1, e assim por diante). 662 Capítulo 12: Dicionário do ActionScript Selection.getEndIndex() Disponibilidade Flash Player 5. Uso Selection.getEndIndex() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o índice final do intervalo de seleção focalizado no momento. Se não existir índice ou intervalo de seleção em foco no momento, o método retornará -1. Os índices do intervalo de seleção têm zero como base (por exemplo, a primeira posição é 0, a segunda posição é 1, e assim por diante). Selection.getFocus() Disponibilidade Flash Player 5. Nomes de instância para botões e campos de texto funcionam no Flash Player 6 e suas versões posteriores. Uso Selection.getFocus() Parâmetros Nenhum. Retorna Uma seqüência de caracteres ou null. Descrição Método; retorna o nome da variável do campo de texto que está evidenciado. Se nenhum campo de texto estiver evidenciado, o método retornará null. Se o foco atual for um botão que seja um objeto Button, getFocus() retornará o caminho de destino como uma seqüência de caracteres. Se o foco atual for um campo de texto que seja um objeto TextField, getFocus() retornará o caminho de destino como uma seqüência de caracteres. Se um clipe de filme com botões for o botão atualmente em foco, Selection.getFocus() retornará o caminho de destino do clipe de filme com botões. Se um campo de texto com um nome de instância estiver atualmente em foco, Selection.getFocus() retornará o caminho de destino do objeto TextField. Caso contrário, retornará o nome da variável do campo de texto. Selection.getFocus() 663 Selection.onSetFocus Disponibilidade Flash Player 6. Uso someListener.onSetFocus = function(oldFocus, newFocus){ comandos; } Descrição Ouvinte; notificado quando o foco de entrada é alterado. Para usar onSetFocus, crie um objeto ouvinte. Em seguida, é possível definir uma função para onSetFocus e usar addListener() para registrar o ouvinte com o objeto Selection, como no exemplo a seguir: someListener = new Object(); someListener.onSetFocus = function () { ... }; Selection.addListener(someListener); Os ouvintes permitem a cooperação de partes diferentes de código. Isso ocorre porque vários ouvintes podem receber notificações sobre um único evento. Consulte também Selection.addListener() Selection.removeListener() Disponibilidade Flash Player 6. Uso Selection.removeListener(ouvinte) Parâmetros ouvinte O objeto que deixará de receber notificações de foco. Retorna Se o ouvinte tiver sido removido com êxito, o método retornará um valor true. Se o ouvinte não tiver sido removido com êxito, por exemplo, caso o ouvinte não estivesse na lista de ouvintes do objeto Selection, o método retornará um valor false. Descrição Método; remove um objeto anteriormente registrado com addListener(). 664 Capítulo 12: Dicionário do ActionScript Selection.setFocus() Disponibilidade Flash Player 5. Nomes de instância para botões e clipes de filmes funcionam somente no Flash Player 6 e suas versões posteriores. Uso Selection.setFocus("instanceName") Parâmetros Uma seqüência de caracteres que especifica o caminho para o nome de instância de um botão, clipe de filme ou campo de texto. instanceName Retorna Um evento. Descrição Método; fornece foco ao campo de texto, botão ou clipe de filme selecionável (editável), especificado por instanceName. O parâmetro instanceName deve ser um literal de seqüência de caracteres do caminho dessa instância. É possível usar a notação de ponto ou barra para especificar o caminho. Também é possível usar um caminho relativo ou absoluto. Se null for passado, o foco atual será removido. Exemplo O exemplo a seguir focaliza um campo de texto associado a myVar, na Timeline (Linha de tempo) principal. O parâmetro instanceName é um caminho absoluto, portanto, é possível chamar a ação de qualquer Timeline (Linha de tempo). Selection.setFocus("_root.myVar"); No exemplo a seguir, o campo de texto associado a myVar está em um clipe de filme chamado myClip na Linha de tempo principal. É possível usar um dos caminhos a seguir para definir o foco. O primeiro é relativo e o segundo é absoluto. Selection.setFocus("myClip.myVar"); Selection.setFocus("_root.myClip.myVar"); Selection.setFocus() 665 Selection.setSelection() Disponibilidade Flash Player 5. Uso Selection.setSelection(início, fim) Parâmetros início fim O índice inicial do intervalo de seleção. O índice final do intervalo de seleção. Retorna Nada. Descrição Método; define o intervalo de seleção do campo de texto focalizado no momento. O novo intervalo de seleção começará no índice especificado no parâmetro início e terminará no índice especificado no parâmetro fim. Os índices do intervalo de seleção são baseados em zero (por exemplo, a primeira posição é 0, a segunda é 1 e assim por diante). Esse método não tem efeito se não houver campo de texto focalizado no momento. set Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Consulte também get 666 Capítulo 12: Dicionário do ActionScript set variable Disponibilidade Flash Player 4. Uso set(variável, expressão) Parâmetros variável expressão Um identificador para conter o valor do parâmetro expressão. Um valor atribuído à variável. Retorna Nada. Descrição Comando; atribui um valor a uma variável. Uma variável é um recipiente que contém dados. O recipiente é sempre o mesmo, mas o conteúdo pode mudar. Ao alterar o valor de uma variável durante a execução do arquivo SWF, você poderá registrar e salvar informações sobre as atividades do usuário, gravar valores que mudam à medida que o arquivo SWF é executado ou avaliar se uma condição é true ou false. As variáveis podem conter qualquer tipo de dado (por exemplo, String, Number, Boolean, Object ou MovieClip). A Timeline (Linha de tempo) de cada arquivo SWF e clipe de filme possui seu próprio conjunto de variáveis, e cada variável possui seu próprio valor, independentemente das variáveis de outras linhas de tempo. Exemplo Este exemplo define uma variável chamada orig_x_pos, que armazena a posição do eixo x original do clipe de filme ship para redefinir o envio em sua localização inicial posteriormente no SWF. on (release) { set("orig_x_pos", getProperty ("ship", _x )); } O código anterior fornece o mesmo resultado que o código a seguir: on (release) { orig_x_pos = ship._x; } Consulte também var, call() set variable 667 setInterval() Disponibilidade Flash Player 6. Uso setInterval(functionName, interval [, param1, param2, ..., paramN]) Parâmetros functionName interval Um nome de função ou uma referência a uma função anônima. Tempo, em milissegundos, entre as chamadas ao parâmetro functionName. param1, param2, ..., paramN methodName. Parâmetros opcionais passados ao parâmetro function ou Retorna Um identificador de intervalo que pode ser passado para clearInterval() a fim de cancelar o intervalo. Descrição Função; chama uma função ou método ou um objeto em intervalos periódicos enquanto um arquivo SWF está sendo executado. É possível usar uma função de intervalo para atualizar variáveis de um banco de dados ou atualizar uma exibição de tempo. Se o interval for menor que a taxa de quadros do arquivo SWF (por exemplo, 10 quadros por segundo (fps) equivalem a 100 milissegundos), a função de intervalo será chamada o mais próximo possível de interval. Use a função updateAfterEvent() para certificar-se de que a tela seja atualizada com a freqüência necessária. Se interval for maior que a taxa de quadros do arquivo SWF, a função de intervalo só será chamada quando a reprodução entrar em um quadro para minimizar o impacto sempre que a tela for atualizada. Exemplo Uso 1: o exemplo a seguir chama uma função anônima a cada 1.000 milissegundos (a cada 1 segundo). setInterval( function(){ trace("interval called"); }, 1000 ); Uso 2: O exemplo a seguir define duas funções de retorno de chamada e chama cada uma delas. Ambas as chamadas para setInterval() enviam a seqüência de caracteres "intervalo invocado" para o painel Output (Saída) a cada 1.000 milissegundos. A primeira chamada de setInterval() chama a função callback1(), que contém uma ação trace(). A segunda chamada de setInterval() passa a seqüência de caracteres "intervalo invocado" para a função callback2() como um parâmetro. function callback1() { trace("intervalo invocado"); } function callback2(arg) { trace(arg); } setInterval( callback1, 1000 ); setInterval( callback2, 1000, "interval called" ); 668 Capítulo 12: Dicionário do ActionScript Uso 3: Este exemplo usa um método de um objeto. Use esta sintaxe quando quiser chamar um método que seja definido para um objeto. obj = new Object(); obj.interval = function() { trace("intervalo de função invocado"); } setInterval( obj, "interval", 1000 ); obj2 = new Object(); obj2.interval = function(s) { trace(s); } setInterval( obj2, "interval", 1000, "interval function called" ); Use a segunda forma da sintaxe setInterval() para chamar um método de um objeto, como a seguir: setInterval( obj2, "interval", 1000, "interval function called" ); Consulte também clearInterval(), updateAfterEvent() setInterval() 669 setProperty() Disponibilidade Flash Player 4. Uso setProperty("destino", propriedade, valor/expressão) Parâmetros O caminho para o nome da instância do clipe de filme cuja propriedade será definida. destino A propriedade que será definida. propriedade valor O novo valor literal da propriedade. expressão Uma equação que é avaliada como o novo valor da propriedade. Retorna Nada. Descrição Função; altera o valor da propriedade de um clipe de filme durante sua reprodução. Exemplo Este comando define a propriedade _alpha de um clipe de filme chamado star como 30% quando o botão é clicado: on (release) { setProperty("star", _alpha, "30"); } Consulte também getProperty 670 Capítulo 12: Dicionário do ActionScript Classe SharedObject Disponibilidade Flash Player 6. Descrição Os objetos Shared oferecem recursos poderosos: oferecem compartilhamento de dados em tempo real entre os objetos persistentes no computador do usuário. Pense nos objetos locais compartilhados como “cookies”. Você pode usar os objetos locais compartilhados para manter persistência local. Esta é a forma mais simples de usar um objeto compartilhado. Por exemplo, você pode chamar o SharedObject.getLocal() para criar um objeto compartilhado, como uma calculadora com memória, no exibidor. Como o objeto compartilhado é localmente persistente, o Flash salva seus atributos de dados no computador ao término de reprodução do SWF. Na próxima vez em o arquivo SWF for executado, a calculadora conterá os valores que possuía ao término do SWF. Como alternativa, se você definir as propriedades do objeto compartilhado para null antes do término do SWF, a calculadora será aberta sem os valores anteriores, na próxima vez que o SWF for reproduzido. Para criar um objeto local compartilhado, use esta sintaxe: // Cria um objeto local compartilhado so = SharedObject.getLocal("foo"); Considerações sobre o espaço do disco local Os objetos locais compartilhados são sempre persistentes no cliente, até o limite do espaço disponível na memória e no disco. Por padrão, o Flash pode salvar os objetos compartilhados remotos persistentes localmente, até o limite de 100K. Quando você tenta salvar um objeto maior, o Flash Player exibe a caixa de diálogo Local Storage (Armazenamento local), na qual o usuário pode autorizar ou negar o armazenamento local para o domínio que está solicitando acesso. Certifique-se de que o tamanho do Stage (Palco) seja de pelo menos 215 x 138 pixels. Esse é o tamanho mínimo que o Flash necessita para exibir a caixa de diálogo. Se o usuário clicar em Allow (Autorizar), o objeto será salvo e SharedObject.onStatus() será chamado com a propriedade code com o valor SharedObject.Flush.Success; se o usuário clicar em Deny (Negar), o objeto não será salvo e SharedObject.onStatus() será chamado com a propriedade code com o valor SharedObject.Flush.Failed. Classe SharedObject 671 O usuário também pode especificar configurações de armazenamento local permanentes para um domínio específico clicando com o botão direito do mouse (Windows) ou clicando com a tecla Ctrl pressionada (Macintosh) enquanto o SWF estiver sendo reproduzido, escolhendo Settings (Configurações) e abrindo o painel Local Storage. A lista a seguir resume como as opções de espaço em disco do usuário interagem com os objetos compartilhados: • Se o usuário selecionar Never (Nunca), os objetos nunca serão salvos localmente e todos os comandos SharedObject.flush() emitidos para o objeto retornarão como false. • Se o usuário selecionar Unlimited (Ilimitado) movendo o controle deslizante para a extrema direita, os objetos serão salvos localmente até o limite de espaço disponível no disco. • Se o usuário selecionar None (Nenhum) movendo o controle deslizante para a extrema • esquerda, todos os comandos SharedObject.flush() emitidos para o objeto retornarão "pending" (pendente) e farão o exibidor perguntar ao usuário se é possível alocar mais espaço no disco para receber o objeto, conforme explicado acima. Se o usuário selecionar 10 KB, 100 KB, 1 MB ou 10 MB, os objetos serão salvos localmente e SharedObject.flush() retornará true se o objeto couber na quantidade especificada de espaço. Se for necessário mais espaço, SharedObject.flush() retornará "pending" (pendente) e o player (exibidor) perguntará ao usuário se é possível alocar mais espaço no disco para receber o objeto, conforme explicado acima. Além disso, se o usuário selecionar um valor menor do que a quantidade de espaço em disco que está sendo usada no momento para os dados persistentes localmente, o exibidor avisará que os objetos compartilhados salvos serão excluídos. Observação: Não há limite de tamanho no Flash Player executado no ambiente de criação, o limite aplica-se somente ao exibidor independente. 672 Capítulo 12: Dicionário do ActionScript Resumo dos métodos da classe SharedObject Método Descrição SharedObject.clear() Elimina todos os dados do objeto compartilhado e exclui o objeto compartilhado do disco. SharedObject.flush() Grava imediatamente um objeto compartilhado persistente em um arquivo local. SharedObject.getLocal() Retorna uma referência a um objeto compartilhado persistente que está disponível somente para o cliente atual. SharedObject.getSize() Obtém o tamanho atual do objeto compartilhado, em bytes. Resumo das propriedades do objeto SharedObject Propriedade (somente leitura) Descrição SharedObject.data Coleção de atributos atribuídos à propriedade data do objeto; tais atributos podem ser compartilhados e/ou armazenados. Resumo do manipulador de eventos do objeto SharedObject Identificador de eventos Descrição SharedObject.onStatus() Chamado sempre que um erro, aviso ou nota informativa é postado para o objeto compartilhado. Construtor para a classe SharedObject Para obter mais informações sobre como criar objetos locais compartilhados, consulte SharedObject.getLocal(). Objetos de informações SharedObject A classe SharedObject fornece um manipulador de eventos onStatus que utiliza um objeto de informações para fornecer informações, status ou mensagens de erro. Para responder a esse manipulador de eventos, você deve criar uma função para processar o objeto de informações, e deve conhecer o formato e o conteúdo do objeto de informações retornado. Além do método onStatus específico, o Flash também fornece uma função “super” chamada system.onStatus. Se onStatus for chamado para um determinado objeto e não houver função atribuída para resposta, o Flash processará uma função atribuída a system.onStatus, se esta existir. O exemplo a seguir ilustra como você pode criar funções para processar objetos de informações enviados pelo método onStatus. // Crie uma função genérica system.onStatus = function(genericError) { // Seu script faria algo mais significativo aqui trace("Ocorreu um erro. Tente novamente."); }; Classe SharedObject 673 Por padrão, todo objeto de informações possui uma propriedade code que contém uma seqüência de caracteres descrevendo o resultado do método onStatus e uma propriedade class contendo uma seqüência de caracteres "status", "warning" ou "error". Alguns objetos de informações apresentam outras propriedades padrão, que fornecem mais informações sobre o motivo pelo qual onStatus foi chamado, como exibido na tabela a seguir: Propriedade Code Proprie- Significado dade Class SharedObject.Flush.Failed Error Um comando SharedObject.flush() que retornou "pending" (pendente) apresentou falha (o usuário não alocou mais espaço em disco para o objeto compartilhado). SharedObject.Flush.Success Status Um comando SharedObject.flush() que retornou "pending" (pendente) foi concluído com sucesso (o usuário alocou mais espaço em disco para o objeto compartilhado). SharedObject.clear() Disponibilidade Flash Player 7. Uso my_so.clear() Parâmetros Nenhum. Retorna Nada. Descrição Método; elimina todos os dados do objeto compartilhado e o exclui do disco. A referência a my_so ainda está ativa e my_so está vazio agora. 674 Capítulo 12: Dicionário do ActionScript SharedObject.data Disponibilidade Flash Player 6. Uso myLocalSharedObject.data Descrição Propriedade somente de leitura; coleção de atributos atribuídos à propriedade data do objeto; tais atributos podem ser compartilhados e/ou armazenados. Cada atributo pode ser um objeto de qualquer um dos tipos básicos ActionScript ou JavaScript: Array, Number, Boolean e assim por diante. Por exemplo, as linhas a seguir atribuem valores a vários aspectos de um objeto compartilhado: itemsArray = new Array(101,346,483); currentUserIsAdmin = true; currentUserName = "Maria"; so.data.itemNumbers = itemsArray; so.data.adminPrivileges = currentUserIsAdmin; so.data.userName = currentUserName; Todos os atributos da propriedade data de um objeto compartilhado serão salvos se o objeto for persistente. Observação: Não atribua valores diretamente à propriedade data de um objeto compartilhado, como em so.data = someValue; o Flash ignora essas atribuições. Para excluir os atributos de objetos locais compartilhados, use códigos como delete Configurar um atributo como null ou undefined para um objeto compartilhado local não exclui o atributo. so.data.attributeName. Para criar valores “private” para um objeto compartilhado—valores disponíveis somente para a instância do cliente enquanto o objeto estiver em uso e que não são armazenados com o objeto quando este é fechado—crie propriedades que não sejam data para armazená-las, conforme mostrado no exemplo a seguir. so.favoriteColor = "azul"; so.favoriteNightClub = "The Bluenote Tavern"; so.favoriteSong = "Azul"; Exemplo O exemplo a seguir define o fluxo atual para a seleção do usuário. curStream = _root.so.data.msgList[selected].streamName; Consulte também Classe Sound SharedObject.data 675 SharedObject.flush() Disponibilidade Flash Player 6. Uso myLocalSharedObject.flush([minimumDiskSpace]) Parâmetros minimumDiskSpace Inteiro opcional que especifica o número de bytes que deve ser alocado para este objeto. O valor padrão é 0. Retorna Um valor booleano true ou false, ou um valor de seqüência de caracteres "pending" (pendente). • Se o usuário permitir o armazenamento de informações locais para objetos desse domínio e a • • quantidade de espaço alocado for suficiente para armazenar o objeto, o método retornará true. Se você passou um valor para minimumDiskSpace, a quantidade de espaço alocada deve ser pelo menos igual a esse valor para que retorne true. Se o usuário permitir o armazenamento de informações locais para objetos desse domínio, mas a quantidade de espaço alocado não for suficiente para armazenar o objeto, o método retornará "pending" (pendente). Se o usuário negar permanentemente o armazenamento local de informações para objetos desse domínio ou o Flash não conseguir salvar o objeto por qualquer motivo, o método retornará false. Descrição Método; grava imediatamente um objeto compartilhado persistente em um arquivo local. Se você não usar este método, o Flash gravará o objeto compartilhado em um arquivo ao fim de sua sessão, isto é, quando o arquivo SWF for fechado, o objeto compartilhado for jogado no lixo por não conter mais referências ou você chamar o SharedObject.data. Se o método retornar "pending", o Flash Player exibirá uma caixa de diálogo solicitando que o usuário aumente a quantidade de espaço disponível no disco para os objetos deste domínio. Para fornecer espaço para que o objeto compartilhado “cresça” quando salvo no futuro, evitando, assim, valores de retorno "pending", passe um valor para minimumDiskSpace. Quando o Flash tentar gravar o arquivo, procurará o número de bytes passados para minimumDiskSpace, em vez de buscar somente pelo espaço suficiente para salvar o objeto compartilhado em seu tamanho atual. Por exemplo, se você espera que um objeto compartilhado cresça até, no máximo, 500 bytes, mesmo que comece bem menor, passe 500 para minimumDiskSpace. Se o Flash solicitar que o usuário aloque espaço no disco para o objeto compartilhado, solicitará 500 bytes. Após o usuário alocar a quantidade solicitada de espaço, o Flash não precisará solicitar mais espaço em tentativas futuras para aprovar o objeto (contanto que seu tamanho não ultrapasse 500 bytes). Após o usuário responder a uma caixa de diálogo, o método é chamado novamente e retorna true ou false; além disso, SharedObject.onStatus() é chamado com a propriedade code com o valor SharedObject.Flush.Success ou SharedObject.Flush.Failed. Para obter mais informações, consulte “Considerações sobre o espaço do disco local” na página 671. 676 Capítulo 12: Dicionário do ActionScript Exemplo A função a seguir obtém um objeto compartilhado, SO, e preenche propriedades graváveis com configurações fornecidas pelo usuário. Finalmente, o flush() é chamado para salvar as configurações e utiliza no mínimo 1.000 bytes de espaço no disco. this.SyncSettingsCore=function(soname, override, settings) { var SO=SharedObject.getLocal(soname, "http://www.mydomain.com/app/sys"); // Índice da lista de configurações var i; // Para cada valor especificado nas configurações: // Se valor de override é true, a persistência é definida pelo valor fornecido. // Se o valor de override é false, busca a definição da persistência, a menos que // não exista. Neste caso, utiliza-se o valor fornecido. for (i in settings) { if (override || (SO.data[i] == null)) { SO.data[i]= settings[i]; } else { settings[i]= SO.data[i]; } } SO.flush(1000); } SharedObject.flush() 677 SharedObject.getLocal() Disponibilidade Flash Player 6. Uso SharedObject.getLocal(objectName [, localPath]) Observação: A sintaxe correta é SharedObject.getLocal. Para atribuir o objeto a uma variável, use uma sintaxe como myLocalSO = SharedObject.getLocal. Parâmetros Nome do objeto. O nome pode incluir barras (/); por exemplo, trabalho/ um nome adequado. Não é permitido incluir espaços no nome do objeto compartilhado, bem como os seguintes caracteres: objectName enderecos é ~ % & \ ; : " ' , < > ? # Parâmetro de seqüência de caracteres opcional que especifica o caminho integral ou parcial para o arquivo SWF que criou o objeto compartilhado, e que determina onde o objeto compartilhado será armazenamento localmente. O valor padrão é o caminho completo. localPath Retorna Referência a um objeto compartilhado persistente localmente que está disponível somente para o cliente atual. Se o Flash não conseguir criar ou localizar o objeto compartilhado (por exemplo, se localPath foi especificado mas tal diretório não existir), o método retornará null. Descrição Método; retorna uma referência a um objeto compartilhado persistente que está disponível somente para o cliente atual. Para evitar conflitos entre nomes, o Flash examina o local do arquivo SWF que está criando o objeto compartilhado. Por exemplo, se um SWF em www.myCompany.com/apps/ stockwatcher.swf criar um objeto compartilhado chamado portfolio, não haverá conflito com outro objeto chamado portfolio criado por um SWF em www.yourCompany.com/ photoshoot.swf, porque os SWFs pertencem a dois diretórios diferentes. 678 Capítulo 12: Dicionário do ActionScript Exemplo O exemplo a seguir salva o último quadro inserido pelo usuário em um objeto compartilhado local chamado kookie. // Obtém o kookie so = sharedobject.getlocal("kookie"); // Obtém o usuário do kookie e vai para o número do quadro salvo por este usuário. if (so.data.user != undefined) { this.user = so.data.user; this.gotoAndStop(so.data.frame); } O bloco de códigos a seguir é colocado em cada quadro do SWF. // A cada quadro, a função rememberme é chamada para salvar o número do quadro. function rememberme() { so.data.frame=this._currentFrame; so.data.user="João"; } SharedObject.getLocal() 679 SharedObject.getSize() Disponibilidade Flash Player 6. Uso myLocalSharedObject.getSize() Parâmetros Nenhum. Retorna Um valor numérico, em bytes, que especifica o tamanho do objeto compartilhado. Descrição Método; obtém o tamanho atual do objeto compartilhado, em bytes. O Flash calcula o tamanho de um objeto compartilhado analisando cada uma de suas propriedades de dados. Quanto mais propriedades de dados o objeto possuir, mais tempo será necessário para avaliar seu tamanho. Por isso, a avaliação do tamanho do objeto pode ter um custo de processamento significativo. Portanto, você pode evitar usar esse método quando não precisar especificamente dele. Exemplo O exemplo a seguir obtém o tamanho do objeto compartilhado so. var soSize= this.so.getSize(); SharedObject.onStatus() Disponibilidade Flash Player 6. Uso myLocalSharedObject.onStatus = function(infoObject) { // seus comandos vão aqui } Parâmetros infoObject Um parâmetro definido de acordo com a mensagem de status. Retorna Nada. Descrição Manipulador de eventos; chamado sempre que um erro, aviso ou nota informativa é postado para o objeto compartilhado. Se você quiser responder a esse manipulador de eventos, deverá criar uma função para processar o objeto de informações gerado pelo objeto compartilhado. Consulte também SharedObject.getLocal() 680 Capítulo 12: Dicionário do ActionScript Classe Sound Disponibilidade Flash Player 5. Descrição A classe Sound permite controlar o som em um filme. É possível adicionar sons a um clipe de filme da biblioteca enquanto o filme estiver sendo reproduzido e controlar esses sons. Se não for especificado um destino durante a criação de um novo objeto Sound, será possível usar os métodos para controlar o som de todo o filme. Você deve usar o construtor new Sound para criar um objeto Sound antes de chamar os métodos da classe Sound. Resumo dos métodos da classe Sound Método Descrição Sound.attachSound() Anexa o som especificado no parâmetro. Sound.getBytesLoaded() Retorna o número de bytes carregados para o som especificado. Sound.getBytesTotal() Retorna o tamanho do som em bytes. Sound.getPan() Retorna o valor da chamada setPan() anterior. Sound.getTransform() Retorna o valor da chamada setTransform() anterior. Sound.getVolume() Retorna o valor da chamada setVolume() anterior. Sound.loadSound() Carrega um arquivo MP3 no Flash Player. Sound.setPan() Define a distribuição esquerda/direita do som. Sound.setTransform() Define a quantidade de cada canal, esquerdo e direito, a ser reproduzido em cada alto-falante. Sound.setVolume() Define o nível de volume de um som. Sound.start() Começa a reproduzir um som desde o início ou, opcionalmente, de um ponto de deslocamento definido no parâmetro. Sound.stop() Pára o som especificado ou todos os sons em reprodução no momento. Resumo das propriedades do objeto Sound Propriedade Descrição Sound.duration Tamanho de um som em milissegundos. Sound.ID3 Fornece acesso aos metadados que compõem um arquivo MP3. Sound.position Número de milissegundos reproduzidos por um som. Classe Sound 681 Resumo dos manipuladores de eventos da classe Sound Identificador de eventos Descrição Sound.onID3 Chamado sempre que novos dados ID3 são disponibilizados. Sound.onLoad Chamado quando um som é carregado. Sound.onSoundComplete Chamado quando a reprodução de um som é interrompida. Construtor para a classe Sound Disponibilidade Flash Player 5. Uso new Sound([destino]) Parâmetros destino A instância de clipe de filme em que o objeto Sound opera. Este parâmetro é opcional. Retorna Nada. Descrição Construtor; cria um novo objeto Sound para um clipe de filme especificado. Se não for especificada uma instância de destino, o objeto Sound controlará todos os sons do filme. Exemplo O exemplo a seguir cria uma nova instância do objeto Sound chamada global_sound. A segunda linha chama setVolume() e ajusta o volume de todos os sons do filme em 50%. global_sound = new Sound(); global_sound.setVolume(50); O exemplo a seguir cria uma nova instância do objeto Sound, passa para ela o clipe de filme de destino my_mc e chama o método start que inicia qualquer som em my_mc. movie_sound = new Sound(my_mc); movie_sound.start(); 682 Capítulo 12: Dicionário do ActionScript Sound.attachSound() Disponibilidade Flash Player 5. Uso my_sound.attachSound("idName") Parâmetros Identificador na biblioteca de um som exportado. O identificador está localizado na caixa de diálogo Linkage Properties (Propriedades de vinculação). idName Retorna Nada. Descrição Método; anexa o som especificado no parâmetro Nome_id ao objeto Sound especificado. O som deve estar na biblioteca do arquivo SWF atual e ser especificado para exportação na caixa de diálogo Linkage Properties. Você deve chamar Sound.start() para iniciar a reprodução do som. Para certificar-se de que o som possa ser controlado a partir de qualquer cena do arquivo SWF, coloque-o na Timeline (Linha de tempo) do SWF. Sound.duration Disponibilidade Flash Player 6. Uso my_sound.duration Descrição Propriedade (somente de leitura); a duração de um som em milissegundos. Sound.duration 683 Sound.getBytesLoaded() Disponibilidade Flash Player 6. Uso my_sound.getBytesLoaded() Parâmetros Nenhum. Retorna Um inteiro que indica o número de bytes carregados. Descrição Método; retorna o número de bytes carregados (transmitidos) do objeto Sound especificado. É possível comparar o valor de getBytesLoaded() ao valor de getBytesTotal() para determinar que porcentagem de um som foi carregada. Consulte também Sound.getBytesTotal() Sound.getBytesTotal() Disponibilidade Flash Player 6. Uso my_sound.getBytesTotal() Parâmetros Nenhum. Retorna Um inteiro indicando o tamanho total, em bytes, do objeto Sound especificado. Descrição Método; retorna o tamanho, em bytes, do objeto Sound especificado. Consulte também Sound.getBytesLoaded() 684 Capítulo 12: Dicionário do ActionScript Sound.getPan() Disponibilidade Flash Player 5. Uso my_sound.getPan(); Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o nível de balanço definido na última chamada setPan() como um inteiro de -100 (esquerda) a 100 (direita). O valor 0 define igualmente os canais da direita e da esquerda. A configuração do balanço controla a distribuição entre esquerda e direita dos sons atuais e futuros em um arquivo SWF. Esse método é cumulativo com setVolume() ou setTransform(). Consulte também Sound.setPan() Sound.getTransform() Disponibilidade Flash Player 5. Uso my_sound.getTransform(); Parâmetros Nenhum. Retorna Um objeto com propriedades que contêm os valores percentuais de canais para o objeto sound específico. Descrição Método; retorna as informações de transformação do som do objeto Sound especificado na última chamada Sound.setTransform(). Sound.getTransform() 685 Sound.getVolume() Disponibilidade Flash Player 5. Uso my_sound.getVolume() Parâmetros Nenhum. Retorna Um inteiro. Descrição Método; retorna o nível do volume de som como um inteiro de 0 a 100, no qual 0 é sem volume e 100 é o volume total. A configuração padrão é 100. Consulte também Sound.setVolume() Sound.ID3 Disponibilidade Flash Player 6; comportamento atualizado no Flash Player 7. Observação: O Flash Player 6 versão 40 e posteriores usam a propriedade Sound.id3 para suportar tags ID3v1 e ID3v1.1. O Flash Player 7 inclui o suporte para tags ID3v2, especificamente v2.3 e v2.4. Para compatibilidade com versões anteriores, há suporte para Sound.id3 e Sound.ID3. Uso my_sound.ID3 Descrição Propriedade (somente de leitura); fornece acesso aos metadados que compõem um arquivo MP3. Os arquivos de som MP3 podem conter tags ID3, que fornecem metadados sobre o arquivo. Se um som MP3 que você carregar usar Sound.attachSound() ou Sound.loadSound() contiver tags ID3, você pode consultar essas propriedades. Somente tags ID3 que utilizam o conjunto de caracteres UTF-8 são suportadas. A tabela a seguir lista as tags ID3v2 padrão e o tipo de conteúdo que as tags representam; consulte-as no formato my_sound.ID3.COMM, my_sound.ID3.TIME e assim por diante. Arquivos MP3 podem conter tags diferentes daquelas contidas na tabela; Sound.ID3 também fornece acesso àquelas tags. 686 Capítulo 12: Dicionário do ActionScript Propriedade Descrição COMM Comentário TALB Título de disco/filme/show TBPM Batidas por minuto TCOM Compositor TCON Tipo de conteúdo TCOP Mensagem sobre copyright TDAT Date TDLY Atraso da lista de reprodução TENC Codificado por TEXT Letrista/escritor TFLT Tipo de arquivo TIME Hora TIT1 Descrição do grupo de conteúdo TIT2 Título/nome da música/descrição do conteúdo TIT3 Subtítulo/refinamento da descrição TKEY Nota musical inicial TLAN Idiomas TLEN Duração TMED Tipo de mídia TOAL Título original do disco/filme/show TOFN Nome de arquivo original TOLY Letristas/escritores originais TOPE Artistas originais TORY Ano de lançamento original TOWN Proprietário/licenciado do arquivo TPE1 Vocalistas/solistas TPE2 Banda/orquestra/acompanhamento TPE3 Detalhes do regente/artista TPE4 Interpretado, remixado ou modificado por TPOS Parte de um conjunto TPUB Editora TRCK Número da faixa/posição no conjunto TRDA Datas de gravação Sound.ID3 687 Propriedade Descrição TRSN Nome da estação de rádio da internet TRSO Proprietário da estação de rádio da internet TSIZ Tamanho TSRC ISRC (código de gravação internacional padrão) TSSE Software/hardware e configurações usados para codificação TYER Ano WXXX Quadro de links de URL O Flash Player 6 oferecia suporte para várias tags ID3v1. Se o arquivo MP3 não possuir essas tags mas tiver tags ID3v2 correspondentes, estas serão copiadas para as propriedades IDv1 conforme apresentado na tabela a seguir. Esse processo fornece compatibilidade reversa com scripts já gravados que lêem propriedades ID3v1. Tag ID3v2 Propriedade ID3v1 correspondente COMM Sound.id3.comment TALB Sound.id3.album TCON Sound.id3.genre TIT2 Sound.id3.songname TPE1 Sound.id3.artist TRCK Sound.id3.track TYER Sound.id3.year Exemplo Consulte Sound.onID3 para obter um exemplo da utilização dessa propriedade. Consulte também Sound.attachSound(), Sound.loadSound() 688 Capítulo 12: Dicionário do ActionScript Sound.loadSound() Disponibilidade Flash Player 6. Uso my_sound.loadSound("url", isStreaming) Parâmetros url Local de um arquivo de som MP3 no servidor. isStreaming Valor evento (false). booleano que indica se o som é um fluxo de som (true) ou um som de Retorna Nada. Descrição Método; carrega um arquivo MP3 em um objeto Sound. É possível usar o parâmetro isSteaming para indicar se o som é de evento ou um fluxo de som. Os eventos de som são totalmente carregados antes de serem reproduzidos. Eles são gerenciados pela classe Sound do ActionScript e respondem a todos os métodos e propriedades dessa classe. Os fluxos de som são reproduzidos durante o download. A reprodução começa após o recebimento de dados suficientes para iniciar o descompactador. Todos os MP3s (evento ou fluxo) carregados com esse método são salvos no cache de arquivos do navegador do usuário. Exemplo O exemplo a seguir carrega um evento de som: my_sound.loadSound( "http://serverpath:port/mp3filename", false); O exemplo a seguir carrega um fluxo de som: my_sound.loadSound( "http://serverpath:port/mp3filename", true); Consulte também Sound.onLoad Sound.loadSound() 689 Sound.onID3 Disponibilidade Flash Player 7. Uso my_sound.onID3 = function(){ // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado sempre que novos dados ID3 estão disponíveis para um MP3 que você carrega usando Sound.attachSound() ou Sound.loadSound(). Esse manipulador fornece acesso aos dados ID3 sem realizar polling (consultas). Se ambas as tags ID3v1 e ID3v2 estiverem presentes em um arquivo, esse manipulador será chamado duas vezes. Exemplo O exemplo a seguir apresenta as propriedades ID3 de song.mp3 no painel Output (Saída). my_sound = new Sound(); my_sound.onID3 = function(){ for( var prop in my_sound.ID3 ){ trace( prop + " : "+ my_sound.ID3[prop] ); } } my_sound.loadSound("song.mp3", false); Consulte também Sound.attachSound(), Sound.ID3, Sound.loadSound() 690 Capítulo 12: Dicionário do ActionScript Sound.onLoad Disponibilidade Flash Player 6. Uso my_sound.onLoad = function(success){ // seus comandos vão aqui } Parâmetros success Um valor booleano true se my_sound tiver sido carregado com sucesso, caso contrário, false. Retorna Nada. Descrição Identificador de eventos; chamado automaticamente quando um som é carregado. Você deve criar a função que será executada quando esse manipulador for chamado. Você pode usar uma função anônima ou uma função com nome (para obter um exemplo de cada uma, consulte Sound.onSoundComplete). Defina esse manipulador antes de chamar my_sound.loadSound(). Consulte também Sound.loadSound() Sound.onLoad 691 Sound.onSoundComplete Disponibilidade Flash Player 6. Uso my_sound.onSoundComplete = function(){ // seus comandos vão aqui } Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado automaticamente quando a reprodução de um som for concluída. Use esse manipulador para ativar eventos em um arquivo SWF quando a reprodução de um som for concluída. Você deve criar a função que será executada quando esse manipulador for chamado. É possível usar uma função anônima ou uma função nomeada. Exemplo Uso 1: O exemplo a seguir usa uma função anônima: my_sound = new Sound(); my_sound.attachSound("mySoundID"); my_sound.onSoundComplete = function() { trace("mySoundID concluído"); } my_sound.start(); Uso 2: O exemplo a seguir usa uma função com nome: function callback1() { trace("mySoundID concluído"); } my_sound = new Sound(); my_sound.attachSound("mySoundID"); my_sound.onSoundComplete = callback1; my_sound.start(); Consulte também Sound.onLoad 692 Capítulo 12: Dicionário do ActionScript Sound.position Disponibilidade Flash Player 6. Uso my_sound.position Descrição Propriedade (somente de leitura); tempo em milissegundos de reprodução de um som. Se o som for repetido, a posição será redefinida como 0 no início de cada loop. Sound.setPan() Disponibilidade Flash Player 5. Uso my_sound.setPan(balanço); Parâmetros Um inteiro que especifica a distribuição esquerda-direita de um som. O intervalo de valores válidos é de -100 a 100, no qual -100 usa somente o canal esquerdo, 100 usa somente o canal direito e 0 distribui o som uniformemente entre os dois canais. pan Retorna Um inteiro. Descrição Método; determina como o som é reproduzido nos canais esquerdo e direito (alto-falantes). No caso de sons mono, pan determina o alto-falante (esquerdo ou direito) pelo qual o som passa. Exemplo O exemplo a seguir cria um objeto Sound chamado my_sound e anexa um som ao identificador L7 da biblioteca. Ele também chama setVolume() e setPan() para controlar o som L7. onClipEvent(mouseDown) { // cria um objeto de som my_sound = new Sound(this); // anexa um som da biblioteca my_sound.attachSound("L7"); //define o volume como 50% my_sound.setVolume(50); //desliga o som no canal direito my_sound.setPan(-100); //inicia 30 segundos no som e o reproduz 5 vezes my_sound.start(30, 5); Consulte também Sound.attachSound(), Sound.setPan(), Sound.setTransform(), Sound.setVolume(), Sound.start() Sound.setPan() 693 Sound.setTransform() Disponibilidade Flash Player 5. Uso my_sound.setTransform(soundTransformObject) Parâmetros soundTransformObject Um Objeto criado com o construtor para a classe Object genérica. Retorna Nada. Descrição Método; define as informações de transformação ou de “distribuição” do som de um objeto Sound. O parâmetro soundTransformObject é um objeto criado por meio do método construtor da classe Object genérica com parâmetros que especificam como o som é distribuído para os canais esquerdo e direito (alto-falantes). Os sons ocupam quantidade considerável de espaço em disco e memória. Como o som estéreo usa duas vezes mais dados do que os sons mono, geralmente é melhor usar sons mono de 6 bits de 22 KHz. Você pode usar o método setTransform() para reproduzir sons mono como estéreo, sons estéreo como mono e para adicionar efeitos de som interessantes. Os parâmetros do soundTransformObject são os seguintes: 11 Uma porcentagem que especifica a quantidade de som do canal esquerdo a ser reproduzida no alto-falante esquerdo (de 0 a 100). lr Uma porcentagem que especifica a quantidade de som do canal direito a ser reproduzida no alto-falante esquerdo (0–100). rr Uma porcentagem que especifica a quantidade de som do canal direito a ser reproduzida no alto-falante direito (0–100). rl Uma porcentagem que especifica a quantidade de som do canal esquerdo a ser reproduzida no alto-falante direito (0–100). O resultado líquido dos parâmetros é representado pela seguinte fórmula: leftOutput = left_input * ll + right_input * lr rightOutput = right_input * rr + left_input * rl Os valores para left_input ou right_input são determinados pelo tipo (estéreo ou mono) do som do arquivo SWF. 694 Capítulo 12: Dicionário do ActionScript Os sons estéreo dividem a entrada de som uniformemente entre os alto-falantes esquerdo e direito e, por padrão, têm as seguintes configurações de transformação: ll lr rr rl = = = = 100 0 100 0 Os sons mono reproduzem toda a entrada de som no alto-falante esquerdo e, por padrão, têm as seguintes configurações de transformação: ll lr rr rl = = = = 100 100 0 0 Exemplo O exemplo a seguir ilustra uma configuração que pode ser obtida com o método setTransform(), mas não com os métodos setVolume() ou setPan(), mesmo que estejam combinados. O código abaixo cria um novo objeto soundTransformObject e define suas propriedades para que o som de ambos os canais seja reproduzido somente no canal esquerdo. mySoundTransformObject = new Object; mySoundTransformObject.ll = 100; mySoundTransformObject.lr = 100; mySoundTransformObject.rr = 0; mySoundTransformObject.rl = 0; Para aplicar o objeto soundTransformObject a um objeto Sound, é necessário passar o objeto para Sound usando o método setTransform() da seguinte maneira: my_sound.setTransform(mySoundTransformObject); O exemplo a seguir reproduz um som estéreo como mono; soundTransformObjectMono tem os seguintes parâmetros: mySoundTransformObjectMono = new Object; mySoundTransformObjectMono.ll = 50; mySoundTransformObjectMono.lr = 50; mySoundTransformObjectMono.rr = 50; mySoundTransformObjectMono.rl = 50; my_sound.setTransform(soundTransformObjectMono); Este exemplo reproduz o canal esquerdo na metade de sua capacidade e adiciona o restante do canal esquerdo ao canal direito; soundTransformObjectHalf tem os seguintes parâmetros: mySoundTransformObjectHalf = new Object; mySoundTransformObjectHalf.ll = 50; mySoundTransformObjectHalf.lr = 0; mySoundTransformObjectHalf.rr = 100; mySoundTransformObjectHalf.rl = 50; my_sound.setTransform(soundTransformObjectHalf); Consulte também Classe Object Sound.setTransform() 695 Sound.setVolume() Disponibilidade Flash Player 5. Uso my_sound.setVolume(volume) Parâmetros Um número de 0 a 100 que representa um nível de volume. 100 é o volume total e 0 é nenhum volume. A configuração padrão é 100. volume Retorna Nada. Descrição Método; define o volume do objeto Sound. Exemplo O exemplo a seguir define o volume em 50% e, com o tempo, transfere o som do alto-falante esquerdo para o direito: onClipEvent(load){ i = -100; my_sound = new Sound(); my_sound.setVolume(50); } onClipEvent (enterFrame) { if (i <= 100) { my_sound.setPan(i++); } } Consulte também Sound.setPan(), Sound.setTransform() 696 Capítulo 12: Dicionário do ActionScript Sound.start() Disponibilidade Flash Player 5. Uso my_sound.start([secondOffset, loop]) Parâmetros Um parâmetro opcional que permite começar a reproduzir o som em um ponto específico. Por exemplo, no caso de um som de 30 segundos que deva iniciar a reprodução no meio, especifique 15 para o parâmetro secondOffset. O som não é atrasado 15 segundos; em vez disso, ele inicia a sua reprodução na marca de 15 segundos. secondOffset Um parâmetro opcional que permite especificar quantas vezes o som deve ser reproduzido consecutivamente. loop Retorna Nada. Descrição Método; se nenhum parâmetro estiver especificado, ele iniciará a reprodução do último som anexado desde o início ou em um ponto especificado pelo parâmetro secondOffset. Consulte também Sound.stop() Sound.stop() Disponibilidade Flash Player 5. Uso my_sound.stop(["nomeId"]) Parâmetros Uma parâmetro opcional que especifica a interrupção da reprodução de determinado som. O parâmetro Nome_id deve ser colocado entre aspas (" "). Nome_id Retorna Nada. Descrição Método; interrompe todos os sons em reprodução no momento se nenhum parâmetro estiver especificado, ou somente o som especificado no parâmetro Nome_id. Consulte também Sound.start() Sound.stop() 697 _soundbuftime Disponibilidade Flash Player 4. Uso _soundbuftime = integer Parâmetros integer Número de segundos que decorrerão antes que o arquivo SWF inicie o fluxo. Descrição Propriedade (global); estabelece o número de segundos de som de fluxo para o pré-buffer. O valor padrão é 5 segundos. Classe Stage Disponibilidade Flash Player 6. Descrição A classe Stage é uma classe de nível alto cujos métodos, propriedades e manipuladores podem ser acessados com o uso de um construtor. Use os métodos e as propriedades desta classe para acessar e manipular informações sobre os limites de um arquivo SWF. Resumo dos métodos da classe Stage Método Descrição Stage.addListener() Adiciona um objeto ouvinte que detecta quando o SWF é redimensionado. Stage.removeListener() Remove um objeto ouvinte do objeto Stage. Resumo das propriedades do objeto Stage 698 Propriedade Descrição Stage.align Alinhamento do arquivo SWF no exibidor ou navegador. Stage.height Altura do objeto Stage, em pixels. Stage.scaleMode Dimensionamento atual do arquivo SWF. Stage.showMenu Exibe ou oculta os itens padrão do menu Context (Contexto) do Flash Player. Stage.width Largura do objeto Stage, em pixels. Capítulo 12: Dicionário do ActionScript Resumo do manipulador de eventos do objeto Stage Identificador de eventos Descrição Stage.onResize Chamado quando Stage.scaleMode é definido como "noScale" e o SWF é redimensionado. Stage.addListener() Disponibilidade Flash Player 6. Uso Stage.addListener(meu_Ouvinte) Parâmetros myListener Objeto Stage.onResize. que ouve uma notificação de retorno de chamada do evento Retorna Nada. Descrição Método; detecta quando um arquivo SWF é redimensionado (mas somente se Stage.scaleMode - Sem dimensionamento). O método addListener() não funciona com a configuração padrão de dimensionamento de filme ("showAll" - Exibir tudo) nem com outras configurações de dimensionamento ("exactFit"- Ajuste exato e "noBorder"- Sem bordas). = "noScale" Para usar addListener(), crie primeiro um objeto ouvinte. Os objetos ouvintes Stage recebem notificação de Stage.onResize. Exemplo Este exemplo cria um novo objeto ouvinte chamado meu_Ouvinte. Em seguida, usa meu_Ouvinte para chamar onResize e define uma função que será chamada quando onResize for ativado. Finalmente, o código adiciona o objeto meu_Ouvinte à lista de retorno de chamada do objeto Stage. Os objetos ouvintes permitem que vários objetos ouçam notificações de redimensionamento. myListener = new Object(); myListener.onResize = function () { ... } Stage.scaleMode = "noScale" Stage.addListener(meu_Ouvinte); Consulte também Stage.onResize, Stage.removeListener() Stage.addListener() 699 Stage.align Disponibilidade Flash Player 6. Uso Stage.align Descrição Propriedade; indica o alinhamento atual do arquivo SWF no exibidor ou navegador. A tabela a seguir lista os valores da propriedade align. Os valores não listados aqui centralizam o SWF na área do exibidor ou do navegador. Valor Vertical Horizontal "T" superior centro "B" inferior centro "L" centro esquerda "R" centro direita "TL" superior esquerda "TR" superior direita "BL" inferior esquerda "BR" inferior direita Stage.height Disponibilidade Flash Player 6. Uso Stage.height Descrição Propriedade (somente de leitura); indica a altura atual, em pixels, do Stage (Palco). Quando a propriedade Stage.noScale tem o valor true, height representa a altura do Flash Player. Quando o valor Stage.noScale é false (o SWF é dimensionado quando a janela do exibidor é redimensionada), height representa a altura do arquivo SWF. 700 Capítulo 12: Dicionário do ActionScript Stage.onResize Disponibilidade Flash Player 6. Uso myListener.onResize = function(){ // seus comandos vão aqui } Parâmetros Nenhum. Parâmetros Nenhum. Retorna Nada. Descrição Manipulador de eventos; chamado quando Stage.scaleMode é configurado como "noScale" e o SWF é redimensionado. É possível usar este manipulador de eventos para escrever uma função que disponha os objetos no Stage (Palco) quando um SWF for redimensionado. Exemplo Stage.scaleMode = "noScale" myListener = new Object(); myListener.onResize = function () { trace("O tamanho do palco é agora " + Stage.width + " por " + Stage.height); } Stage.addListener(meu_Ouvinte); // depois, chama Stage.removeListener(myListener) Consulte também Stage.addListener(), Stage.removeListener() Stage.onResize 701 Stage.removeListener() Disponibilidade Flash Player 6. Uso Stage.removeListener(meu_Ouvinte) Parâmetros myListener Um addListener(). objeto adicionado à lista de retorno de chamada de um objeto com o método Retorna Um valor booleano. Descrição Método; remove um objeto ouvinte criado com addListener(). Consulte também Stage.addListener() Stage.scaleMode Disponibilidade Flash Player 6. Uso Stage.scaleMode = "value" Descrição Propriedade; indica o dimensionamento atual do filme do arquivo SWF dentro do Stage. A propriedade scaleMode impõe um modo de dimensionamento específico para o SWF. Como padrão, o SWF usa os parâmetros HTML definidos na caixa de diálogo Publish Settings (Configurações de publicação). A propriedade scaleMode pode usar os valores "exactFit", "showAll", "noBorder" e Qualquer outro valor define a propriedade scaleMode como o padrão "showAll". "noScale". 702 Capítulo 12: Dicionário do ActionScript Stage.showMenu Disponibilidade Flash Player 6. Uso Stage.showMenu Descrição Propriedade (leitura-gravação); especifica se os itens padrão serão exibidos ou ocultados no menu Context do Flash Player. Se showMenu for definido como true (o padrão), todos os itens do menu contextual aparecerão. Se showMenu for definido como false, somente o item Settings (Configurações) aparecerá. Consulte também Classe ContextMenu, Classe ContextMenuItem Stage.width Disponibilidade Flash Player 6. Uso Stage.width Descrição Propriedade (somente de leitura); indica a altura atual, em pixels, do Stage (Palco). Quando o valor de Stage.noScale é true, a propriedade width representa a largura do exibidor. Quando o valor de Stage.noScale é false (o SWF será dimensionado quando a janela do exibidor for redimensionada), width representa a largura do arquivo SWF. Stage.width 703 startDrag() Disponibilidade Flash Player 4. Uso startDrag(destino,[bloqueio ,esquerdo , superior , direito, inferior]) Parâmetros destino O caminho de destino do clipe de filme a ser arrastado. bloqueio Um valor booleano que especifica se o clipe de filme a ser arrastado está bloqueado no centro da posição do mouse (true) ou no ponto onde o usuário clicou pela primeira vez no clipe de filme (false). Este parâmetro é opcional. esquerdo, superior, direito, inferior Valores relativos às coordenadas do pai do clipe de filme que especificam um retângulo de restrição para o clipe de filme. Esses parâmetros são opcionais. Retorna Nada. Descrição Função; torna o clipe de filme de destino arrastável enquanto o filme estiver sendo exibido. Somente um clipe de filme pode ser arrastado de cada vez. Quando uma operação startDrag() é executada, o clipe de filme permanecerá arrastável até que explicitamente esta característica seja cancelada por uma chamada stopDrag() ou até que uma ação startDrag() para outro clipe de filme seja chamada. Exemplo Para criar um clipe de filme que os usuários podem posicionar em qualquer local, anexe as ações startDrag() e stopDrag() a um botão dentro do clipe de filme. on(press){ startDrag(this,true); } on (release) { stopDrag(); } Consulte também MovieClip._droptarget, MovieClip.startDrag(), stopDrag() 704 Capítulo 12: Dicionário do ActionScript static Para obter as informações mais recentes sobre este tópico, clique no botão Update (Atualizar) na parte superior da guia Help (Ajuda). Disponibilidade Flash Player 6. Uso Observação: Para usar esta palavra-chave, é necessário especificar ActionScript 2 e Flash Player 6 ou Flash Player 7 na guia Flash da caixa de diálogo Publish Settings do arquivo FLA. Essa palavrachave é suportada somente quando usada em arquivos de scripts externos, não em scripts escritos no painel Actions (Ações). Descrição Para obter mais informações, consulte “Membros de instâncias e classes” na página 169. stop() Disponibilidade Flash 2. Uso stop() Parâmetros Nenhum. Retorna Nada. Descrição Função; encerra o arquivo SWF que está sendo reproduzido no momento. A utilidade mais comum dessa ação é controlar clipes de filme com botões. stop() 705 stopAllSounds() Disponibilidade Flash Player 3. Uso stopAllSounds() Parâmetros Nenhum. Retorna Nada. Descrição Função; encerra a reprodução de todos os sons de um arquivo SWF sem encerrar a exibição do filme. Sons definidos como "em streaming" voltarão a ser reproduzidos quando a reprodução for movida sobre os quadros em que se encontram. Exemplo O código a seguir pode ser aplicado a um botão que, quando clicado, silencia todos os sons do arquivo SWF. on (release) { stopAllSounds(); } Consulte também Classe Sound 706 Capítulo 12: Dicionário do ActionScript stopDrag() Disponibilidade Flash Player 4. Uso stopDrag() Parâmetros Nenhum. Retorna Nada. Descrição Função; encerra a operação de arraste em andamento. Exemplo Este código encerra a ação de arraste na instância my_mc quando o usuário libera o botão do mouse: on(press){ startDrag("my_mc"); } on (release) { stopdrag(); } Consulte também MovieClip._droptarget, MovieClip.stopDrag(), startDrag() stopDrag() 707 " " (delimitador de seqüência de caracteres) Disponibilidade Flash Player 4. Uso "texto" Parâmetros texto Um caractere. Retorna Nada. Descrição Delimitador de seqüência de caracteres; quando usadas antes e depois de caracteres, as aspas indicam que os caracteres têm um valor literal e são consideradas como uma seqüência de caracteres, e não como variável, valor numérico ou outro elemento do ActionScript. Exemplo Este exemplo usa aspas para indicar que o valor da variável yourGuess é a seqüência de caracteres literal “Prince Edward Island” e não o nome de uma variável. O valor province é uma variável, e não uma literal; para determinar o valor de province, é necessário localizar o valor de yourGuess. yourGuess = "Prince Edward Island"; on (release) { estado = seuPalpite; trace(estado); } // Mostra Santa Catarina no Painel Output (saída) Consulte também Classe String, String() 708 Capítulo 12: Dicionário do ActionScript Classe String Disponibilidade Flash Player 5 (tornou-se um objeto nativo no Flash Player 6, o que melhorou significativamente o desempenho). Descrição A classe String é um envoltório para o tipo de dados primitivo de seqüência de caracteres e fornece métodos e propriedades que permitem manipular valores do tipo primitivo de seqüências de caracteres. É possível converter o valor de qualquer objeto em uma seqüência de caracteres usando a função String(). Todos os métodos da classe String, exceto concat(), fromCharCode(), slice(), e substr(), são genéricos. Isso significa que os próprios métodos podem chamar this.toString() antes de permitir suas operações, e podem ser usados com outros objetos que não sejam objetos String. Como todos