Привет!Я пытаюсь сериализовать данные в AS3, но сталкиваюсь с неприятной проблемой.Первоначально у меня были проблемы с тем, что myObjClass не был конвертируемым, но после того, как я обнаружил «registerClassAlias», все стало работать нормально.
Некоторое время спустя я добавил векторы в myObjClass.Раньше у меня возникали проблемы с векторными строками, как сообщалось здесь:
https://bugs.adobe.com/jira/browse/FP-6693
Так что я знаю, что обходной путь должен включать:
registerClassAlias("String", String);
Япросто не знаю, как зарегистрировать псевдоним для подвектора внутри вектора (вместе с другими переменными).Вот мой код:
var newObj:myObjClass = new myObjClass();
newObj.mySubXML = new Vector.<XML>();
newObj.mySubString = new Vector.<String>();
var myObj:Vector.<myObjClass> = new Vector.<myObjClass>();
myObj.push(newObj);
registerClassAlias("String", String); // Problem #1
registerClassAlias("XML", XML); // Problem #1
registerClassAlias("VecMyObjClass", Vector.<myObjClass> as Class); // Problem #2
// registerClassAlias("myObjClass", myObjClass); // This and the above are interchangable (same errors)
var bytes:ByteArray = new ByteArray();
bytes.writeObject(myObj);
bytes.position = 0;
myObj = bytes.readObject();
Проблема № 1: Когда эти две строки включены в мою компиляцию, последняя строка (bytes.readObject ()) завершается с ошибкой:
Error #1034: Type Coercion failed: cannot convert __AS3__.vec::Vector.<Object>@42edb21 to __AS3__.vec.Vector.<myObjClass>.
Это действительно странно.Это как если бы первые два registerClassAlias отменяли третий.
Проблема № 2: Если я закомментирую две строки «первая проблема» (регистрации классов / строк / xml), он просто преобразует myObj в myObjClass;не выдается внутренняя ошибка и приложение не останавливается.Однако он не может преобразовать внутренние векторы String и XML, и эта ошибка появляется в выходных данных приложения (без остановки):
TypeError: Error #1034: Type Coercion failed: cannot convert __AS3__.vec::Vector.<Object>@3aabc11 to __AS3__.vec.Vector.<XML>.
TypeError: Error #1034: Type Coercion failed: cannot convert __AS3__.vec::Vector.<Object>@3aabc41 to __AS3__.vec.Vector.<String>.
Поэтому мой вопрос состоит в том, как зарегистрировать псевдоним класса для:
- Vector. (MyObjClass)
- Вектор строк как свойство вектора. (MyObjClass)
- Вектор XML как свойство вектора. (MyObjClass)
Все одновременно?