理论教育 VegaPrime:配置键盘函数指南

VegaPrime:配置键盘函数指南

时间:2023-11-24 理论教育 版权反馈
【摘要】:在很多时候,使用键盘控制场景中的物体也是一项基本要求。该函数的具体代码如图6.10.2所示,其中的静态变量PublicMember::CTS_pObject_observer 是定义设置的观察者对象指针,定义方法与前面定义静态成员变量一样。图6.10.1键盘类继承图图6.10.2键盘函数定义完键盘函数PublicMember::CTS_Keyboard 后,还需要把它设置成对应窗口的键盘函数才能真正起作用。图6.10.3所示为改造后的完整主线程程序,请仔细查看其中加粗了字体的代码。图6.10.3Vega Prime应用程序主线程函数

VegaPrime:配置键盘函数指南

在很多时候,使用键盘控制场景中的物体也是一项基本要求。本节将编码实现键盘对观察者的控制。

引入键盘类的头文件为:#include “vpInputKeyboard.h”。

键盘类视图如图6.10.1所示。Vega Prime 提供了键盘对应的全部功能键,比如小写字母f 对应vpWindow::KEY_f,大写字母 F 对应 vpWindow::KEY_F,上下键分别对应vpWindow::KEY_UP 和vpWindow::KEY_DOWN,左右键分别对应vpWindow::KEY_LEFT 和vpWindow::KEY_RIGHT。

首先,为了使用方便,像定义声明主线程函数一样,定义声明键盘函数:

//运动场景键盘操作函数

static void CTS_Keyboard(vpWindow *window,vpWindow::Key key,int modifier,void *);

把该函数定义为PublicMeber 类的静态成员函数,其中最关心的是该函数的第2个参数key,它用来识别用户的按键。该函数的具体代码如图6.10.2所示,其中的静态变量PublicMember::CTS_pObject_observer 是定义设置的观察者对象指针,定义方法与前面定义静态成员变量一样。

图6.10.1 键盘类继承图

图6.10.2 键盘函数

定义完键盘函数PublicMember::CTS_Keyboard 后,还需要把它设置成对应窗口的键盘函数才能真正起作用。在主线程中,将添加以下代码:

//设置窗体

vpWindow * vpWin= * vpWindow::begin();

vpWin->setParent(PublicMember::CTS_RunningWindow);

vpWin->setBorderEnable(false);(www.daowen.com)

vpWin->setFullScreenEnable(true);

//设置键盘

vpWin->setInputEnable(true);

vpWin->setKeyboardFunc((vrWindow::KeyboardFunc)PublicMember::CTS_Keyboard,NULL);

vpWin->open();

::SetFocus(vpWin->getWindow());

其中,第2行、第3行、第4行代码分别设置了窗体的位置、边界、全屏,对键盘函数的设定,实际上包含以下两行代码:

vpWin->setInputEnable(true);

vpWin->setKeyboardFunc((vrWindow::KeyboardFunc)PublicMember::CTS_Keyboard,NULL);

在主线程中对观察者对象指针PublicMember::CTS_pObject_observer 进行了赋值,其中的代码如下:

//设置观察者

PublicMember::CTS_pObject_observer=vpObject::find("hummer");

PublicMember::CTS_pObject_observer->ref();

在前面已经用代码把观察者绑定到了汽车上,实际上,并没有直接获取观察者指针的值,而是根据名称获取了汽车对象指针的值,操作汽车就能跟随汽车观察场景了。图6.10.3所示为改造后的完整主线程程序,请仔细查看其中加粗了字体的代码。

图6.10.3 Vega Prime应用程序主线程函数

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈