Cristalab

Ejecutar funciones de Actionscript 3 en links html

Por: Zguillez + 25.02.2007

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 Guiño

Etiquetas actionscript_3

Comentarios | Enviar un comentario
Muy buen aporte, Zguillez miau
Por: Dano
Que más se puede pedir a un enlace html?

Gracias! Sonrisa
Por: Sisco
¡cuando Zguillez saca un articulo yo siempre me le quito el sombrero!
Por: vanvanero_blog
Hola:
No se si alguien ha probado el codigo pero a mi no me ha funcionado, en la ultima parte hay un erro que modifico a continuacion.

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; --------->accion NO puede ser Number, ha de ser String

    switch (accion) {

    case 1 :  --------> al ser accion un String deberia ser     case "1"


Por cierto pego el codigo para añadir los estilos de enlace al campo de texto HTML para los mas vaguetes como yo

Código :


import flash.text.StyleSheet
///////////////////DEFINICION DEL ESTILO///////////////////
var style:StyleSheet = new StyleSheet();
var styleObj:Object = new Object();
styleObj.fontSize = "bold";
styleObj.textDecoration = "underline";
styleObj.color = "#3E09BB";
style.setStyle(".Chulo", styleObj); //El estilo lo llamaremos Chulo
texto.styleSheet = style;
////////////////////////////////////////////
texto.htmlText = "Troiae qui <span class = 'Chulo'><a href='event:1'>primus</a></span> ab oris Italiam, fato <span class = 'Chulo'><a href='event:2'>profugus</a></span>, Laviniaque venit litora, multum ille et terris <span class = 'Chulo'><a href='event:3'>iactatus</a></span> et alto vi superum saevae memorem Iunonis ob iram"
addChild(texto)
////////////DETECTOR DE EVENTOS/////////////////////////
texto.addEventListener(TextEvent.LINK,clica);
function clica(event:TextEvent){
    var accion:String = event.text;
    switch (accion) {
    case "1" :
        trace("Hola soy el link 1");
        break;
    case "2" :
        trace("Hola soy el link 2");;
        break;
    case "3" :
        trace("Hola soy el link 3");;
    break;
    }
}


Saludos
Por: willow001
hola me gustaria saber como ejecutar un link de la pagina desde la barra de direcciones
Por: ricardo_blog
Deja un comentario
IMPORTANTE

Este mensaje ha sido cerrado; si deseas participar en la discusión o hablar de otro tema relacionado, hazlo en los foros de Cristalab