PDA

Просмотр полной версии : Работа с cookies


JokerDen
02.08.2010, 13:07
Есть ли в AS 2.0 возможность считывания и записи cookies? Local SharedObject не подходит, так как к изменяемой в кэше переменной должна обращаться и php-страница. Что-нибудь вроде этого:
http://garbage-collector.ru/2007/10/using_cookies_in_as3.html

iNils
02.08.2010, 13:13
Через ExternalInterface вы можете вызывать js и работать с куками.

JokerDen
02.08.2010, 13:16
А можно поподробнее? Я просто профан в AS-программировании, знаю только азы. И что за ExternalInterface.

udaaff
02.08.2010, 13:19
Подробнее в хелпе.

JokerDen
02.08.2010, 14:31
Подскажите тогда как из флэша обращаться к js. Ну или ссылку дайте.

mooncar
02.08.2010, 14:34
как из флэша обращаться к js.
JokerDen, открываете хелп и смотрите пример по методу ExternalInterface.call
Если обратно, из JS во флеш - то ExternalInterface.addCallback

JokerDen
02.08.2010, 14:49
Не могу найти в хелпе для 2.0 есть только 3.0

mooncar
02.08.2010, 14:56
Не могу найти в хелпе для 2.0 есть только 3.0
Должен быть. Область поиска может неверно задаете?
Либо вот (http://help.adobe.com/ru_RU/AS2LCR/Flash_10.0/help.html?content=00001044.html)

JokerDen
02.08.2010, 17:40
Блин, я затупок, ничего у меня не получается. Пробовал так:
function flashtojs(tmp) {
expires = new Date();
expires.setTime(expires.getTime() + (1000 * 86400 * 365));
set_cookie('author',tmp, expires);
}
_root.button.onPress = function () {
getURL ('javascript:flashtojs("jopka11");');
}


Пробовал и через ExternalInterface. Не получается. Не могли бы вы показать мне хороший пример работы с куками?

mooncar
02.08.2010, 17:46
Тут у вас функция flashtojs - это же функция Action Script. Вам же нужно наверное вызывать JS-функцию?

JokerDen
02.08.2010, 17:50
Блин, я запутался. Покажите пожалуйста толковый пример, и объясните где что надо задавать.

mooncar
02.08.2010, 17:56
Попробуйте так:
import flash.external.ExternalInterface;

var tmp:String = 'jopka11';
var expires:Date = new Date();
expires.setTime(expires.getTime() + (1000 * 86400 * 365));


var jsfunc:String = 'function flashtojs() { expires = new Date(); expires.setTime(expires.getTime() + (1000 * 86400 * 365)); set_cookie("author", ' + tmp + ', ' + String(expires) + ');}'

_root.button.onPress = function ()
{
ExternalInterface.call(jsfunc);
};

Я не проверял и с куками не работал с помощью JS, так что если что, поправьте.
Но идея должна быть понятна.

JokerDen
02.08.2010, 17:57
Спасибо большое, будем пробовать.

mooncar
02.08.2010, 17:59
Для начала добейтесь вообще благополучного вызова JS:
import flash.external.ExternalInterface;

var jsfunc:String = 'function jsalert() { alert("test"); }'

_root.button.onPress = function ()
{
ExternalInterface.call(jsfunc);
};
потом дальше идите...

JokerDen
04.08.2010, 13:17
Спасибо за советы, попробовал:
JS вообще работает, но переменную в куках так и не пишет


UPD: всё, разобрался, работает с куками. Сейчас другая проблема - передача кириллици, но это, думаю, тема другого форума.

mj_nooker
04.08.2010, 18:08
а можно в студию результат "разобрался"? О=-)

JokerDen
05.08.2010, 14:13
import flash.external.ExternalInterface;

var popa:String = 'function set_cookie(cookie_name, value, expire) { var expire_date = new Date(); expire_date.setDate(expire_date.getDate() + expire); document.cookie = (cookie_name + "=" + escape(value) + ((expire == null) ? "" : ";expires=" + expire_date.toGMTString())); return true; }';

_root.button.onPress = function () {
ExternalInterface.call(popa, 'author',id,259200000);
}