Actionscript 3 AS3,AIR,套接字:如何正确读取对象()?
我正在尝试使用Socket类中的writeObject()方法将位图从一个AIR应用程序(服务器)传递到另一个(客户端)Actionscript 3 AS3,AIR,套接字:如何正确读取对象()?,actionscript-3,sockets,bitmap,air,Actionscript 3,Sockets,Bitmap,Air,我正在尝试使用Socket类中的writeObject()方法将位图从一个AIR应用程序(服务器)传递到另一个(客户端) clientSocket.writeObject(myBitmap);// (var myBitmap:Bitmap) clientSocket.flush(); 当我尝试在客户端应用程序上获取位图时,出现了我的问题。使用方法readObject(),我获得了一个通用对象,包含位图的所有属性。我无法以任何方式将此对象转换为位图 var receivedObject:* =
clientSocket.writeObject(myBitmap);// (var myBitmap:Bitmap)
clientSocket.flush();
当我尝试在客户端应用程序上获取位图时,出现了我的问题。使用方法readObject(),我获得了一个通用对象,包含位图的所有属性。我无法以任何方式将此对象转换为位图
var receivedObject:* = socket.readObject();
trace(receivedObject);// [Object Object]
trace(receivedObject as Bitmap); // null
请帮帮忙
Adobe没有很好地记录这种过程
非常感谢。
Bitmap
类是一个显示对象
,通过ByteArray
功能(使用writeObject/readObject
方法)进行克隆不适用于DisplayObjects
(例如,检查这个问题)
对于这种特殊情况,您可以写入/读取位图数据
对象和矩形
属性,并使用它还原位图
var bd:BitmapData = myBitmap.bitmapData;
var data:Object = {rect:bd.rect, bytes:bd.getPixels(bd.rect)}
clientSocket.writeObject(data);
var data:Object = socket.readObject();
var bd2:BitmapData = new BitmapData(data.rect.width, data.rect.height);
bd2.setPixels(bd2.rect, data.bytes);
addChild(new Bitmap(bd2));