[英]Python, Pygame, Pyro: How to send a surface over a network?
我正在使用pygame和pyro在python中进行项目。 我可以轻松地发送数据,函数,类等。 但是,如果没有在传输过程中使我死亡,我就无法通过电线发送表面。
服务器在通过导线访问的类的def __init__
中创建一个表面:
self.screen = pygame.display.set_mode(SCREENRECT.size, NOFRAME)
在服务器上,屏幕显示为Surface(800x800x32 SW)
但在客户端检索时为Surface(Dead Display)
。
不过要注意一点。 当我使用访问器功能获取屏幕时,我的屏幕显示呆滞。 如果我使用print Player.screen
来获取变量,那么我会得到似乎是指向屏幕的pyro指针: <Pyro.core._RemoteMethod instance at 0x02B7B7B0>
。 也许我可以取消引用?
我很可能很胖,有人有见识吗? 谢谢。 :)
pygame曲面是底层SDL曲面的包装,我怀疑Pyro无法对其进行序列化。 如果要跨线复制其内容,最好做这样的事情:
编辑:我只是觉得我太复杂了。 要序列化Surface,请使用pygame.image.tostring() ,并重新加载它,请使用pygame.image.fromstring() 。
一般来说,您不想在网络上发送Surface(我假设Surface是与设备相关的显示器)。 在大多数情况下,您的客户将负责管理其本地Surface上的图形,而您的服务器则负责告诉客户它需要绘制什么。 服务器甚至可能没有显示这是能够显示图形!
尝试腌制对象并发送文件...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.