Como criar link para um botão no Flash CS4 ActionScript 3.0

Para aqueles que são novos para ActionScript 3, você pode estar se perguntando o que aconteceu com o getURL () function.

Costumava ser fácil criar links externos no Flash com apenas uma única linha de código dentro do evento onRelease dos seus botões.

O que nos leva a outra pergunta, o que aconteceu com o evento onRelease?

Bom, vamos lá, Para criar um link para outro Site em ActionScript 2, o código seria o seguinte:

Nomedobotao.onRelease = function() {
getURL("http://www.dicasdesuporte.com.br");
}

Ah, se ainda fosse simples assim...

Primeiramente, a forma de lidar com eventos em ActionScript 3.0 é um pouco diferente. Ainda existem as mesmas funções mais são usadas de forma diferente.

Primeiro temos de adicionar um evento ouvinte (EventListener) para o nosso botão, e dentro desse evento ouvinte, dizemos Flash que função responde a esse evento.

Então nós criamos essa função separadamente. Assim:

Nomedobotao.addEventListener(MouseEvent.CLICK, onMouseClick);

function onMouseClick(evento:MouseEvent):void
{
//coloque o código aqui
}


Repare que dentro dos parênteses para o "addEventListener", a primeira coisa que se especifica é o evento Click, que é definido na classe MouseEvent.


A segunda coisa que temos para o nosso evento especificado ouvinte é o nome da função que deseja executar quando o nosso ouvinte evento é accionado. Você pode dar essa função qualquer nome que queira, neste exemplo, cmamamos a função de onMouseClick.


É dentro da função onMouseClick que devemos inserir o nosso código para navegar para um URL externa.


Bom, para aqueles que estão habituados a usar getURL para levá-lo para outro site, é hora de apresentá-lo a um novo método chamado navigateToURL. Claro que agora é um pouco mais detalhado.


Antes de começar substituindo todos os métodos com getURL para navigateToURL, saiba de uma coisa, não vai funcionar. Não maneira que você está acostumado.


Quando usamos à navigateToURL(), você pode tentar escrever uma URL dentro dos parênteses. Mas ele não procura uma URL, em vez disso, ele procura um objeto URLRequest.


A classe URLRequest é o que nos permite comunicar com outros sites e arquivos externos.


O último código seria algo como:


Nomedobotao.addEventListener(MouseEvent.CLICK, onMouseClick);

function onMouseClick(evento:MouseEvent):void
{
var request:URLRequest = new URLRequest("http://www.dicasdesuporte.com.br");
navigateToURL(request, "_blank");
}


Na linha 5, estamos criando um novo objeto URLRequest, no qual estamos armazenando a string contendo a nossa URL. Nós armazenados o URLRequest em uma variável chamada request.


Na linha 6, solicitamos a o método navigateToURL, que aponte para o objeto que acabamos de criar. O "_blank" é opcional, serve apenas se você quiser que o link abra em uma nova janela do navegador.


Qualquer duvida deixe um comentário... ;-)

17 comentários:

Anônimo disse...

Excelente o tópico, mas tenho uma outra duvida, como coloca mais de um botão?
Abraços

Garcia disse...

Olá "Anônimo" rsrs
Para colocar mais de um botão vc precisa repetir todo o processo, apenas colocando outro nome do botão. Cada botão com um nome.
Abraços

Douglas Nari disse...

Olá Garcia, valew plea dica deu tudo certinho, porem nao deu certo ele abrir na mesma pagina, pois ele abre em uma aba nova......
como faço para o link abrir na mesma página

obrigadooo

Linkhub disse...

Cara, me ajuda, tenho um trampo pra entregar amanhã e tinha mais ou menos 10 anos que não mexia com flash.

Estou tentando usar seu código:
Home.addEventListener(MouseEvent.CLICK, onMouseClick);

function onMouseClick(evento:MouseEvent):void
{
var request:URLRequest = new URLRequest("http://www.dicasdesuporte.com.br");
navigateToURL(request, "_blank");
}

Mas só recebo a mensagem:
1061: Chamar um método possivelmente indefinido addEventListener por meio de uma referência com tipo estático Class.

ou

1120: Acesso de propriedade indefinida Home.

Anônimo disse...

para abrir na mesma pagina,

ao invez de

navigateToURL(request, "_blank");

coloca assim

navigateToURL(request, "_self");

André Luiz disse...

Cara to usando este código mas insiste em dar esse erro: "1180: Call to a possibly undefined method navigateURL" pode me ajudar ?

Vania Lemos disse...

Nossa otimo tópico, mas preciso de uma ajuda, para criar com varios botões nao teria que mudar também o nome da var???
Eu só mudei o nome do botão e as minhas paginas estão abrindo todas com as mesma URL a url que coloquei no primeiro...por favor me ajude..rs

Anônimo disse...

valeu pelo codigo, voce intende d+

Paulo Pimentel disse...

Olá, vc falou o seguinte: Para colocar mais de um botão vc precisa repetir todo o processo, apenas colocando outro nome do botão. Cada botão com um nome.

Eu estou fazendo como vc ensinou e está dando errado da a seguinte msg de erro:

1021: Duplicate function definition.

E está apontando para o seguinte código:

function onMouseClick(evento:MouseEvent):void

O que será que está errado no código? Ele tá dando erros apenas pq eu repeti o mesmo processo apenas mudando o nome do botão.

Anônimo disse...

olá achei esse num forum

function abrirUm(Event:MouseEvent) {
// cria a string com o endereço(URL)
var site:String = "http://www.imasters.com.br";
//cria o objeto com o endereço(URL) a ser carregado
var pagina:URLRequest = new URLRequest(site);
//abre a pagina na mesma janela do navegador
navigateToURL(pagina, "_self");
}
this.btn1.addEventListener(MouseEvent.CLICK, abrirUm);

onde "abrirUm" é o nome do botão
e "btn1" a instancia

é só repetir o código e trocar o nome e a instancia,
tudo do mesmo quadro que estão os botoes

até...

Jailson disse...

Parabéns pelo tópico!!

Flaubert CADEIRA DA SILVA JUNIOR disse...

Boa tarde bom estou tendo dificuldades com o link no flash estou usando a action 3.0 e tipo funciona de boa quando copilo na maquina com CRTL+Enter porem quando converto pra web com F12 ou mesmo quando insiro na pagina web ele não reconhece o link tipo vc clica no flash e não da nenhuma ação ...
Se alguem puder me ajudar ficarei grato ja fumacei a cabeça em foruns e não consegui descobrir o que há de errado...

Wesley Kassis disse...

Ola para fazer mais de um botao com esse script é necessario também mudar o nome da função e não apenas o nome do botão.

BOTAO1.addEventListener(MouseEvent.CLICK, FUNCAO1);

function FUNCAO1(evento:MouseEvent):void

BOTAO2.addEventListener(MouseEvent.CLICK, FUNCAO2);

function FUNCAO2(evento:MouseEvent):void

espero q ajude!! abraço!

Caio disse...

se eu quiser abrir num frame e nao numa nova janela como faz?

Anônimo disse...

POOO CARA PARABÈNS...
Funcionou certinho, já fazia semanas que eu procurava esse código e nem no youtube eu achei...

VALEU MESMO!!!

Anônimo disse...

me ajudou dimais cara, perfeito.

Valeu dimais abs

SEMARH Alagoas disse...

Fiz isso, quando exporto o swf dentro do Animate CC ele funciona, mas quando abro no navegador não acontece nada.