tuio.as,as3 上实现多点触摸的支持类。功能是解析 Flosc 发送的内容,产生 as3 上的多点触摸事件(这个类主要是网络传输层的支持,产生 as3 可以处理的事件,但是还没有实现多点触摸。这样的触摸效果再一些更高层的类实现,比如 RotatableScalable.as,处理 tuio.as 产生的事件,然后生成多点旋转、缩放效果)。
这里记录一下 tuio.as 都做了什么。
在构造中,tuio 启动了一个 xmlsocket,看名字,是一个处理 xml 格式的 socket 链接。链接的位置在构造的参数里给。比如,按照默认设置链接到 localhost:3000 这个端口。在这个端口上,必须已经运行着一个 Flosc,或者类似的东西。这里可以做这样的测试:开始-运行-cmd,然后 telnet 127.0.0.1 3000,如果一闪之后窗口整个变黑,有一个点闪动,这说明底层支持没有问题,tuio 将正常运行;如果提示连接失败,就是支持还没有启动。
在链接完成后,有这个函数:private static function processMessage(msg:XML):void,这是在事件级别处理 socket 得到的内容,向下看,解析了 xml 字符,就是 tuio 协议吧,主要是得出 x、y 等等这样类似的坐标信息,当然要知道 tuio 的具体内容,才能更准确。在解析完成后,函数后面调用了dispatchEvent(对象),就是产生了 as3 的自定义事件——这里是多点触摸事件。
还有其他的功能,比如根据构造的参数判断是否产生调试信息。
基本上就是这些。
因此,可以设想,只要在任何语言(比如c#),链接到那个端口(localhost 3000),然后解析 xml,然后就可以得到多点触摸事件。
不过还要带一个 Flosc,不爽。
虽然 osc 是更底层的协议,不过只要找到说明,也可以实现,这样,就不用这个桥了,直接解析底层协议,因此就不用 tuio 这个 xml 文本,直接自己产生事件。
想象可以用 c# 直接实现,而不必用不习惯的 as3,挺爽的哈。
不过还要实现 RotatableScalable 这样的最终效果,还有画图、做动画,等等。
在想想 flash 里面方便的动画制作,as3 的易学,用 c# 做这东西玩一下可以,没什么实用价值。
如果考虑到性能,为什么不直接用 c++?