好吧,我已經在幾天前的最後一個問題後取得了一些進展,但在JavaScript和Three.js方面我還是很新的,並且正在遇到這個新問題。Javascript CustomEvent的詳細信息是否爲空?
我試圖通過一個OBJ文件加載一些three.js幾何作爲與自定義事件相關的細節,以便我可以進一步處理它。這是有道理的做這樣的OBJLoader異步運行:
function loadObjAsMesh(obj) { // Obj Resource URL: Example: 'assets/monster.obj'
\t var geometry;
\t var mesh;
\t loader = new THREE.OBJLoader();
\t \t \t
\t console.log('About to call loader.load'); \t \t
\t \t \t
\t loader.load(
\t \t obj , function (object) {
\t \t
\t \t \t console.log('Starting to run loader.load CALLBACK');
\t \t \t
\t \t \t geometry = new THREE.Geometry().fromBufferGeometry(object.children["0"].geometry);
\t \t \t \t \t \t
\t \t \t mesh = new THREE.Mesh (geometry, sceneEntities.materials.bluePhongSolid);
\t \t \t
\t \t \t console.log(mesh);
\t \t \t
\t \t \t scene.add(mesh);
\t \t \t
\t \t \t console.log ('About to dispatch the Finished Loading Event');
\t \t \t
\t \t \t dispatchEvent(sceneSyntheticEvents.objectFinishedLoading, {
\t \t \t \t detail : {
\t \t \t \t \t passedMesh : mesh
\t \t \t \t \t \t }
\t \t \t \t \t } \t \t \t \t \t
\t \t \t \t);
\t \t \t
\t \t \t console.log ('Just Dispatched the Finished Loading Event');
\t \t \t console.log (sceneSyntheticEvents.objectFinishedLoading);
\t \t \t
\t \t \t console.log('Done running loader.load CALLBACK'); \t \t
\t \t
\t \t \t } \t);
\t
\t console.log('Done calling loader.load');
}
然後,這裏的事件監聽:
function events() {
\t
\t sceneSyntheticEvents.objectFinishedLoading = new CustomEvent('objectFinishedLoading');
\t
\t console.log ('About to catch the Finshed Loading Event');
\t
\t addEventListener('objectFinishedLoading', function (e) { console.log (e.detail.passedMesh); }, false);
\t
\t console.log ('Just Caught the Finished Loading Event');
}
事件是成功開火併聽取了聽衆的意見。問題是event.detail爲空。我嘗試過幾種不同的格式化細節 - 沒有骰子,所以我很確定這不是語法或約定的問題。
我已經在應用程序中看到了一大堆儀器,正如您所看到的,清楚地表明問題一旦事件觸發就會發生。這並不是說聽衆沒有得到e.detail。不知何故,細節並沒有被包含在事件發生的瞬間。
我甚至嘗試用一些不同的方法測試整數,認爲問題是網格。我想這比如:
\t \t \t dispatchEvent(sceneSyntheticEvents.objectFinishedLoading, {
\t \t \t \t detail : {
\t \t \t \t \t passedMesh : "32"
\t \t \t \t \t \t }
\t \t \t \t \t }
和...
\t \t \t dispatchEvent(sceneSyntheticEvents.objectFinishedLoading, {
\t \t \t \t detail : "32"
\t \t \t \t \t }
即使如此,控制檯報告:
CustomEvent {isTrusted: false, detail: null, type: "objectFinishedLoading", target: Window, currentTarget: Window…}
細節:空? 「detail」用引號引起來,而不是用引號引起來,沒有差異。
我很清楚這一點在我的頭上。有任何想法嗎?
謝謝。
謝謝!像魅力一樣工作!我現在想知道這是否顯示在我一直檢查的所有文檔中?感謝Arun P Johny爲我挽救了頭痛。 –
@MarkScottLavin如果你看看我上面提到的文檔,很明顯'dispatchEvent'只有一個參數 –