javascript - Android 浏览器在 "double swipe"滚动后停止渲染 Canvas

标签 javascript android html canvas scroll

我有一个全屏网络应用程序在装有 Android v2.3.6 的 Nexus One 上运行。我已尽我所能防止滚动。我在以下事件中调用 preventDefault()stopPropagation():

document.addEventListener('touchmove', eventCanceller, false );
document.addEventListener('touchstart',eventCanceller, false );
document.addEventListener('touchend',eventCanceller, false );
document.addEventListener('wheel',eventCanceller, false );
document.addEventListener('mousewheel',eventCanceller, false );
document.addEventListener('DOMMouseScroll',eventCanceller, false );

window.addEventListener('touchmove',eventCanceller, false );
window.addEventListener('touchstart',eventCanceller, false );
window.addEventListener('touchend',eventCanceller, false );
window.addEventListener('wheel',eventCanceller, false );
window.addEventListener('mousewheel',eventCanceller, false );
window.addEventListener('DOMMouseScroll',eventCanceller, false );

canvas.addEventListener('click',eventCanceller, false);
canvas.addEventListener('dblclick',eventCanceller, false);

在我处理这些事件后,我也会停止传播并防止默认这些事件。

canvas.addEventListener('touchstart',handleEvent, false);
canvas.addEventListener('touchmove',handleEvent, false);
canvas.addEventListener('touchend',handleEvent, false);

该应用程序运行正常,所有意外滚动都被抑制了。除此之外,如果我快速进行两次或更多次小的滑动,URL 栏会向下滚动, Canvas 上的所有渲染都会停止。没有javascript错误,调试显示应用程序继续运行,我的绘制函数继续被调用,它认为它仍然有一个有效的2DContext,但是屏幕被卡住了。如果我使用轨迹球滚动屏幕,渲染会重新开始。我在 Kindle Fire 上看到的完全一样。在该设备上,如果我切换到/退出全屏模式,渲染将重新开始。

有什么方法可以抑制我在“双击”时看到的这种卡住/滚动效果吗?

最佳答案

我吃过这个。

它可能在 Android 4.1 上已修复(显然与触摸事件有关的很多事情都是如此)。

在我现在正在开发的 android 2.3 上,我有一个令人作呕的解决方法,就是我这样做。

    // force a reflow of the canvas in case it has hung (on android)
    canvas.width = canvas.width-1;
    canvas.width=canvas.width+1;

我目前每帧都这样做(无论如何我只以 20fps 的速度运行),而且它似乎工作正常。

恶心。

关于javascript - Android 浏览器在 "double swipe"滚动后停止渲染 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993835/

相关文章:

javascript - 如何使用 Underscore JS 计算嵌套 JSON 中的总和

java - 自动通过 Intent 进行指示

android - 如何从包含 Android 自动下载图片的 url 中读取图片?

html - 显示属性 - 表格、行、单元格 - 如何为现在显示为一行的每个 LI 的底部添加边框?

javascript - 有没有一种方法可以在不使用表单的情况下计算一个数字并在 HTML5 中显示结果?

javascript - JQuery:在父容器中显示/隐藏图像

javascript - Ember 路由混合模型

html - 将字段集数据显示到页面中心

javascript - box2d 力(applyimpulse 和 applyforce)

java - 在应用程序中动态更改布局