2013-01-16 12 views
6

में वेबलॉग संदर्भ खोए गए ईवेंट को कैसे प्रबंधित करते हैं I Three.js में खोए गए संदर्भ ईवेंट को संभालना चाहते हैं। here के बारे में एक अच्छा प्रलेखन है लेकिन दुर्भाग्य से यह काम नहीं करता है जब मैं इसे अपने renderer.domElement पर लागू करता हूं। मैं क्लिक करके संदर्भ खोने की कोशिश करता हूं और loseContext() में कुछ चर अपरिभाषित हैं।हम तीन.जेएस

मुझे लगता है कि संरचना तीन.जेएस में अलग है। कोई विशेषज्ञ?

उत्तर

7

आपको ऐसा करने में सक्षम होना चाहिए कि प्रस्तुतकर्ता के बारे में कुछ ऐसा करने में सक्षम होना चाहिए और यह सुनिश्चित करना कि आपके द्वारा रेंडरर को संग्रहीत चर को 'रेंडरर' नाम दिया गया है।

renderer.context.canvas.addEventListener("webglcontextlost", function(event) { 
    event.preventDefault(); 
    // animationID would have been set by your call to requestAnimationFrame 
    cancelAnimationFrame(animationID); 
}, false); 

renderer.context.canvas.addEventListener("webglcontextrestored", function(event) { 
    // Do something 
}, false); 

Btw - loseContext three.json द्वारा परिभाषित नहीं है और यह इस समय के रूप में एक मानक पद्धति नहीं है। आप इसे निम्नलिखित करके अनुकरण कर सकते हैं।

लोड इस स्क्रिप्ट Three.js

से पहले https://github.com/vorg/webgl-debug

तब के बाद आप अपने रेंडरर शुरू कर दिया है आप कैनवास को loseContext हुक कर सकते हैं।

renderer.context.canvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderer.context.canvas); 

हार कॉन्टेक्स्ट को ट्रिगर करने के लिए आप ऐसा करेंगे।

renderer.context.canvas.loseContext(); 

और फिर भी आप इसे करके एक निश्चित संख्या में कॉल के बाद विफल हो सकते हैं।

renderer.context.canvas.loseContextInNCalls(5); 
+0

क्या आप कृपया मुझे बता सकते हैं कि यदि आप तीन.जेएस का उपयोग नहीं कर रहे हैं तो आप यह कैसे करेंगे। दूसरे शब्दों में, यदि आप कच्चे WebGL API का उपयोग कर रहे हैं। धन्यवाद। – HartleySan

+1

गैर तीनjs विधि https://www.khronos.org/webgl/wiki/HandlingContextLost – mattdlockyer

+0

थ्रीजेएस के साथ 'webgl-debug.js' का उपयोग करते समय, मैंने पाया कि मुझे मैन्युअल रूप से' renderer.context.canvas.getContext (" webgl ");' renderer.context.canvas.loseContext() का उपयोग करने से पहले; ' – sweeds

संबंधित मुद्दे