我正在尝试使用套接字类中的 writeObject()方法将位图从AIR应用程序(服务器)传递到另一个(客户端)。 / p>
clientSocket.writeObject(myBitmap);// (var myBitmap:Bitmap)
clientSocket.flush();
当我尝试在客户端应用上获取位图时出现我的问题。使用方法 readObject(),我将获得一个通用对象,其中包含位图的所有属性。我无法以任何方式将此对象转换为位图。
var receivedObject:* = socket.readObject();
trace(receivedObject);// [Object Object]
trace(receivedObject as Bitmap); // null
请帮忙吗?
Adobe没有很好地记录这种过程。
非常感谢。
答案 0 :(得分:2)
Bitmap
类是DisplayObject
,通过ByteArray
功能克隆(使用writeObject/readObject
方法)不适用于DisplayObjects
(请查看此问题例如how to work registerClassAlias() method for custom mxml components)。
对于这种特殊情况,您可以编写/读取BitmapData
对象和Rectangle
属性,并使用它恢复Bitmap
。
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));