|
case osgGA::GUIEventAdapter:USH{
···
for(itr=_pointer._hitList.front().first.begin();
itr!=_pointer._hitList.front().first.end();++itr)
{
dragger=dynamic_cast<osgManipulator:ragger*>(*itr);
if(dragger)
{
dragger->handle(_pointer,ea,aa);
_activeDragger=dragger;
break;
}
}
···
case osgGA::GUIEventAdapter::DRAG:
case osgGA::GUIEventAdapter::RELEASE:
{
if(_activeDragger)
{
···
_activeDragger->handle(_pointer,ea,aa);
···
}
}
1.为什么在按下鼠标的时候,itr指向的是什么内容呢,把它强制转换成dragger是什么意思,
2.最让我疑惑的是执行的那个handle方法
因为我重写了一个AxisDragger但明显的,这里执行的handle方法不是属于我重写的那个类的对象的,那么这里是在干什么呢
3.为什么在按下时执行一次这个handle()方法,抬起时执行一次handle()方法,而拖动时什么都不做。这里的PUSH,DRAG和RELEASE和我重写的
拖动器里handle()方法中的PUSH,DRAG,RELEASE之间是如何协调的呢
高手帮忙讲解一下吧,好几个月了,都还不明白 |
|