1.5.2 响应器对象操作


响应器是指主动对外提供窗口交互功能的对象。比例拖动鼠标或者按下键盘按键时,窗口会做出相应反应,这个做出反应的对象就是响应器。

CooRun SDK提供了数据拾取、编辑,UI界面、截图、动态气泡等响应器对象,为客户提供了良好的窗口交互功能。

响应器提供创建、添加、更新、删除四种操作。

注意:一个场景中一种响应器只能存在一个。

响应器添加

一般来说,在添加响应器之前必须先创建响应器,因此响应器创建和添加是同时使用的。响应器添加分为4步操作:

1.调用场景map对象的CreateResponserOptions()接口进行响应器配置对象创建。

2.调用第一步创建的响应器配置对象的AddConfig()接口,添加配置信息。

3.调用场景map对象的CreateResponser()接口进行响应器创建。

4.调用场景map对象的AddResponser()接口将响应器添加到场景中。

对于响应器添加的四步操作来说,主要是第2和第3步操作会有所不同。针对第二步进行参数配置,后续的功能说明会一一讲解。

对于第3步的CreateResponser()接口原型为:CreateResponser(BSTR type, IUnknown* opt)。其中第一个参数代表创建的响应器类型,它的取值有以下几种

编号 响应器类型 配置值说明
1 PickModelResponser 模型拾取响应器
2 PickObliqueResponser 单体化拾取响应器
3 PickVectorResponser 矢量拾取响应器
4 VectorEditResponser 矢量编辑响应器
5 AxisEditResponser 拖拽器
6 UILogoResponser Logo响应器
7 UICrossResponser 中心十字标响应器
8 UICompassResponser 罗盘响应器
9 UITipsResponser 提示文字响应器
10 UIStateResponser 状态栏响应器
11 UICaptionResponser 字幕响应器
12 UIFullScreenResponser 全屏按钮响应器(内置功能)
13 SceneshotResponser 截图响应器

代码调用示例

Javascript调用

var resp = map.CreateResponserOptions("res");//1.创建响应器配置,名称任意
//2.设置配置参数
resp.AddConfig("PickLayerIdList", "-1");//作用图层Id列表
resp.AddConfig("PickColor", "1.0,0.0,0.0,0.5");//拾取颜色
resp.AddConfig("IsChangeColor", "true");//是否变色
Var pickRes= map.CreateResponser("PickModelResponser", resp);//3.创建响应器
pickRes.AddObserver();//添加事件监听
map.AddResponser(pickRes); //4.添加响应器

C++调用

ConfigOptionsCOMLib::IResponserOptionPtr resp =(ConfigOptionsCOMLib::IResponserOptionPtr)map->CreateResponserOptions("model");//1.创建响应器配置,参数任意名称
//2.设置配置参数
resp->AddConfig("PickLayerIdList", "-1");//传-1则默认遍历所有模型图层,若为多个图层,可使用xx,xx,xx此种格式
resp->AddConfig("PickColor", "1.0,0.0,0.0,0.5");//拾取颜色
resp->AddConfig("IsChangeColor", "true");//是否变色
resp->AddConfig("IsGetLayerID", "true");//是否需要获取节点所在图层ID
BaseObjectCOMLib::IResponserObjectPtr pickRes = map->CreateResponser("PickModelResponser", resp);//3.创建模型拾取响应器,第一参必须为PickModelResponser字符串
pickRes->AddObserver();    //添加监听
map->AddResponser(pickModelResponser); //4.添加响应器

C#调用

IResponserOption resp = (IResponserOption)map.CreateResponserOptions("model");//1.创建响应器配置对象,参数任意名称
//2.设置配置参数
resp.AddConfig("PickLayerIdList", "-1");//拾取图层Id。传-1则默认遍历所有模型图层,若为多个图层,可使用xx,xx,xx此种格式
resp.AddConfig("PickColor", "1.0,0.0,0.0,0.5");//拾取颜色
resp.AddConfig("IsChangeColor", "true");//是否变色
resp.AddConfig("IsGetLayerID", "true");//是否需要获取节点所在图层ID
IResponserObject pickRes = map.CreateResponser("PickModelResponser", resp);//3.创建响应器对象,PickModelResponser代表模型拾取响应器
pickRes.AddObserver();//添加监听
map.AddResponser(pickModelResponser);//4.添加响应器对象

响应器更新

响应器更新是对已经添加到场景中的响应器进行部分参数更新,以达到改变之前效果的操作。

更新响应器一般分为3步操作:

1.调用场景map对象的CreateResponserOptions()接口进行响应器配置对象创建。

2.调用第一步创建的响应器配置对象的AddConfig()接口,添加配置信息。

3.调用响应器对象的UpdateResponserOptions()接口进行响应器更新。

代码调用示例

Javascript调用

var resp = map.CreateResponserOptions("model");//1.创建响应器配置
//2.设置配置参数
resp.AddConfig("PickLayerIdList", "-1");//作用图层Id列表
resp.AddConfig("PickColor", "1.0,0.0,0.0,0.5");//拾取颜色
resp.AddConfig("IsChangeColor", "true");//是否变色
pickRes.UpdateResponserOptions(resp);//3.更新响应器对象

C++调用

ConfigOptionsCOMLib::IResponserOptionPtr resp =(ConfigOptionsCOMLib::IResponserOptionPtr)map->CreateResponserOptions("model");//1.创建响应器配置,参数任意名称
//2.设置配置参数
resp->AddConfig("PickLayerIdList", "-1");//传-1则默认遍历所有模型图层,若为多个图层,可使用xx,xx,xx此种格式
resp->AddConfig("PickColor", "1.0,1.0,0.0,0.5");//拾取颜色
resp->AddConfig("IsChangeColor", "true");//是否变色
resp->AddConfig("IsGetLayerID", "false");//是否需要获取节点所在图层ID
pickRes->UpdateResponserOptions(resp);//3.更新拾取响应器

C#调用

IResponserOption resp = (IResponserOption)map.CreateResponserOptions("model");//1.创建响应器配置对象,参数任意名称
//2.设置配置参数
resp.AddConfig("PickLayerIdList", "-1");//拾取图层Id。传-1则默认遍历所有模型图层,若为多个图层,可使用xx,xx,xx此种格式
resp.AddConfig("PickColor", "1.0,1.0,0.0,0.5");//拾取颜色
resp.AddConfig("IsChangeColor", "true");//是否变色
resp.AddConfig("IsGetLayerID", "false");//是否需要获取节点所在图层ID
pickRes.UpdateResponserOptions(resp);//3.更新响应器对象

响应器删除

响应器添加到场景中之后,如果需要移除,可以调用RemoveResponser()接口。

注意:同一类型的响应器对象在场景中有且只能有一个,因此在删除时,传递的参数是响应器类型。

代码调用示例

Javascript调用

map.RemoveResponser("PickModelResponser");//删除响应器对象
pickRes = null;

C++调用

map->RemoveResponser("PickModelResponser");//删除响应器对象
pickRes=NULL;

C#调用

map.RemoveResponser("PickModelResponser");//删除响应器对象
pickRes = null;

results matching ""

    No results matching ""