我正在尝试解决我构建的多点触控应用程序中的一些问题。它使用flosc与发送多点触控事件的 xml 套接字服务器通信。
在大多数情况下,这一切都很好。
但是,如果我的意思是多点触控事件,Flash 无法跟上解析输入的速度,并且套接字只会不断获取堆积的数据,直到它赶上或整个事情崩溃。
一旦输入太多*,我就可以丢弃输入,但我无法设计一种聪明的方法来做到这一点。
* 该应用程序可以同时进行 6-10 个输入,没有问题,一旦我必须处理 20+ 个,事情就开始变得毛茸茸,这基本上意味着有人躺在桌子上;)
我正在尝试解决我构建的多点触控应用程序中的一些问题。它使用flosc与发送多点触控事件的 xml 套接字服务器通信。
在大多数情况下,这一切都很好。
但是,如果我的意思是多点触控事件,Flash 无法跟上解析输入的速度,并且套接字只会不断获取堆积的数据,直到它赶上或整个事情崩溃。
一旦输入太多*,我就可以丢弃输入,但我无法设计一种聪明的方法来做到这一点。
* 该应用程序可以同时进行 6-10 个输入,没有问题,一旦我必须处理 20+ 个,事情就开始变得毛茸茸,这基本上意味着有人躺在桌子上;)
它在哪里窒息?首先,我会先做一些分析。
配置“服务器”:
描述客户:
就个人而言,如果可以的话,我会避免使用 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通过网络对数据进行序列化。
希望这可以帮助。