SView消息机制
消息监听
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数据加载完毕
}
}
}