2

前几天 Autodesk Forge 释出新版本的 Viewer - v3.2,自此版本开始 Viewer Tool 引入优先级机制,每个 Tool 都可以各自设置自个的优先级,而这个优先级会被 ToolController 用来对那些已经注册在 ToolController 里的 Tool 进行排序,目前所有 Tool 的优先级默认都是 0,并会以下面这个方式设置:

this.getPriority = function() {
   return 0;
};

Tool 优先级的数值越高者则可以更优先处理 viewer 的交互事件,如 handleSingleClickhandleDoubleClickhandleKeyDown 等,使用样例如下:

class MyTool extends Autodesk.Viewing.ToolInterface {
    construtor() {
        supper();
        
        this.names = [ 'mytool' ];
    }
}

class MyHighPriorityTool extends Autodesk.Viewing.ToolInterface {
    construtor() {
        supper();
        
        this.names = [ 'mytool-high-priority' ];
    }
    
    // 修改默认优先级
    getPriority() {
        return 1000;
    }
}

//注册工具
viewer.toolController.registerTool( new MyTool() );
viewer.toolController.registerTool( new MyHighPriorityTool() );

//启用工具
viewer.toolController.activateTool( 'mytool' );
viewer.toolController.activateTool( 'mytool-high-priority' );

上面样例是通过创建两个自定义工具来展示如何设置优先级,在这样设置后 MyHighPriorityTool 会比其他注册在 ToolController 里且启用的工具保有更高的优先级来处理 viewer 的交互事件。


康益昇
748 声望103 粉丝