Если вы просто хотите хранить и извлекать данные, вы, вероятно, хотите использовать класс SharedObject. См. Adobe's SharedObject reference для получения более подробной информации.
Если вы хотите получить доступ к файлам cookie HTTP, вам необходимо использовать ExternalInterface для разговора с javascript. То, как мы это делаем, состоит в том, чтобы иметь вспомогательный класс, называемый 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);
}
}
Вы должны убедиться, что вы включите JavaScript с помощью параметра 'AllowScriptAccess' в вашем объекте флэш-памяти.
Затем вам нужно создать пару яваскрипта функций, getCookie и SetCookie, следующим образом (с благодарностью 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();
}
}
}
После того как вы HTTPCookies.as в вашем Flash-проект и HTTPCookies.js, загруженные с вашей веб-страницы, вы должны иметь возможность вызвать getCookie и setCookie из вашего флеш-ролика, чтобы получить или установить HTTP-файлы cookie.
Это будет работать только для очень простых значений - строк или чисел - но для чего-то более сложного вам действительно нужно использовать SharedObject.
Как флэш-код действительно получает возвращаемое значение вызова js getCookie()? В вашем коде AS нет возврата. Должен ли он просто вернуть результат вызова ExternalInterface? – Herms 2008-10-01 18:39:18