Flash XML套接字窒息

时间:2010-02-09 13:13:59

标签: flash actionscript-3 sockets multi-touch

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

大部分时间这一切都很好用。

但是,如果我的意思是并且使用多点触控事件充斥它,Flash就无法跟上解析输入,并且套接字只是不断地获取数据,直到它赶上或整个事情崩溃。

一旦有太多*,我就没有问题丢弃输入,但是我在设计一个聪明的方法时遇到了麻烦。

*该应用程序同时执行6-10个输入,没有问题,一旦我必须处理20+,事情开始变得毛茸茸,这基本上意味着有人躺在桌子上;)

1 个答案:

答案 0 :(得分:1)

它在哪里窒息?首先,我将从做一些分析开始。

描述“服务器”:

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

描述客户端:

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

就个人而言,如果可以的话,我会避免使用XML,并且/或者尝试对xml进行延迟解码(当你知道需要它时这样做...所以你可以抛弃XML块而不浪费cpu周期你的程序越来越多了。)

我会尝试使用原始Socket类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通过线路序列化数据。

希望这有帮助。