代码之家  ›  专栏  ›  技术社区  ›  grapefrukt

闪存XML插座阻塞

  •  1
  • grapefrukt  · 技术社区  · 15 年前

    我正在尝试解决我构建的多点触控应用程序中的一些问题。它使用 flosc 与发送多点触摸事件的XML套接字服务器通信。

    这在大多数时候都很好,很漂亮。

    但是,如果我的意思是用多点触控事件来填充它,那么flash就不能跟上对输入的解析,而socket只能不断地获取数据,直到它赶上或者整个事件崩溃。

    一旦输入太多,我就可以放弃它,但我很难想出一个聪明的方法来做到这一点。

    *该应用程序可以同时进行6-10次输入,没有问题,当我必须处理20+时,事情开始变得棘手,这基本上意味着有人躺在桌子上;)

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jotham    15 年前

    哪里窒息了?首先,我要做一些分析。

    对“服务器”进行配置:

    • XML编码需要多长时间?
    • 完全写入套接字需要多长时间?

    分析客户:

    • 从套接字读取数据需要多长时间?
    • 解码XML需要多长时间?

    就个人而言,如果可以的话,我会避免使用XML,和/或尝试懒惰地解码XML(当您知道需要时就这样做……这样,如果您的程序过载,您可以丢弃XML块而不会浪费CPU周期)。

    我会尝试使用原始套接字类 http://www.adobe.com/livedocs/flash/9.0/main/00000318.html#wp128960 以及自定义数据包格式,其中每个索引都包含相关数据的数组。在psudocode中:

    messageArray = [message type, arg0, arg1, arg2...];
    

    因此,您可能定义了“鼠标移动事件”,如下所示:

    MessageConstants.MOUSE_MOVE = 0; // or whatever id you want
    
    messageArray = [MessageConstants.MOUSE_MOVE, mouseDeltaX, mouseDeltaY];
    

    然后使用AMF http://en.wikipedia.org/wiki/Action_Message_Format 在线路上序列化数据。

    希望这有帮助。

    推荐文章