我创建了一个 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;