我试图使用Socket类中的writeObject()方法将位图从AIR应用程序(服务器)传递到另一个(客户端)。
clientSocket.writeObject(myBitmap);// (var myBitmap:Bitmap)
clientSocket.flush();
当我尝试在客户端应用程序上获取位图时,出现了我的问题。使用方法readObject(),我将获得具有位图所有属性的通用对象。我无法以任何方式将此对象转换为位图。
var receivedObject:* = socket.readObject();
trace(receivedObject);// [Object Object]
trace(receivedObject as Bitmap); // null
请帮忙吗?
Adobe没有很好地记录这种过程。
非常感谢。
Bitmap
class是一个DisplayObject
并且通过ByteArray
功能(带有writeObject/readObject
方法)进行克隆不起作用DisplayObjects
(请查看此问题,例如,如何对自定义mxml组件使用registerClassAlias()方法)。
对于这种特殊情况,您可以写入/读取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));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句