SView Help Center
English (US)

SView消息机制

Author: sviewngts Last Updated: 2026-09-08 15:56

消息监听

    1、添加消息监听可以使用SView for HTML5包中js文件夹下的sview.html5.js中已添加的消息回调函数,即update方法,在其中新增case类型即可;
    2、或直接添加消息监听,另消息监听需要在class中添加,可以参考如下代码:

class MessageListener{
   frame = null;
   constructor(frame){
       this.frame = frame;
       //此处标识自己去监听frame的消息,一般所需的消息都会从frame中转发出来
       M3D.Utility.M3DMessageCenter.getCenter().subscribe(this, this.frame);
   }
   update(msg){
       switch(msg.type){
           case M3D.Utility.MessageType.Selector:
           break;
       }
   }
}
new MessageListener(frame);

监听选择器消息

    选择器常用消息有添加、移除、清空消息,在上述update方法中添加对应case即可,代码如下:

case M3D.Utility.MessageType.Selector:
{
   //添加、移除、清空选择器中的Shape对象数组
   let shapes = msg.shapes;
   if(msg.state === M3D.Utility.OperaState.Add){
       //添加
   }else if(msg.state === M3D.Utility.OperaState.Remove){
       //移除
   }else if(msg.state === M3D.Utility.OperaState.Clear){
       //清空
   }
}
break;

监听读取器消息

case M3D.Utility.MessageType.Read:
{
   if(msg.progress === 100){
       //进度为100时表示读取完毕
   }else if(msg.exception){
       //msg中存在exception表示读取存在异常
   }
}
break;

监听加载器消息

case M3D.Utility.MessageType.Loader:
    {
        if(msg.state === M3D.Utility.OperaState.End){
            if(msg.loadType == M3D.FILE_MODELVIEW){
                //视图数据加载完毕
            }else if(msg.loadType === M3D.FILE_PMI){
                //PMI数据加载完毕
            }
        }
    }