flash - swiffy - swf to html5
¿Cómo accedo a las cookies dentro de Flash? (6)
Algunos de Google muestra que se puede hacer mediante el uso de cadenas de consulta :
Para aplicaciones web, puede pasar valores a swf por parámetros de url y (con script de acción dentro de swf) guardarlos en el sandbox.
Estoy buscando capturar valores de cookies para el mismo dominio dentro de una película Flash. es posible?
Veamos, dejo que un usuario establezca una variable foo y la almaceno usando cualquier lenguaje de programación web. Puedo acceder fácilmente a través de ese idioma, pero me gustaría acceder a él a través de la película Flash sin pasarla a través de la impresión en la página HTML.
Creo que los objetos flash tienen funciones accesibles a través de JavaScript, por lo que si no hay una manera más fácil, al menos podrías usar un controlador de carga de JavaScript y pasar document.cookie a tu aplicación flash desde el exterior.
Más información aquí: http://www.permadi.com/tutorial/flashjscommand/
Puede leer y escribir cookies (Objeto Local Compartido) desde el flash. Las cookies Flash se almacenan en su PC dentro de un directorio con el nombre de su dominio. Esos directorios se encuentran en:
[Root drive]:/Documents and Settings/[username]/Application Data/Macromedia/Flash Player/#SharedObjects/
Este artículo de Adobe es un buen comienzo.
las cookies están disponibles para javascript a través de document.cookie; intente usar flash getURL para llamar a una función de JavaScript.
getURL(''javascript:document.cookie = "varname=varvalue; expires=Thu, 2 Aug 2001 20:47:11 UTC; path="'');
Método getCookie en HTTPCookies.as debe usar la declaración "return".
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);
}
}
Si solo desea almacenar y recuperar datos, probablemente desee usar la clase SharedObject. Consulte la referencia SharedObject de Adobe para obtener más detalles al respecto.
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);
}
}
Debe asegurarse de habilitar javascript utilizando el parámetro ''allowScriptAccess'' en su objeto flash.
Entonces necesitas crear un par de funciones de JavaScript, getCookie y setCookie, de la siguiente manera (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 HTTPCookies.as en su proyecto de flash, y HTTPCookies.js cargado 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.