Запись локального SharedObject в AS3 swf и чтение в загруженном AS2 swf - PullRequest
2 голосов
/ 14 октября 2009

Я пытаюсь поделиться данными между as3 swf и as2 swf, которые он загрузил. Проблема в том, что я не могу заставить мой as2 swf читать локальный общий объект, написанный as3 swf. Он просто возвращает неопределенное значение, когда я пытаюсь получить ссылку на общий объект

// AS3

_SharedObj.objectEncoding = ObjectEncoding.AMF0;
_SharedObj.data.blah = 'str';
_SharedObj.flush(500);

// ... some code to handle the flush status. I verified that the values were flushed.


// AS2

var so = SharedObject.getLocal('somestr', '/');
trace(so);  // undefined! 

Я в недоумении. Я могу прочитать общий объект AS2 из AS3, но не могу сделать это по-другому. Я проверил, что оба ссылаются на один и тот же путь '/' (в частности localhost, я даже проверил физический файл в файловой системе, - он находится в каталоге #localhost в каталоге #SharedObjects на моем Mac). ObjectEncoding настроен на использование AS2 AMF формат.

В документах специально сказано, чтобы эта кодировка позволяла as2 получать доступ к одному и тому же общему объекту, поэтому я предполагаю, что это означает, что это возможно.

У кого-нибудь есть идеи?

Ответы [ 4 ]

2 голосов
/ 21 июня 2010

Не могу понять, что у вас не работает, при использовании FlashDevelop следующий код отлично работает для меня:

//AS3
var so : SharedObject = SharedObject.getLocal('somestr', '/');
so.objectEncoding = ObjectEncoding.AMF0;
so.data.blah = 'str';
so.flush();

//AS2
var so = SharedObject.getLocal('somestr', '/'); 
trace(so.data.blah);  // str
0 голосов
/ 05 декабря 2011

У меня была та же проблема, и я думаю, что ответ Дуди выше - это путь - я добавил следующую строку в мой код после вызова SharedObject.getLocal (), и мой swf AS2 смог загрузить мой общий объект, написанный на AS3.

so.objectEncoding = ObjectEncoding.AMF0

Спасибо, Дуди!

0 голосов
/ 14 октября 2009

Я столкнулся с подобной проблемой - мы в конечном итоге пошли по отвратительному пути чтения / записи LSO с SWF AS2 и заставили его общаться с SWF AS3 через JavaScript / ExternalConnection. Это было грубо, но это работало надежно.

0 голосов
/ 14 октября 2009

Ваша проблема в том, что SWF-идентификатор сгенерирован для Flash Player и используется им для использования SharedObject. Вы не видите этого в коде, но когда вы ищете файл SharedObject, вы видите это. Это особенность безопасности. Я не знаю никакой работы для этого.

...