Curso AS3

Chamado uma função em um link Html no Flash

Escrendo o curso de Actionscript, mais especificamente o tópico que aborda o protocolo asfunction, e por ser pouco conhecido, decidi escrever sobre, pois pode vir a ser útil para muitos desenvolvedores.

Um caso: Hoje é muito comum sites em Flash gerados dinâmicamente a partir de um banco de dados, pode ser que o seu cliente peça para poder linkar uma seção do Flash através do admin, onde o cliente havia sido instruído em como linkar uma página Html, ex. <a href="http://...">Link</a>. A menos que o site possua o recurso de acesso através da URL e sem refresh, este pedido poderia se tornar uma tremenda dor de cabeça, mas graça ao protocolo asfunction, epecífico do Flash, você pode chamar uma função presente no Flash em um link Html no Flash. A sintaxe do protocolo é a seguinte:

asfunction:functionName, parâmetro 1, parâmetro 2, ... parâmetro n

Exemplo

this.createTextField("texto1", this.getNextHighestDepth(), 10, 0, 0, 0);
this.texto1.border = true;
this.texto1.autoSize = "left";
this.texto1.html = true;
this.texto1.htmlText = "<a href='asfunction:trace,Link no texto chamando uma função no Flash!'>Texto asfunction.</a>";

No exemplo foi chamada uma função global do Flash, mas você pode chamar uma função que você criou.

25 Responses to “Chamado uma função em um link Html no Flash”

  1. Luca Marçal Says:

    legal cara eu já conhecia mas fazia um tempo que não usava, util para muitas coisas.. abraços..

  2. Raphael Nikson Says:

    Cara, engraçado.. esses dias tava precisando muito disso e não tinha noção como fazer..

    Ótimo post.. simples e bem educativo

    Abraço

  3. Eduardo Says:

    Meu tem como eu beijar sua bunda?……..rsrsrsrs

    Essa função me ajudou na hora certa, valeu mesmo.

  4. Erick Souza Says:

    Hahaha, por favor, nem pense nisto, o “valeu” já é o bastante! :D

    Obrigado pelo feedback!

  5. GeJoR Says:

    Nossa muito bom isso! Em todos esses sites de flash não tem matéria como essas, eles ensinam isso usando javascript e outros modos bemm mais complexos !! Meus parabens…. agora…. como eu faço p executar mais de uma functionName ao invez de mais de um parametro?

    por exemplo quero que ele de um trace, de um gotoAndPlay(1); e que possa setar a varTeste = 1;

    Sempre preciso disso mas ai faço o site puxando uma pagina em html ao invez de comunicar com o flash. :)

    Mas ja valeu !! brigadão pela dica e parabens !!!!

  6. André Pasqualini Says:

    Não consegui fazer funcionar passando dois parâmetros, apenas passando um. Quando mando traçar no flash, ele entende que o param1,param2 é a mesma variável.

  7. Rúbia Says:

    Consegui fazer só sem espaço entre as vírgulas e a função…

  8. Rúbia Says:

    ah, realmente, não consegui colocar parâmetros

  9. Lobão Says:

    Gente !!!
    Desculpa por invadir o templo de vcs, sou designer e ilustrador, mas tenho um site que estou fazendo, tem um teste no http://www.lobaodesigner.com/institutoleo/.

    Bom o lance é na página index tem um flash que chama algumas páginas internas que são html e tem um menu , em javascript. Quando se clica no nome do menu por exemplo LeoEduca abre no menu o javascript com subseções.

    A cliente quer que quando se clicar na home, a página venha com o submenu aberto.

    Fiz isso no flash da index :

    on (release) {
    getURL(”javascript:menu(1);(’04_leo_educa.html’)”);
    }

    Alguém sabe como posso fazer funcionar ?!

    muito obrigado desse humilde designer !!!!

  10. Adriano Oliveira Says:

    Erick,
    Graças a pessoas como você, a internet está a cada dia mais profissional… Parabéns pelo tutorial.
    Abraço!

  11. eregilkibly Says:

    Man spricht von erektiler Dysfunktion (= Missfunktion der Erektion, Eine Erektion findet normalerweise statt, wenn ein bestimmter Reiz dazu gegeben sildenafil

  12. Marilyn Says:

    Great Site - really useful information!

  13. klira Says:

    northwest indiana sex offenders registory

  14. Arnie Says:

    sdfgsdfgsdfg
    sdfgsdfgsdf
    gsdfgsdfgsdfgs
    dfgsdfgsdfgsdfgsdf
    hgjghjfghjfghj
    drthrthdrthdrthdr

  15. Kir Says:

    http://nudekimkardashi.blog.drecom.jp

  16. RafaelCB Says:

    Erick cara to com uma duvida aki to começando a usar o flash CS3 eu to mexendo num template e queria saber como colocar um sistema php (de campeonatos de FIFA) no template pode me ajudar?
    desde ja agradeço o espaço e parabens pelo blog, muito bom!

  17. RafaelCB Says:

    ah esqueci do link pra vc ver como é o site!
    http://www.cdf.somee.com/
    eu quero colocar na area de campeonatos qdo clicar la aparecer os botoes de cadastro,tabela de classificação, inscritos…. ai qdo clicar num desses botoes dai mostrar na mesma pagina como ele faz neste link acima

  18. promosyon Says:

    very nice great article thanks

  19. Lou Poulit Says:

    Grande Erick…

    Não tenho um editor Flash, mas estou começando a criar páginas home que basicamente são filmes avi, convertidos para o formato swf, alocadas dentro de um div centralizado na tela. A navegação é feita a partir de imagens/âncora posicionadas absolutamente em relação a este div (relativo).

    Pois bem amigo, a questão que está me enganchando a vida é que o IE8 entende tudo direitinho. Mas o Firefox, posiciona as imagens/âncora em relação às margens da tela e não em relação ao div que contém o flash. Como vc já deve ter entendido, assim, quando alguém abrir a página com o Fire numa tela de dimensões diferentes da minha, os links estarão noutra posição. A solução de jogar toda a página para um canto da tela mudaria o conceito de estética (trata-se de um flash de 720×480 pixels) e não posso adotá-la porque poderia parecer algo tipo uma fuga.

    Preciso de uma solução para “convencer” o Fire a posicionar as imagens/âncora em cima do flash (sensibilidade para direcionamento) e nas posições corretas, e não quero provocar o ciúme dele dizendo que o Explorer já entendeu…

    Caso vc queira me ajudar, poderá ver meu estudo no seu navegador diretamente do servidor, abrindo a página informada acima como website e clicando em um pequeno link no rodapé: “Estudo HTML/CSS/Flash”.

    E eu, que já me beneficiei dos seus posts numa outra ocasião, lhe ficarei ainda mais grato.

    Grande abraço, mestre.

    Lou Poulit.

  20. Lou Poulit Says:

    Na tentativa de poupá-lo, volto para lhe dizer que a definição na minha folha de estilo de uma única dimensão para o div relativo (container do arquivo swf), no caso a largura em pixels, foi suficiente para que o Fire renderizasse o posicionamento absoluto das âncoras sobrepostas a ele, igual ao Explorer. Se eu entendi corretamente, o Fire precisa disso para renderizar posicionamentos de estilo.

    Agora, como a estilização do posicionamento (CSS) seria desnecessária se eu tivesse feito o swf em um editor Flash, já com as âncoras clicáveis, só falta aprender se essa exigência do Fire é decorrente da opção de usar um arquivo swf e um player plugado específico…

    De toda forma, compartilho a admiração por seu trabalho, que vejo postada por tantas pessoas.

    Grande abraço.

  21. Erick Souza Says:

    Olá Lou,

    Pois é, o desenvolvimento do sites html+css requer paciência e checar as diferenças de browser para browser a todo momente. O IE na verdade é o único que renderiza diferente, um caminho é desenvolver primeiramente para o Firefox e outros, e depois se necessário realizar alterações para que funcione da mesma forma no IE. Eu não recomendo hacks, sempre é possível trabalhar sem eles.

  22. Lou Poulit Says:

    Bom dia, mestre.

    Li algo semelhante à sua sugestão para método de compatibilização num livro sobre CSS do Andy Budd, que certamente vc conhece. Ele próprio no final sai em defesa do IE. Mas bastaria olhar o relatório de navegadores fornecido pelo Analitcs do Google. Não dá pra desprezar o cara, a maioria dos visitantes usa este navegador e não está nem aí para os meus problemas técnicos. Com certeza a maior rapidez com que outros navegadores respondem (ou se adaptam) às novidades só é percebida por pessoas que desenvolvem sites, mas não pelo público em geral.

    Em breve subirei a continuidade do meu estudo, que parece não ter mais volta.

    Mui grato pela sua prestigiosa atenção.

  23. Marcio Says:

    Olá Erick,

    Muito bom seu post.
    Erick eu tenho uma situação muito peculiar: Eu tenho um menu swf que ao clicar nos itens ele direciona para http://localhost/variável que posso acrescentar.
    Quero reutiliza-lo dentro de uma aplicação Flex 3 com o SwfLoader.
    Tentei usar asfunction, mas o navegador sempre tenta achar a função como se fosse uma página.
    Como posso passar parametros para a aplicação flex para executar uma função e evitar que o navegador mude de pagina?

    Obrigado.

  24. sergio ferreira Says:

    E ae… tudo tranquilo? Meu amigo essa dica foi show de bola, mas eu gostaria de saber se possível chamar outra função tipo formulário com
    Assim, eu preciso escrever um texto num SWF e chamar esse mesmo texto em outro SWF. é possível?

  25. Jacson Says:

    Buenas Erick

    Não entendi como fazer funcionar a AS no topo da pagina.
    Quero chamar este link dentro de um mc.

    Exibir mapa ampliado

    Se puder me ajudar

Leave a Reply