Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   SharedObject (http://www.flasher.ru/forum/showthread.php?t=135814)

tandem 02.02.2010 14:41

SharedObject
 
Одна флешка подгружает другую (AVM2, AVM1). В первой перед загрузкой создается SharedObject, после загрузки второй флешки из нее делается запрос на этот SharedObject, но она его не видит. В чем причина?

AS3Coder 02.02.2010 15:00

Скорее всего создается два SharedObject, для одной и для второй флешки по отдельности.

alexcon314 02.02.2010 15:41

AVM1 и AVM2 по умолчанию используют разные протоколы сериализации данных в шаредах: AMF3 и AMF0 соответственно. Возможно, ваша первая флэшка, которая AVM2 на AS3, как я понял, пишет в шаред в AMF3, тогда вторая, которая AVM1 на AS2 ничего оттуда не сможет прочесть. У шаредов в AS3 есть свойство objectEncoding, кажется. Вот его и выставьте в AMF0.
Соответственно, несколько сузятся возможности сериализации, но для простых строк, чисел должно хватить.

tandem 02.02.2010 15:47

Цитата:

Сообщение от alexcon314 (Сообщение 883621)
AVM1 и AVM2 по умолчанию используют разные протоколы сериализации данных в шаредах: AMF3 и AMF0 соответственно. Возможно, ваша первая флэшка, которая AVM2 на AS3, как я понял, пишет в шаред в AMF3, тогда вторая, которая AVM1 на AS2 ничего оттуда не сможет прочесть. У шаредов в AS3 есть свойство objectEncoding, кажется. Вот его и выставьте в AMF0.
Соответственно, несколько сузятся возможности сериализации, но для простых строк, чисел должно хватить.

По идее да, но я вызываю эти вещи таким способом:
Код AS3:

/* SWFBridgeAS3 */
SharedObject.defaultObjectEncoding = ObjectEncoding.AMF0;
var so:SharedObject = SharedObject.getLocal("SWFBridge", "/");
so.data.clientid = Math.round(Math.random() * 100000).toString();
so.flush();
baseID = so.data.clientid;

Код AS1/AS2:

/* SWFBridgeAS2 */
var so:SharedObject = SharedObject.getLocal("SWFBridge", "/");
baseID = so.data.clientid;

Вроде как и советуется?

alexcon314 02.02.2010 16:51

Тогда, по-идее должно ездить. По крайней мере, по-отдельности флэшки видят этот шаред нормально.

tandem 02.02.2010 20:20

Цитата:

Сообщение от alexcon314 (Сообщение 883642)
Тогда, по-идее должно ездить. По крайней мере, по-отдельности флэшки видят этот шаред нормально.

НО вот ни фига.

2-я флеха видит только шаред от предыдущего раза.

Допустим в первой создается шаред со значением "1023", вторая не видит. При следующем запуске создается шаред со значением "1234", а вторая видит "1023" - че за фигня???

DarkLight 02.02.2010 21:34

Была когда-то тема совместной работы с одним SO. Вобщем обнулять надо ссылку в 1ой флешке после записи в SO, тогда нормально получается, как минимум в 8-9ом плеере это работало.

tandem 02.02.2010 22:33

Цитата:

Сообщение от DarkLight (Сообщение 883733)
Была когда-то тема совместной работы с одним SO. Вобщем обнулять надо ссылку в 1ой флешке после записи в SO, тогда нормально получается, как минимум в 8-9ом плеере это работало.

Как обнулить-то?

Jewelz 02.02.2010 22:35

Код AS3:

so = null;


cursed_man 03.02.2010 16:11

была похожая проблема...
есть метод SharedObject#close()
в хелпе написано, что используется в случае "remote shared object", но он как-то влияет и на локальный


Часовой пояс GMT +4, время: 01:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.