flashxml套接字阻塞
我正在尝试解决我构建的多点触控应用程序中的一些问题。它使用与发送多点触控事件的xml套接字服务器通信 在大多数情况下,这一切都很好,很漂亮 但是如果我的意思是用多点触控事件淹没它,Flash就跟不上解析输入,而socket只会不断获取堆积起来的数据,直到它赶上或者整个事情崩溃 一旦输入太多*,我就可以丢弃输入,但我很难想出一个聪明的方法来做到这一点flashxml套接字阻塞,flash,actionscript-3,sockets,multi-touch,Flash,Actionscript 3,Sockets,Multi Touch,我正在尝试解决我构建的多点触控应用程序中的一些问题。它使用与发送多点触控事件的xml套接字服务器通信 在大多数情况下,这一切都很好,很漂亮 但是如果我的意思是用多点触控事件淹没它,Flash就跟不上解析输入,而socket只会不断获取堆积起来的数据,直到它赶上或者整个事情崩溃 一旦输入太多*,我就可以丢弃输入,但我很难想出一个聪明的方法来做到这一点 *该应用程序可以同时输入6-10个数据,没有问题,一旦我必须处理20多个数据,事情就会变得棘手,这基本上意味着有人躺在桌子上;) 哪里窒息了?首先我
*该应用程序可以同时输入6-10个数据,没有问题,一旦我必须处理20多个数据,事情就会变得棘手,这基本上意味着有人躺在桌子上;) 哪里窒息了?首先我要做一些分析 配置“服务器”:
- 进行XML编码需要多少时间
- 完全写入套接字需要多少时间
- 从套接字读取数据需要多长时间
- 解码XML需要多少时间
messageArray = [message type, arg0, arg1, arg2...];
因此,您可能会定义一个“鼠标移动事件”,如:
MessageConstants.MOUSE_MOVE = 0; // or whatever id you want
messageArray = [MessageConstants.MOUSE_MOVE, mouseDeltaX, mouseDeltaY];
然后使用AMF通过线路序列化数据
希望这有帮助。哪里窒息了?首先我要做一些分析 配置“服务器”:
- 进行XML编码需要多少时间
- 完全写入套接字需要多少时间
- 从套接字读取数据需要多长时间
- 解码XML需要多少时间
messageArray = [message type, arg0, arg1, arg2...];
因此,您可能会定义一个“鼠标移动事件”,如:
MessageConstants.MOUSE_MOVE = 0; // or whatever id you want
messageArray = [MessageConstants.MOUSE_MOVE, mouseDeltaX, mouseDeltaY];
然后使用AMF通过线路序列化数据
希望这有帮助。多点触摸。。。桌子你正在开发苹果的新产品吗多点触摸。。。桌子你正在开发苹果的新产品吗我根本无法接触服务器,它使用标准协议(flosc)运行,可以连接到多个服务器。令人惊讶的是,该应用程序只花了大约5%的时间解析数据,而绝大多数时间都花在渲染上。现在我开始怀疑,如果一切都是从一个异常开始的,那么从那以后,一切都会被抛在脑后。好吧,是的,如果你没有管理好你的异常,那么有些事情可能会失败。您是否正在使用调试播放器/插件ActiveX?此外,我可能只需要保持一个队列,可能是n个事件的FIFO,然后将它们从flosc提要推到队列中,并在处理它们时将它们拉出。如果队列处于最大大小,则从任意一端弹出一个队列(取决于最有效的方式)。另一个选项是根据事件的重要性,以及它被捕获的时间,给所有事件类型赋予权重,然后使用一个由n个项目组成的优先级队列。事实证明,在我的代码中,它实际上是一个“更深”抛出的异常。一旦抛出异常,flash就再也追不上了,只是不断地得到更多的异常。发生的事情是,当应用程序获得大量输入时,它可能会以错误的顺序获得触摸事件,即触摸移动将在触摸后到达。我的逻辑没有处理这个问题,所以它尝试更新一些不存在的东西,从而使用已经删除的实例。但一旦我找到它,这是一个简单的解决方法。恭喜!很高兴看到你解决了这个问题。我根本无法接触服务器,它使用标准协议(flosc)运行,可以连接到多个服务器。令人惊讶的是,该应用程序只花了大约5%的时间解析数据,而绝大多数时间都花在渲染上。现在我开始怀疑,如果一切都是从一个异常开始的,那么从那以后,一切都会被抛在脑后。好吧,是的,如果你没有管理好你的异常,那么有些事情可能会失败。您是否正在使用调试播放器/插件ActiveX?此外,我可能只需要保持一个队列,可能是n个事件的FIFO,然后将它们从flosc提要推到队列中,并在处理它们时将它们拉出。如果队列处于最大大小,则从任意一端弹出一个队列(取决于最有效的方式)。另一个选项是根据事件的重要性,以及它被捕获的时间,给所有事件类型赋予权重,然后使用一个由n个项目组成的优先级队列。事实证明,在我的代码中,它实际上是一个“更深”抛出的异常。一旦抛出异常,flash就再也追不上了,只是不断地得到更多的异常。发生的事情是,当应用程序获得大量输入时,它可能会以错误的顺序获得触摸事件,即触摸移动将在触摸后到达。我的逻辑没有处理这个问题,所以它尝试更新一些不存在的东西,从而使用已经删除的实例。但一旦我找到它,这是一个简单的解决方法。恭喜!很高兴看到你解决了。