Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.07.2009, 14:46
tofflife вне форума Посмотреть профиль Отправить личное сообщение для tofflife Найти все сообщения от tofflife
  № 1  
Ответить с цитированием
tofflife

Регистрация: Jul 2009
Сообщений: 95
По умолчанию ошибка при клонировании объекта

Код AS3:
public class BasicObject implements ICloneable
{
...
public function clone():ICloneable
{
var copier:ByteArray = new ByteArray();
copier.writeObject(this);
trace(copier);
copier.position = 0;
var obj:BasicObject = BasicObject(copier.readObject());//Здесь выпадает исключение
return obj;
}
...
}
TypeError: Error #1034: Type Coercion failed: cannot convert Object@174af21 to awem.visual.object.BasicObject.

Trace(copier) выводит 2 спецсимвола(квадратики), несмотря на то, что класс содержит большое кол-во свойств.

Как же мне скастовать? расчитываю на вашу помощь... спасибо.

Добавлено через 15 минут
Блин, всем так сложно?

Старый 02.07.2009, 15:05
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
http://richapps.de/?p=34

Старый 02.07.2009, 15:08
tofflife вне форума Посмотреть профиль Отправить личное сообщение для tofflife Найти все сообщения от tofflife
  № 3  
Ответить с цитированием
tofflife

Регистрация: Jul 2009
Сообщений: 95
в гугле и я искать вроде как умею... я, кстати этот пример оттуда и взял, но все ранво спасибо, хотя бы за попытку..

У меня такое подозрение, что мой объект вообще не сериализауется...

Старый 02.07.2009, 15:23
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 4  
Ответить с цитированием
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Похоже, не умеешь.

В статье по ссылке выделен вызов registerClassAlias(...), которого у тебя нет и который как раз и нужен для сериализации/десериализации объектов кастомных классов.

Проверить, записалось ли что-либо в байтмассив можно по его длине.
__________________
...убивать людей не удовольствия ради, но для еды.

Старый 04.07.2009, 14:08
murz вне форума Посмотреть профиль Отправить личное сообщение для murz Найти все сообщения от murz
  № 5  
Ответить с цитированием
murz
[+1 10.12.10]

Регистрация: Feb 2006
Сообщений: 148
Отправить сообщение для murz с помощью ICQ
Привет. меня тоже интересует данная тема. Пытаюсь таким же способом получить копию объекта.
Код AS3:
registerClassAlias("xPrint.engine.core.symbols", Symbol);
var s:ISymbol = new Symbol("id","title", SymbolType.IMAGE_SYMBOL);
clone(s);
rivate function clone(source:Object):* {
			var copier:ByteArray = new ByteArray();
			copier.writeObject(source);
			copier.position = 0;
			return(copier.readObject());
		}
Происходит ошибка при выполнении. Как быть?

Цитата:
ArgumentError: Error #1063: Несоответствие количества аргументов в xPrint.engine.core.symbols::Symbol(). Ожидалось 3, получено 0.
at flash.utils::ByteArray/readObject()
.............

Старый 04.07.2009, 14:15
tofflife вне форума Посмотреть профиль Отправить личное сообщение для tofflife Найти все сообщения от tofflife
  № 6  
Ответить с цитированием
tofflife

Регистрация: Jul 2009
Сообщений: 95
при клонировании конструктор копируемого объекта не должен содержать параметров, т.е. должен быть конструктором по умолчанию.

Старый 04.07.2009, 14:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А чем не устраивает метод clone() в самом Symbol, возвращающий новый Symbol с теми же параметрами?

Старый 04.07.2009, 14:24
murz вне форума Посмотреть профиль Отправить личное сообщение для murz Найти все сообщения от murz
  № 8  
Ответить с цитированием
murz
[+1 10.12.10]

Регистрация: Feb 2006
Сообщений: 148
Отправить сообщение для murz с помощью ICQ
tofflife, спасибо, теперь понятно.
to __etc.
Устраивает, я прям в Symbol хотел реализовать этот способ клонирования.
Но теперь ясно что не буду, из-за параметров конструктора.
__etc, у Вас большой опыт. Подскажите этот способ(копирования) быстрее классического?

Старый 04.07.2009, 17:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Медленнее, конечно, из-за сериализации/десериализации.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
клонирование AVM

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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