Si lo que desea es almacenar y recuperar datos, es probable que desee utilizar la clase SharedObject. Vea Adobe's SharedObject reference para más detalles de eso.
Si desea acceder a las cookies HTTP, deberá usar ExternalInterface para hablar con javascript. La forma en que lo hacemos aquí es tener una clase auxiliar llamada HTTPCookies.
HTTPCookies.as:
import flash.external.ExternalInterface;
public class HTTPCookies
{
public static function getCookie(key:String):*
{
return ExternalInterface.call("getCookie", key);
}
public static function setCookie(key:String, val:*):void
{
ExternalInterface.call("setCookie", key, val);
}
}
Se necesitan asegurarse de habilitar javascript usando el parámetro 'allowScriptAccess' en su objeto flash.
Luego hay que crear un par de funciones javascript, GetCookie y setCookie, de la siguiente manera (con gracias a quirksmode.org)
HTTPCookies.js:
function getCookie(key)
{
var cookieValue = null;
if (key)
{
var cookieSearch = key + "=";
if (document.cookie)
{
var cookieArray = document.cookie.split(";");
for (var i = 0; i < cookieArray.length; i++)
{
var cookieString = cookieArray[i];
// skip past leading spaces
while (cookieString.charAt(0) == ' ')
{
cookieString = cookieString.substr(1);
}
// extract the actual value
if (cookieString.indexOf(cookieSearch) == 0)
{
cookieValue = cookieString.substr(cookieSearch.length);
}
}
}
}
return cookieValue;
}
function setCookie(key, val)
{
if (key)
{
var date = new Date();
if (val != null)
{
// expires in one year
date.setTime(date.getTime() + (365*24*60*60*1000));
document.cookie = key + "=" + val + "; expires=" + date.toGMTString();
}
else
{
// expires yesterday
date.setTime(date.getTime() - (24*60*60*1000));
document.cookie = key + "=; expires=" + date.toGMTString();
}
}
}
Una vez que tenga en su HTTPCookies.as flash project, y HTTPCookies.js cargados desde su página web, debería poder llamar a getCookie y setCookie desde su película flash para obtener o establecer cookies HTTP.
Esto solo funcionará para valores muy simples - cadenas o números - pero para algo más complicado, realmente debería usar SharedObject.
¿Cómo obtiene realmente el código flash el valor devuelto de la llamada js getCookie()? No hay declaración de devolución en su código AS. ¿Debería devolver el resultado de la llamada ExternalInterface? – Herms
Buen punto - arreglado. ¡Gracias! – Simon