[英]Autodesk Forge Viewer - How do I fire an event after model loading is complete?
How do I fire an event after model loading is complete? model 加载完成后如何触发事件?
I created the "basicSetting" function below.我在下面创建了“basicSetting”function。
function basicSetting(){
viewer.setLightPreset(1);
viewer.setQualityLevel(false, false);
viewer.setGhosting(true);
viewer.setGroundShadow(false);
viewer.setGroundReflection(false);
viewer.setEnvMapBackground(false);
viewer.setProgressiveRendering(true);
}
And I applied it to the "onDocumentLoadSuccess" function.我将它应用于“onDocumentLoadSuccess”function。
But it didn't work.但它没有用。
Help!帮助!
You can use the GEOMETRY_LOADED_EVENT
as per this link and use it like this after you have initialised a viewer.您可以按照此链接使用GEOMETRY_LOADED_EVENT
并在初始化查看器后像这样使用它。
In typescript (using forge-typings)在 typescript 中(使用伪造类型)
this.viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, (x) =>
{
basicSetting();
}
Or if you wanna be extra save and make sure the function is never called elsewhere, just remove it and place its contents in the event callback.或者,如果您想额外保存并确保 function 永远不会在其他地方调用,只需将其删除并将其内容放在事件回调中。
this.viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, (x) =>
{
this.viewer.setLightPreset(1);
this.viewer.setQualityLevel(false, false);
this.viewer.setGhosting(true);
this.viewer.setGroundShadow(false);
this.viewer.setGroundReflection(false);
this.viewer.setEnvMapBackground(false);
this.viewer.setProgressiveRendering(true);
}
Not sure in which languages you are developing but it should be pretty simular !不确定您正在开发哪种语言,但它应该非常相似!
You can use a promise waiting for viewer loading finish like as:您可以使用 promise 等待查看器加载完成,如下所示:
var loadedPromise = new Promise((resolve, reject) => {
var listener = function (event) {
baseViewer.removeEventListener(
Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
listener
);
resolve();
}
baseViewer.addEventListener(
Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
listener
);
}); }); await loadedPromise;等待加载的承诺;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.