// ByteArray var stream:ByteArray = new ByteArray(); // var parameters:Object = { age : 25, name : "Bob" }; // «» AMF ByteArray stream.writeObject( parameters ); // stream.position = 0; // var objectCopy:Object = stream.readObject();
function copyObject(objectToCopy:*):* { var stream:ByteArray = new ByteArray(); stream.writeObject( objectToCopy ); stream.position = 0; return stream.readObject(); }
// var parameters:Object = { age : 25, name : "Bob" }; var parametersCopy:Object = copyObject ( parameters ); parameters.nom = "Stevie"; /* outputs : name : Bob age : 25 */ for ( var p:String in parametersCopy ) { trace( p, " : ", parametersCopy[p] ); } function copyObject ( objectToCopy:* ):* { var stream:ByteArray = new ByteArray(); stream.writeObject( objectToCopy ); stream.position = 0; return stream.readObject(); }
package { public class User { private var _firstName:String; private var _lastName:String; public function set firstName (firstName:String):void { _firstName = firstName; } public function set lastName (lastName:String):void { _lastName = lastName; } public function get firstName ():String { return _firstName; } public function get lastName ():String { return _lastName; } } }
// User var myUser:User = new User (); // myUser.firstName = "Stevie"; myUser.lastName = "Wonder"; // outputs :[object User] trace ( myUser ); // ByteArray var bytes:ByteArray = new ByteArray(); // bytes.writeObject ( myUser ); // bytes.position = 0; // outputs : false trace ( bytes.readObject() is User );
// User var myUser:User = new User (); // myUser.firstName = "Stevie"; myUser.lastName = "Wonder"; // outputs :[object User] trace ( myUser ); // User «» registerClassAlias ( "userTypeAlias", User ); // ByteArray var bytes:ByteArray = new ByteArray(); // bytes.writeObject ( myUser ); // bytes.position = 0; // «» , var storedUser:User = bytes.readObject() as User; // outputs : true trace ( storedUser is User ); // outputs : Stevie Wonder trace ( storedUser.firstName, storedUser.lastName );
storedUser.firstName = "Bobby"; storedUser.lastName = "Womack"; // outputs : Stevie Wonder trace ( myUser.firstName, myUser.lastName ); // outputs : Bobby Womack trace ( storedUser.firstName, storedUser.lastName );
// ByteArray var bytes:ByteArray = new ByteArray(); // DisplayObject bytes.writeObject ( new MovieClip() ); // bytes.position = 0; // outputs : undefined trace ( bytes.readObject() );
Source: https://habr.com/ru/post/115502/