2

我创建了一个 cordova Android 应用程序,用户在其中点击一个链接并启动 jsartoolkit。第一次一切正常,但如果我点击后退按钮然后再次打开链接,几次后它会失败并出现错误:

“类型错误:artoolkit.setup 不是函数”

它在尝试加载时发生ARCameraParam (Data/camera_para.dat)- 我尝试将它直接加载到 arcontroller 中var arController = new ARController(video, 'Data/camera_para.dat'),也就是先加载它arCamera = new ARCameraParam

这个错误表明artoolkit.min.js几次后没有加载,但我对为什么会这样感到困惑。这不是缓存问题 - 如果我在发生时清除应用程序缓存然后重试,它仍然无法加载。我第一次安装应用程序时它总是工作正常,如果我强制停止应用程序,这表明有一个进程从我不知道的上一个会话运行。当我点击后退按钮时,我尝试在 arcontroller 和 arcameraparam 上调用 dispose ,但这并没有解决它。

有谁知道 jsartoolkit 可能正在运行哪些进程可能会导致这样的错误?非常感谢任何建议。相关代码:

window.ARThreeOnLoad = function() {
    function gotStream(stream) {
        camvideo.src = window.URL.createObjectURL(stream);  
        nextBit(camvideo);
        track = stream.getVideoTracks()[0];

camvideo.onerror = function(e) 
{   stream.stop();   };

stream.onended = noStream;
}

function noStream(e) {
        alert("no stream " + e);
        var msg = 'No camera available.';
    if (e.code == 1) {   
        msg = 'User denied access to use camera.';   }
        document.getElementById('errorMessage').textContent = msg;
     }



   var camvideo = document.getElementById('monitor'); 

   var constraints = { video: {facingMode: {exact: "environment"}, width: 1280, height: 960} };

    navigator.mediaDevices.getUserMedia(constraints).then(gotStream).catch(noStream);


}


function nextBit(video) {
    var arController = new ARController(video, 'Data/camera_para.dat');
    arController.onload = function() {
           arController.image = video;
4

0 回答 0