2016-07-19 4 views
0

ビューアの使い方の例がAPIのドキュメントと一致していないように、一部の機能がドキュメントにないか、 。ビューアAPIと混乱している例と拡張機能にオプションを渡す

例のコードに基づいて、インスタンス化する拡張機能にオプションを渡すにはどうすればよいですか?拡張機能にコールバックを渡したいと思います。

ありがとうございます!

+0

http://developer.autodesk.comのサンプルとドキュメントを使用していますか? –

+0

はい、私はそれを使用しています:) –

+0

どのサンプルで問題がありますか? (何かが矛盾するなら、私はそれを見直すことができる)。 –

答えて

2

文書が文書化されていないため、文書化されていないA360ビューアの内部コードであると思われる追加コードには依存しないようにする必要があります。 incovenienceのため申し訳ありませんが、当分の間...できるだけ早く

これを行うだろう、あなたは私のviewer boilerplate sampleからのコードを使用することができます。

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!') 
}) 

スーパーシンプルイベントライブラリについては、micro-eventsを参照してください。

関連する問題