SWFAddress
- 03/11/2006
- 1:19 am
SWFAddress en una pequeña utilidad javascript que se usa en conjunción con SWFObject la cual permite insertar links en aplicaciones y websites hechos en flash con lo cual se puede utilizar los botones Adelante, Atras y Recargar del Browser. Además se pueden crear URL únicas con títulos de páginas para aplicaciones flash.
SWFAddress utiliza la funcionalidad ExternalInterface introducida en Flash Player 8 y se ha probado en los siguientes browsers:
- Internet Explorer 6.0 y 7.0
- Mozilla Firefox 1.5
- Safari 2.04
- Ópera 9.02
Utilización:
Para utilizar este librería es necesario tener SWFObject la cual permite insertar archivos SWF en páginas HTML previniendo los problemas de ActiveX de Internet Explorer. Bueno lo primero es insertar un referencia a los dos javascript:
El siguiente paso es insertar el código necesario en tu película flash:
-
import flash.external.*;
-
_global.SWFAddress = function(){
-
this._check = function() {
-
if (SWFAddress.onChange) {
-
clearInterval(this._interval);
-
ExternalInterface.addCallback('setSWFAddressValue', this, SWFAddress.setValue);
-
SWFAddress.setValue(SWFAddress.getValue());
-
}
-
}
-
this._interval = setInterval(this, '_check', 10);
-
this._value = '';
-
};
-
_global.SWFAddress = new SWFAddress();
-
SWFAddress.getTitle = function():String {
-
var title:String = String(ExternalInterface.call('SWFAddress.getTitle'));
-
if (title == 'undefined' || title == 'null') title = '';
-
return title;
-
}
-
SWFAddress.setTitle = function(title:String):Void {
-
ExternalInterface.call('SWFAddress.setTitle', title);
-
}
-
SWFAddress.getValue = function():String {
-
var addr:String = String(ExternalInterface.call('SWFAddress.getValue'));
-
var id:String = String(ExternalInterface.call('SWFAddress.getId'));
-
if (id != 'null') {
-
if (addr == 'undefined' || addr == 'null') addr = '';
-
} else {
-
addr = SWFAddress._value;
-
}
-
return addr;
-
}
-
SWFAddress.setValue = function(addr:String):Void {
-
if (addr == 'undefined' || addr == 'null') addr = '';
-
ExternalInterface.call('SWFAddress.setValue', addr);
-
SWFAddress._value = addr;
-
if (SWFAddress.onChange) SWFAddress.onChange();
-
}
El siguiente paso es redactar la lógica de navegación para nuestro flash.
-
SWFAddress.onChange = function() {
-
// código para la navegación
-
}
Por ejemplo podemos definir el siguiente código de navegación
-
SWFAddress.onChange = function() {
-
var arr = new Array('', '/home', '/blog', '/forum');
-
var addr = SWFAddress.getValue();
-
gotoAndStop(getIndex(arr, addr));
-
SWFAddress.setTitle(formatTitle(addr));
-
}
En este caso definimos un array donde tendremos las diferentes secciones de nuestro web, el siguiente paso es obtener la sección actual esto con la función getValue. Continuando guiamos al flash al frame especificado por la sección en la que nos encontramos. Finalmente asignamos un titulo a esta sección del flash con la función setTitle.
Finalmente nos queda llamar a esta función desde los botones para que nos muestre la sección solicitada, esto se hace de la siguiente forma:
-
this.onRelease = function() {
-
SWFAddress.setValue('/home');
-
}
Si desean pueden ver un ejemplo funcionando en: http://www.asual.com/swfaddress/samples/flash, además de ello pueden descargar los ejemplos que son muy descriptivos.
Posts Relacionados
- SWFAddress 2.0
- Showcase: Greenpoint
- Showcase: Burst Labs
- Showcase: Club del Pensionista
- Showcase: Bluemetal 2007
Total de Comentarios: 4
holas, muy buen tip, justo la solucion que buscaba todo flashero.
gracias
Oye,
Has usado SWFAddress junto con Google Analitycs?
No estoy seguro, creo que me está mandando mis etiquetas dobles porque cada vez que cambia la dirección de la url Google coge un nuevo registro.
??
usando el fla de SWFAddress que baje de ASUAL SWFAddress NO PUEDO HACER LOS BOTONES MAS DINAMICOS… como puedo anirmarlos desde el action script
Hola podrias ayudarme? he copiado el código en el primer frame de mi flash y al momento de publicar el swf me arrojha tres errores:
**Error** Scene=home, layer=Layer 17, frame=1:Line 1: Syntax error.
import flash.external.*;
**Error** Scene=home, layer=Layer 17, frame=1:Line 14: ‘{’ expected
SWFAddress.getTitle = function():String
**Error** Scene=home, layer=Layer 17, frame=1:Line 18: Unexpected ‘}’ encountered
}
Total ActionScript Errors: 3 Reported Errors: 3
A que se deberá, solo he llegado hasta aqui no he copiado los demas codigos, ademas estos debiera copiarlos a continuación del codigo mas grande?
Saludos
Iván Méndez

