2009-10-13 2 views
2

Я пытаюсь обмениваться данными между as3 swf и as2 swf, которые он загружал. Проблема в том, что я не могу заставить мой as2 swf читать объект localshared, написанный as3 swf. Он просто возвращает неопределенное значение при попытке получить ссылку на общий объектЗапись локального SharedObject в AS3 swf и чтение его в загруженном AS2 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 sharedobject из AS3, но я не могу сделать это по-другому. Я проверял, что оба ссылаются на один и тот же путь '/' (в частности, localhost, я даже проверил физический файл в файловой системе, - его в каталоге #localhost каталога #SharedObjects на моем mac). ObjectEncoding установлен для использования AS2 AMF.

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

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

+0

Можете ли вы опубликовать ссылку на документы об этом? Кстати, если вы не можете заставить это работать, подумайте об использовании 'LocalConnection' для связи между as3 и (загружаемыми или другими) as2 swfs. – Amarghosh

ответ

0

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

0

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

2

Не могу понять, что не работает для вас, при использовании 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

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

so.objectEncoding = ObjectEncoding.AMF0 

Thanks Dudi!

Смежные вопросы