让我们说我正在倾听touchstart,touchmove并touchend在body元素上.
如果我错了,请告诉我,但我认为e.touches是一样的e.targetTouches?如果是这样,e.changedTouches与它们有何不同?
我的意思是,只要在一个特定时刻触摸一下,我就会取出touchevent并解析它.根据我的经验,所有三个触摸变量都是相同的.
我必须将解析后的数据发送到服务器,发送三次完全相同的字符串是非常多余的,是不是有任何方式发送它们一次并以编程方式重现服务器上的touchevent?
我正在使用easlejs + phonegap处理HTML5游戏,并且遇到了每次在画布上单击/触摸/ mousedown时屏幕闪烁的问题.
下面是我为测试问题而创建的非常简单的代码,看它是否与easlejs相关.从代码中可以看出,它与easlejs无关,只是一个html5/phonegap问题.
你可以看到我也尝试了没有选择的CSS样式,没有运气.

<!doctype html>
<html>
<head>
<title></title>
<style type="text/css">
#canvas
{
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
}
</style>
</head>
<body>
<canvas id="canvas" width="320" height="480"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
canvas.addEventListener("mousedown", function(e)
{
var ctx = canvas.getContext("2d");
var x = Math.random() * 320;
var y = Math.random() * 480;
var w = Math.random() * 100;
var h = Math.random() * 100;
ctx.fillStyle = "#FF0000";
ctx.fillRect(x,y,w,h);
}, false);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 每当触摸(并保持)画布时,它都会以较暗的颜色突出显示.触摸释放后,恢复正常.它不像文本选择,它与iPhone在超链接上使用的亮点相同.
我使用jQuery来绑定事件:
$('canvas').bind('mousedown touchstart', function(e) {
var c = $(this), offset = c.offset();
var touch = {
x: (e.targetTouches ? e.targetTouches[0].pageX : e.pageX) - offset.left,
y: (e.targetTouches ? e.targetTouches[0].pageY : e.pageY) - offset.top
};
testApp.lastTouch = touch;
return false;
});
Run Code Online (Sandbox Code Playgroud)
当应用程序保存到"主屏幕"时,问题会更严重.当触摸画布的边缘时,它确实发生在Web浏览器中,但是在主屏幕应用程序上,它无论触摸的是哪个画布都可以.
可能是这个问题的原因是什么?