Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
flashxml套接字阻塞_Flash_Actionscript 3_Sockets_Multi Touch - Fatal编程技术网

flashxml套接字阻塞

flashxml套接字阻塞,flash,actionscript-3,sockets,multi-touch,Flash,Actionscript 3,Sockets,Multi Touch,我正在尝试解决我构建的多点触控应用程序中的一些问题。它使用与发送多点触控事件的xml套接字服务器通信 在大多数情况下,这一切都很好,很漂亮 但是如果我的意思是用多点触控事件淹没它,Flash就跟不上解析输入,而socket只会不断获取堆积起来的数据,直到它赶上或者整个事情崩溃 一旦输入太多*,我就可以丢弃输入,但我很难想出一个聪明的方法来做到这一点 *该应用程序可以同时输入6-10个数据,没有问题,一旦我必须处理20多个数据,事情就会变得棘手,这基本上意味着有人躺在桌子上;) 哪里窒息了?首先我

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

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

但是如果我的意思是用多点触控事件淹没它,Flash就跟不上解析输入,而socket只会不断获取堆积起来的数据,直到它赶上或者整个事情崩溃

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


*该应用程序可以同时输入6-10个数据,没有问题,一旦我必须处理20多个数据,事情就会变得棘手,这基本上意味着有人躺在桌子上;)

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

配置“服务器”:

  • 进行XML编码需要多少时间
  • 完全写入套接字需要多少时间
配置客户端:

  • 从套接字读取数据需要多长时间
  • 解码XML需要多少时间
就我个人而言,如果可以的话,我会尽量避免使用XML,和/或尝试惰性地解码XML(在您知道需要的时候这样做……这样您就可以在程序过载时丢弃XML块而不浪费cpu周期)

我将尝试使用原始套接字类和自定义数据包格式,即每个索引都包含相关数据的数组。在psudocode中:

messageArray = [message type, arg0, arg1, arg2...];
因此,您可能会定义一个“鼠标移动事件”,如:

MessageConstants.MOUSE_MOVE = 0; // or whatever id you want

messageArray = [MessageConstants.MOUSE_MOVE, mouseDeltaX, mouseDeltaY];
然后使用AMF通过线路序列化数据


希望这有帮助。

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

配置“服务器”:

  • 进行XML编码需要多少时间
  • 完全写入套接字需要多少时间
配置客户端:

  • 从套接字读取数据需要多长时间
  • 解码XML需要多少时间
就我个人而言,如果可以的话,我会尽量避免使用XML,和/或尝试惰性地解码XML(在您知道需要的时候这样做……这样您就可以在程序过载时丢弃XML块而不浪费cpu周期)

我将尝试使用原始套接字类和自定义数据包格式,即每个索引都包含相关数据的数组。在psudocode中:

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就再也追不上了,只是不断地得到更多的异常。发生的事情是,当应用程序获得大量输入时,它可能会以错误的顺序获得触摸事件,即触摸移动将在触摸后到达。我的逻辑没有处理这个问题,所以它尝试更新一些不存在的东西,从而使用已经删除的实例。但一旦我找到它,这是一个简单的解决方法。恭喜!很高兴看到你解决了。