Comunidad de diseño web y desarrollo en internet

Ejecutar funciones de Actionscript 3 en links html

En ActionScript 3 es posible, de forma fácil, ejecutar acciones actionscript cuando el usuario clickea sobre un enlace dentro de un campo de texto HTML de nuestra web. Tal como en versiones anteriores de Flash lo hacíamos por medio de asfunction. Esto lo conseguimos gracias al protocolo de detección de eventos de AS3.

Por ejemplo, este sería la forma típica de añadir un enlace externo a un campo de texto dinámico:

Código :

texto.htmlText = "Troiae qui <a href='http://www.cristalab.com'>primus</a> ab oris Italiam, fato profugus, Laviniaque venit litora, multum ille et terris iactatus et alto vi superum saevae memorem Iunonis ob iram."

Utilizando un detector de eventos lo haríamos de esta manera:

Código :

texto.htmlText = "Troiae qui <a href='event:http://www.cristalab.com'>primus</a> ab oris Italiam, fato profugus, Laviniaque venit litora, multum ille et terris iactatus et alto vi superum saevae memorem Iunonis ob iram"

De manera que no estamos abriendo una URL con el enlace sino que estamos lanzando un evento.

Ahora crearemos un listener que detecte ese evento y ejecute la acción de abrir la URL:

Código :

texto.addEventListener(TextEvent.LINK,clica);
function clica(event:TextEvent){
    var url:String = event.text;
    navigateToURL(new URLRequest(url));
}

De esta manera podemos añadir a esta función las acciones que nos interesen:

Código :

texto.addEventListener(TextEvent.LINK,clica);
function clica(event:TextEvent){
    var url:String = event.text;
    navigateToURL(new URLRequest(url));
    ejecuta_accion();
}

También podemos utilizar los enlaces del texto HTML para ejecutar acciones actionscript dentro de nuestra película flash:

Código :

texto.htmlText = "Troiae qui <a href='event:1'>primus</a> ab oris Italiam, fato <a href='event:2'>profugus</a>, Laviniaque venit litora, multum ille et terris <a href='event:3'>iactatus</a> et alto vi superum saevae memorem Iunonis ob iram"
texto.addEventListener(TextEvent.LINK,clica);
function clica(event:TextEvent){
    var accion:Number = event.text;
    switch (accion) {
    case 1 :
        ejecuta_accion();
        break;
    case 2 :
        ejecuta_otra_accion();
        break;
    case 3 :
        ejecuta_otra_accion_mas();
    break;
    }
}


PD. Recomiendo la lectura del tip acerca de texto en flash con enlaces HTML para añadir los estilos de enlace al campo de texto HTML :wink:

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate