Crear un enlace-hipervínculo. Link en AS3
Sunday, 18. October 2009
Ejemplo: Enlace en AS3. Haz clic aquí
Podemos hacer que un botón, movieclip o cualquier objeto (incluso el stage) contenga un enlace a una página web. Es tan sencillo como añadir un listener que identifique el clic y nos lleve a la web. Si estamos ejecutando el archivo swf de nuestra película, al hacer clic se abrirá en navegador predeterminado y nos llevará a la dirección o url que le asignemos. Si el archivo está siendo ejecutado desde un navegador, le podemos decir que abra esta web en la misma página, o en una nueva.
Para crear el listener, escribimos:
boton.addEventListener(MouseEvent.CLICK, abrirInicio);
Asignamos el listener al objeto que queramos, cambiando en el anterior código la palabra ‘boton’ por el objeto al cual vamos añadir el enlace, o la ruta en donde se encuentra este objeto (separando con puntos los distintos niveles de la ruta así: ruta1.ruta2.ruta3.). Damos a la función un nombre cualquiera, en este caso ‘abrirInicio’.
Ahora debemos definir la función (el nombre de la función debe ser el mismo que pusimos al final del listener). Esto lo hacemos escribiendo el siguiente código:
function abrirInicio (event:MouseEvent):void{
var miURL:URLRequest = new URLRequest("index.html");
navigateToURL(miURL,"_self");
}
Hemos creado una variable que llamamos en este caso miURL del tipo URLRequest, y le hemos asignado un valor que corresponde a una URL, que para el caso es ‘index.html’ puesto que el archivo swf que vamos a ejecutar se encuentra en la misma ruta que dicha página. Si no nos funciona de esta forma, o el archivo se encuentra en otro directorio, otra web, etc. debemos escribir la URL completa ‘http://www.ejemplo.com’.
En la siguiente línea le decimos que queremos que vaya a esa dirección. El “_self” hace que la página que vamos a abrir se cargue en la misma ventana del navegador que estamos utilizando. Si queremos que se cargue en otra diferente usamos “_blank”.
Eso es todo. El código, por lo tanto, queda así:
boton.addEventListener(MouseEvent.CLICK, abrirInicio);
function abrirInicio (event:MouseEvent):void
{
var miURL:URLRequest = new URLRequest("index.html");
navigateToURL(miURL,"_self");
}
Para cada enlace/hipervínculo que creemos, debemos definir un nombre de función diferente. Cambiar ‘abrirInicio’ por otro nombre de función. De lo contrario nos dará un error por duplicar funciones.
Espero sea de utilidad éste artículo. Cualquier duda o comentario dejar un ‘comentario’ (valga la redundancia) en este mismo blog.
Un saludo.
Samuel Jiménez. Esk.






luis guerra Says:
tengo una duda con el navigateToURL(miURL,”_self”);, yo estoy usando flex builder 3
y el navigateToURL(miURL,”_self”); funciona bien cuando lo ejecuto en modo local…pero al momento de exportar el bin-debug a otra lugar no funciona y si le saco el “_self” funciona sin problemas.
Pablo Jasso Says:
hola, estoy usando este turotial para un menu hecho en flash, desde él pienso llamar mi htmls, el problema es que cuando aplico este código a cada link en mi menu (cada uno con su nombre de objeto unico y que no repito en ningun caso) me dice que hay un error pues estoy duplicando la función, “1021: Duplicate function definition.”, cómo puedo hacerle para evitar ese error y que cada link en mi menú lleve a un html diferente sin tener problemas de este tipo, saludos!
eskombro Says:
Hola. A cada enlace debes darle un nombre diferente de función:
boton.addEventListener(MouseEvent.CLICK, abrirInicio);function abrirInicio (event:MouseEvent):void
{
var miURL:URLRequest = new URLRequest("index.html");
navigateToURL(miURL,"_self");
}
tienes que cambiar este ‘abrirInicio’ por otro nombre de función, sea cual sea, pero revisa ponerlo igual en ambas partes. Sino, no se sabe que botón hace referencia a qué enlace… Esto que llamamos aquí ‘abrirInicio’ no es más que el nombre de la función a la cual vamos a llamar. Y la función es la que contiene el enlace. Por lo tanto para cada botón debe haber un enlace diferente, lo que significa una función diferente con un nombre diferente.
Me alegra que te haya servido
Un saludo
brunox Says:
holahola , por fabor me ocurrio un error… le puse al boton un nombre de instancia “botoncito” y puse este script:
****
import flash.events.*;
botoncito.addEventListener(MouseEvent.CLICK, abrirInicio);
function abrirInicio (event:MouseEvent):void
{
navigateToURL(“http://imbxl.com.ar”,”_blank”);
}
*****
pero cuando lo abro me dice q no se ha definido la variable botoncito… q hago mal?
eskombro Says:
Tal como pones el código, te toma la dirección URL como un String y no como uRL… Es decir, así no lo puedes utilizar. Prueba así:
import flash.events.*;botoncito.addEventListener(MouseEvent.CLICK, abrirInicio);
function abrirInicio (event:MouseEvent):void
{
var miURL:URLRequest = new URLRequest("imbxl.com.ar");
navigateToURL(miURL,"_self");
}
Lo más probable en cuanto a lo del nombre ‘botoncito’ es que no le pusiste el nombre de instancia, sino el nombre a la clase. Es decir, si lo tienes en el escenario seleccionalo, busca el panel de propiedades (normalmente está en la parte de abajo del escenario) y allí hay un campo de texto donde poner el nombre de instancia. Es allí donde lo debes poner.
A ver si te funciona.
Un saludo
Pablo Jasso Says:
Sí hermano te hace falta nombrar “botoncito” a la instancia y no al símbolo, el símbolo es que tienes en tu libreria y la instancia es el que tienes en el escenario, toca tu boton en el escenario y en propiedades ponle nombre “botoncito”. saludos.
jaime Says:
como hago para abrir una aplicacion de mi pc, (“C:\Archivos de programa\Aplicacion.exe”) en AS3???
eskombro Says:
fscommand(“exec”,”C:\Archivos de programa\Aplicacion.exe”)
MARCOS HUERTA HERNANDEZ Says:
que buen tip y que buenas respuestas del equipo me gusta estar aqui por que se resuelve todo gracias a todos
choky Says:
Hola a todos, esta muy interesante el hipervinculo a un enlace, pero si quisiera mandar a ese enlace algo que ponga el usuario en un cuadro de texto.
Podria hacerse ejemplo: (marques.dominio.com/”lo que ponga el usuario”).
Como podria hacerlo.
Muchas gracias
eskombro Says:
function abrirInicio (event:MouseEvent):void{
var miURL:URLRequest = new URLRequest("http://www.miweb.com/"+miTexto.text);
navigateToURL(miURL,"_self");
}
Dentro del código que define la función pones +miTexto.text a la URL suponiendo que el campo de texto donde el usuario escribe tiene como nombre de instancia miTexto…
Saludos
choky Says:
Vale eskombro Says, muchas gracias.
gordomax Says:
Buenos dias… tengo un problema con el hipervínculo porq queda en todo el flash y no solo en el boton, es decir, al hacer clic en cualquier lugar del flash redirige a la otra pagina.
function pLink(e:Event):void
{
navigateToURL(new URLRequest (“home.html”), “_self”);
}
addEventListener(MouseEvent.CLICK,pLink);
stop();
este es mi codigo. Intente con ponerle el nombre de instancia que es entrar y lo puse asi entrar.addEventListener(MouseEvent.CLICK,pLink); pero no hace nada.
Nunk he visto clases de actionscript y me he estado enseñando yo mismo jeje gracias por la ayuda de antemano
eskombro Says:
Pues es justo como tu dices, poniendo el nombre de instancia antes del addEventListener. Revisa que hayas puesto el nombre de instancia al objeto en el escenario, y no que estés confundiéndolo con el nombre del símbolo. Es decir, selecciónalo en el escenario, y abajo, en el panel de propiedades escribe en el recuadro el nombre de instancia.
Si tienes algún error, escribelo aquí.
Saludos
Gustavo Says:
Como hago para que esto funcione en un .swf cargado dentro de otro swf. Es decir, el boton que abre la pagina http//:www.loquesea.com, se encuentra en el swf “B” y este swf se encuentra cargado en otro swf “A”.
AYUDA!
Lisandro Says:
Hola, quisiera saber si me pueden ayudar, necesito que un boton abra una carpeta que esta en mi equipo.
De hecho es una carpeta compartida que esta en red, pero al utilizar la funcion de requestURL no se abre como deberia. QUiero abrirla en el windows explorer.
Pueden ayduarme”!!!
raynor Says:
amigo un favor. tengo un problema!!!. me lanza error en: function abrirInicio (event:MouseEvent):void
y su descripción es: Se espera ‘{‘
nose cual es el problema, tengo el CS4
este es el código
springlink.addEventListener(MouseEvent.CLICK, abrirInicio);
function abrirInicio (event:MouseEvent):void
{
var miURL:URLRequest = new URLRequest(“http://www.pziura.com”);
navigateToURL(miURL,”_blank”);
}