leitura do artigo >

25
mar

Debug Session e Bug com Flash Player 9, AS3 e Timeline

Neste post comento sobre um “bug” quando se trabalha com ActionScript 3, Flash Player 9 e Timeline que gera erros difíceis de compreender e trato a solução. Também comento sobre a ferramenta “Debug Session” do Adobe Flash. (Dica do Rafael P)

Comentários (3) Comentários(3) Categorias Action Script3, Destaques

Olá amigos.
Hoje venho comentar um bug no mínimo estranho usando versões de Flash Player 9 e Action Script 3.

O erro consiste em não conseguir identificar um objeto na timeline usando AS3.

O Rafael Pangrácio, um colega e guru foi quem comentou sobre esse erro – no mínimo bizarro – que acontece quando você trabalha a timeline com perfil para Flash Player 9.

Constatando o Erro:

  1. Abra um documento em branco do flash, escolha as3 e no perfil, escolha Flash Player 9.
  2. Desenhe um retângulo qualquer, tranforme em movieclip e instancie como quiser (eu nomeei de “conteudo”)
  3. Entre no movieclip e mova o retângulo do primeiro para o segundo frame, tranforme novamente em movieclip, instancie (eu usei “mymc”), então termos um movieclip com outro movieclip dentro no quadro 2.
  4. Voltando a raíz do palco, digite no painel de ações:
    conteudo.gotoAndStop(2);
    trace(conteudo.mymc);
    trace(conteudo.mymc.name);
  5. Observe o output

erro1

Erro no mínimo estranho, afinal estamos fazendo um processo simples, não poderia retornar esse erro.

Agora, sem alterar nada em actions nem nos movieclips, troque o perfil de exportação, escolha flash player 10. Como na figura abaixo:
fp10

Teste o Filme.
Observe o resultado no output agora:
output2
Veja que agora conseguimos retornar corretamente o objeto e o nome do objeto.

Realmente é um erro estranho e talvez seja apenas um dos indícios que nos levam a migrar nossos projetos o quanto antes para o Flash Player 10.

Observação importante:
Não testei esse problema no Flash CS3, então ainda não sei dizer se é isolado do CS4 ou se é problema com o Flash Player 9 mesmo, afinal o Flash CS3 não nos dá opção de exportar em Flash Player 10.
Se alguém puder – por favor – testar esse mesmo evento usando o Flash CS3 e reportar aqui, fico grato.

Debug Session
Quantas vezes você já se deparou com a seguinte mensagem de erro, que aponta o erro mas infelizmente não diz a linha em que esse erro acontece?

TypeError: Error #1010: Um termo é indefinido e não tem propriedades.
at Untitled_fla::MainTimeline/frame1()

Ele diz que existe erro, diz que está no frame1, mas e a linha? É uma incógnita.
E o Flash tráz uma ferramenta nativa extremamente eficiente para informar a linha em que o erro acontece, é a “Debug Session”.
Uma vez iniciada ela debuga o filme todo informando os erros que acontecem e em que linha se encontram. A debug session não é ativada por padrão, para ativá-la, siga o menu “Debug” > “Begin Remote Debug Session” > “ActionScript 3.0″, como abaixo:
debugsession
Sua janela ficará um pouco diferente da janela comum de teste.
Após isto, teste seu filme usando – ao invés de “Ctrl+Enter” – “Ctrl + Shift + Enter”

Quando você testar o filme e ocorrer um erro, o flash apontará perfeitamente onde ocorreu esse erro, informando a timeline, objeto, o frame e o número da linha, como abaixo:
debugsession2
Repare na linha marcada, onde se lê “MainTimeline::frame1:3″, o debug indica exatamente a linha de código do script que gerou o erro. E um pouco acima ele mostra o script sendo executado.

Esta tela está um pouco modificada para caber, mas uma tela com o preview completo da debug session pode ser vista clicando abaixo:
Clique para visualizar
Em resumo, é sempre bom estar atento às ferramentas nativas do flash, principalmente em questão de desenvolvimento, as vezes parece que estamos usando uma ferramenta com falhas, mas eu confesso que no meu caso muitas vezes é falta de aprofundar-me na mesma.

Espero que as dicas sejam úteis, fica aqui o agradecimento ao Rafael (Vaipi =*) pela dica e a vocês espero que gostem e que lhes sirva.

Contribuição nos comentários do Giovanni o/

Adobe Flash CS3 com ActionScript 3 e Flash Player 9:
Dá o mesmo erro que você comentou.
Adobe Flash CS3 com ActionScript 2 e Flash Player 9:
Funciona corretamente (só que name vai para _name).

Abraço!

Postado em 25-03-2009 por Eder Lima
em Action Script3, Destaques

Share/Save/Bookmark

Comentários

  • Giovanni Silva disse:
    em 30 de março de 2009

    Confirmado. :)

    Adobe Flash CS3 com ActionScript 3 e Flash Player 9:
    Dá o mesmo erro que você comentou.

    Adobe Flash CS3 com ActionScript 2 e Flash Player 9:
    Funciona corretamente (só que name vai para _name).

    Abraço. o/

  • Carlos Gustavo disse:
    em 17 de abril de 2009

    Nossa, que bug mala. Nem colocando eventos, pra só executar depois de tudo carregado, ele funciona. Só não achei no release notes do Flash Player 10 nada que falasse disso.

  • Rodrigo Lucas disse:
    em 8 de maio de 2009

    Bug mesmo, se não der um delay, ele não encontra mesmo.

 Escreva um Comentário

Seu nome

E-mail (não será publicado) (obrigatório)

Website

Comente

Spam protection by WP Captcha-Free