![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
2 _etc: Представление об интерфейсах крайне расплывчто, в чем честно и признался в начале топика.
2 wvxvw: Спасибо за разъяснение. Я считал, что в интерфейс вшиваются методы целиком, а не только их заголовки и что интерфейс является неким подобием класса не создающего, при вызове, объекта - поэтому и вызывал функции таким образом. ----------------------- Код переделал - все-равно не фурычит. ![]() ***IDynamicPropertyOutput->writeDynamicProperty*** Adds a dynamic property to the binary output of a serialized object. When the object is subsequently read (using a method such as readObject), it contains the new property. You can use this method to exclude properties of dynamic objects from serialization; to write values to properties of dynamic objects; or to create new properties for dynamic objects. ***IDynamicPropertyWriter->writeDynamicProperties*** This interface is used with the IDynamicPropertyOutput interface to control the serialization of dynamic properties of dynamic objects. To use this interface, assign an object that implements the IDynamicPropertyWriter interface to the ObjectEncoding.dynamicPropertyWriter property. ***ObjectEncoding.dynamicPropertyWriter*** You can use this property to exclude properties of dynamic objects from serialization; to write values to properties of dynamic objects; or to create new properties for dynamic objects. To do so, set this property to an object that implements the IDynamicPropertyWriter interface. Как я это понял: 1.Класс исходного объекта должен включать интерфейс IDPWriter; 2.Класс клона должен включать интерфейс IDPOutput; 3.Должна быть прописана ссылка "ObjectEncoding.dynamicPropertyWriter" на класс исходного объекта - тогда при запуске метода WriteObject() произойдет перенос динамических свойств в ByteArray, а при вызове метода ReadObject(), их считывание. Как реализовал: в кадре: var ba:ByteArray;
var o1:MyObject=new MyObject();
ba=new ByteArray();
ba.writeObject(o1);
trace("Размер1: "+ba.length); //Размер1: 27
ba=new ByteArray();
ObjectEncoding.dynamicPropertyWriter=o1;
ba.writeObject(o1);
//func1 вызвана
trace("Размер2: "+ba.length); //Размер2: 58
ba.position=0;
//***дальше ошибка...***
var o2:MyClone=ba.readObject() as MyClone;
trace(o2);
trace(o1.prop1+" / "+o2.prop1);
trace(o1.prop2+" / "+o2.prop2);
trace(o1.prop3+" / "+o2.prop3);
package {
import flash.net.*
public dynamic class MyObject implements IDynamicPropertyWriter{
public function writeDynamicProperties(obj:Object, output:IDynamicPropertyOutput):void {
trace("func1 вызвана")
output.writeDynamicProperty("prop1","another very-very-very-very long string")
output.writeDynamicProperty("prop3",obj.prop3)
}
public function MyObject(){
this.prop1=12345;
this.prop2="string";
this.prop3=someFunc;
}
public function someFunc():void{}
}
}
package {
import flash.net.*
public dynamic class MyClone implements IDynamicPropertyOutput{
public function writeDynamicProperty(name:String, value:*):void {
trace("func2")
this[name]=value;
}
public function MyClone(){
}
}
}
Свойства попадают в ByteArray при вызове метода WriteObject(), но не вытаскиваются из него при вызове ReadObject() Подскажите пжл: как надо перестроить код чтобы он нормально заработал?
__________________
А я Томат. Последний раз редактировалось Torero; 16.03.2008 в 14:02. |
![]() |
Часовой пояс GMT +4, время: 08:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|