TuioDemo程序二刷

来源:互联网 发布:java 反射获取运行时 编辑:程序博客网 时间:2024/06/02 06:23
终于明白,程序还是要调试才能看懂,加了几句输出语句,就能大概清楚什么时候调用什么函数。
上一次看出来了,run()这个函数是每一帧都会刷新调用一下,并且再run()中的drawObjects(); processEvents();这两个函数也是一直在被调用。
drawObject()函数,应该就是在simulator中获取了事件之后,这边demo的窗口上也绘制出来。所以可以从中找到读取TUIO事件的方法。

获取鼠标的信息:cursor
std::list<TUIO::TuioCursor*> cursorList = tuioClient->getTuioCursors();
for (std::list<TUIO::TuioCursor*>::iterator iter = cursorList.begin(); iter != cursorList.end(); iter++)
通过tuioClient获取到了Cursors的list之后,再用迭代器一个个访问。


可以获取到鼠标点击的X,Y坐标,已经Session ID,Cursor ID等
通过getPath()获取鼠标的路径,
通过getScreenX,Y可以获得鼠标的位置,也就是模拟的手指的位置。
通过getCursorID()获取手指的id

draw object 和 draw blobs部分不知道具体是怎么来的,代码注释掉也没有影响

现在来看看TuioClient是怎么和Server建立连接的:

可以看TuioDemo的构造函数:


osc_receiver 是一个OscReceiver类的对象

OscReceiver是许多OSC传输方法的基类,也是通过这个OscReceiver对象来进行传递消息的。
再看这个UdpReceiver(port)函数,是一个构造函数,UdpReceiver类公有继承了OscReceiver类,所以可以用来构造OscReceiver对象。

这里构造了一个UdpReceiver实例,监听指定的UDP端口。

这里的TuioClient的构造函数构造了一个TuioClient对象,使用了这个osc_receiver来处理OSC数据,参数osc_receiver是OscReceiver的实现。
然后给tuioClient添加这个TUIO的listener。

通过调用这个connect函数,连接和开始接受TUIO消息,从关联的这个oscReceiver对象。

0 0
原创粉丝点击