混淆了查看器API与示例,将选项传递给扩展
Confused with Viewer API vs example, passing options to extensions
我很困惑,因为关于如何使用Viewer的示例似乎与API的文档不匹配,有些函数不在文档中,或者它们的签名不同。
基于示例代码,我如何将选项传递给我实例化的扩展?我想给我的分机打个回叫。
谢谢!
我们需要修复文档,使其不再依赖于未记录的A360查看器附加代码,该代码应该是内部的。很抱歉给您带来不便,我们会尽快完成。。。
目前,您可以使用我的查看器样板示例中的代码:
function initializeViewer(containerId, urn) {
Autodesk.Viewing.Document.load(urn, function (model) {
var rootItem = model.getRootItem();
// Grab all 3D items
var geometryItems3d = Autodesk.Viewing.Document.getSubItemsWithProperties(
rootItem,
{ 'type': 'geometry', 'role': '3d' },
true);
// Grab all 2D items
var geometryItems2d = Autodesk.Viewing.Document.getSubItemsWithProperties(
rootItem,
{ 'type': 'geometry', 'role': '2d' },
true);
var domContainer = document.getElementById(containerId);
//UI-less Version: viewer without any Autodesk buttons and commands
//viewer = new Autodesk.Viewing.Viewer3D(domContainer);
//GUI Version: viewer with controls
viewer = new Autodesk.Viewing.Private.GuiViewer3D(domContainer);
viewer.initialize();
viewer.setLightPreset(8);
//Button events - two buttons to load/unload a sample extension
// Irrelevant to viewer code itself
var loadBtn = document.getElementById('loadBtn');
loadBtn.addEventListener("click", function(){
loadExtension(viewer);
});
var unloadBtn = document.getElementById('unloadBtn');
unloadBtn.addEventListener("click", function(){
unloadExtension(viewer);
});
// Illustrates how to listen to events
// Geometry loaded is fired once the model is fully loaded
// It is safe to perform operation involving model structure at this point
viewer.addEventListener(
Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
onGeometryLoaded);
//optional
var options = {
globalOffset: {
x: 0, y: 0, z: 0
}
}
// Pick the first 3D item ortherwise first 2D item
var viewablePath = (geometryItems3d.length ?
geometryItems3d[0] :
geometryItems2d[0]);
viewer.loadModel(
model.getViewablePath(viewablePath),
options);
}, function(err) {
logError(err);
});
}
一旦查看器初始化,您就可以独立加载每个扩展并按如下方式传递回调:
var options = {
onCustomEventFiredByMyExtension: function() {
console.log('LMV rulez!')
}
}
viewer.loadExtension('MyExtensionId', options)
但我认为一个更优雅的方法是从扩展本身启动事件,它可能看起来像这样:
viewer.loadExtension('MyExtensionId')
var myExtension = viewer.getExtension('MyExtensionId')
myExtension.on('CustomEvent', function () {
console.log('LMV still rulez!')
})
有关超级简单的事件库,请参阅微事件。
相关文章:
- 从选项页面更新chrome扩展清单权限
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- 更改Chrome扩展中的选项卡位置
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 如何重定向当前选项卡'Chrome扩展中的url
- '让块'仅在Mozilla JavaScript扩展中可用(使用moz选项)
- 更新选项卡开关/更改上的chrome扩展图标
- Chrome扩展插件:runtime.last运行tabs.get/tabs.remove时出错:没有id为0的选项卡
- 如何在火狐扩展的新选项卡中打开网址
- 扩展 $.mobile.changePage 以接受更多选项
- 从Javascript中的Chrome扩展获取选项卡url
- Chrome扩展-仅更改活动选项卡的default_icon
- 如何从Google Chrome扩展中观察选项卡中的更改
- 如何在chrome扩展中检索活动选项卡、后台消息侦听器内部
- Chrome扩展-重定向当前选项卡后重新运行扩展脚本
- Javascript在Google Chrome扩展的选项页中不起作用
- 使用Chrome扩展从以前的选项卡中获取变量
- chrome扩展多个选项卡和chrome.runtime.connect
- 使用新选项扩展 jquery-ui-datepicker
- 如何在jquery插件中将选项扩展为全局