1

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

在大多数情况下,这一切都很好。

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

一旦输入太多*,我就可以丢弃输入,但我无法设计一种聪明的方法来做到这一点。

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

4

1 回答 1

1

它在哪里窒息?首先,我会先做一些分析。

配置“服务器”:

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

描述客户:

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

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

我会尝试使用原始 Socket 类http://www.adobe.com/livedocs/flash/9.0/main/00000318.html#wp128960和自定义数据包格式,每个索引包含相关数据的数组。在伪代码中:

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通过网络对数据进行序列化。

希望这可以帮助。

于 2010-02-09T20:53:47.673 回答