gpt4 book ai didi

javascript - 使用 touchstart 会导致屏幕在 touchstart 时变得模糊

转载 作者:数据小太阳 更新时间:2023-10-29 05:30:39 26 4
gpt4 key购买 nike

我目前正在我的设备 (Samsung galaxy S2) 上为我的游戏测试触摸启动功能。我在 android 中使用封装在 phonegap 下的 javascript 和 jquery 进行编程,目前遇到如下问题:

  • 我的触摸启动事件(例如触发攻击按钮“touchstart”事件以运行一些 javascript 来执行攻击操作)导致我的屏幕暂时变得模糊,然后在不到一秒内恢复正常,因此更像一个屏幕在图像变得抖动的地方闪烁)。我没有使用 css 转换或过渡,只是使用普通的 css 和图像。

如果有人遇到过或多或少与我类似的问题,请告诉我。有点不知所措,无论是硬件问题还是 touchstart 问题,我可以在哪里解决该问题。

下面的 Javascript 示例用于我的导航控件(左、上、下、右触摸开始点击):

if ('ontouchstart' in document.documentElement) {
var left = document.getElementById('left');
left.addEventListener("touchstart", function(e){
if(controlsPlayerChar == '')
{
return false;
}

var l_oldCell = $('#' + controlsPlayerChar).parent().attr('id');
var l_xy = l_oldCell.split('_');
var l_x = l_xy[0];
var l_y = l_xy[1];

if(l_y == 1)
{
direction = "left";
setCharDynamics(controlsPlayerChar);
return false;
}

var l_newCell = l_x + '_' + (parseInt(l_y) - 1);

// validate if next cell is empty
if($('#' + l_newCell + ':has(".shadow")').val() != undefined
|| $('#' + l_newCell + ':has(".ally")').val() != undefined
|| $('#' + l_newCell + ':has(".obstacle")').val() != undefined)
{
direction = "left";
setCharDynamics(controlsPlayerChar);
return false;
}

$('#' + l_newCell).append($('#' + controlsPlayerChar));
$('#' + l_oldCell + ' ' + '#' + controlsPlayerChar).remove();

// set char direction to 'left' and set next footstep
setDirection('left');
setFootstep(footstep);
setCharDynamics(controlsPlayerChar);
});

var up = document.getElementById('up');
up.addEventListener("touchstart", function(e){
if(controlsPlayerChar == '')
{
return false;
}

var u_oldCell = $('#' + controlsPlayerChar).parent().attr('id');
var u_xy = u_oldCell.split('_');
var u_x = u_xy[0];
var u_y = u_xy[1];

if(u_x == 1)
{
direction = "up";
setCharDynamics(controlsPlayerChar);
return false;
}

var u_newCell = (parseInt(u_x) - 1) + '_' + u_y;

// validate if next cell is empty
if($('#' + u_newCell + ':has(".shadow")').val() != undefined
|| $('#' + u_newCell + ':has(".ally")').val() != undefined
|| $('#' + u_newCell + ':has(".obstacle")').val() != undefined)
{
direction = "up";
setCharDynamics(controlsPlayerChar);
return false;
}

$('#' + u_newCell).append($('#' + controlsPlayerChar));
$('#' + u_oldCell + ' ' + '#' + controlsPlayerChar).remove();

// set char direction to 'up' and set next footstep
setDirection('up');
setFootstep(footstep);
setCharDynamics(controlsPlayerChar);
});

var down = document.getElementById('down');
down.addEventListener("touchstart", function(e){
if(controlsPlayerChar == '')
{
return false;
}

var d_oldCell = $('#' + controlsPlayerChar).parent().attr('id');
var d_xy = d_oldCell.split('_');
var d_x = d_xy[0];
var d_y = d_xy[1];

if(d_x == rows)
{
direction = "down";
setCharDynamics(controlsPlayerChar);
return false;
}

var d_newCell = (parseInt(d_x) + 1) + '_' + d_y;
// validate if next cell is empty
if($('#' + d_newCell + ':has(".shadow")').val() != undefined
|| $('#' + d_newCell + ':has(".ally")').val() != undefined
|| $('#' + d_newCell + ':has(".obstacle")').val() != undefined)
{
direction = "down";
setCharDynamics(controlsPlayerChar);
return false;
}

$('#' + d_newCell).append($('#' + controlsPlayerChar));
$('#' + d_oldCell + ' ' + '#' + controlsPlayerChar).remove();

// set char direction to 'down' and set next footstep
setDirection('down');
setFootstep(footstep);
setCharDynamics(controlsPlayerChar);
});

var right = document.getElementById('right');
right.addEventListener("touchstart", function(e){
if(controlsPlayerChar == '')
{
return false;
}

var r_oldCell = $('#' + controlsPlayerChar).parent().attr('id');
var r_xy = r_oldCell.split('_');
var r_x = r_xy[0];
var r_y = r_xy[1];
if(r_y == cols)
{
direction = "right";
setCharDynamics(controlsPlayerChar);
return false;
}

var r_newCell = r_x + '_' + (parseInt(r_y) + 1);

// validate if next cell is empty
if($('#' + r_newCell + ':has(".shadow")').val() != undefined
|| $('#' + r_newCell + ':has(".ally")').val() != undefined
|| $('#' + r_newCell + ':has(".obstacle")').val() != undefined)
{
direction = "right";
setCharDynamics(controlsPlayerChar);
return false;
}

$('#' + r_newCell).append($('#' + controlsPlayerChar));
$('#' + r_oldCell + ' ' + '#' + controlsPlayerChar).remove();

// set char direction to 'right' and set next footstep
setDirection('right');
setFootstep(footstep);
setCharDynamics(controlsPlayerChar);
});
}

如果您认为上述脚本有任何不妥之处,请告诉我。例如,在启动攻击或启动选项菜单时,我在脚本的其他区域添加 touchstart 事件的方式相同。

最佳答案

似乎这是点击突出显示。

您可以尝试在您的控件上应用 -webkit-tap-highlight-color CSS 属性来禁用此效果,或者使用 * 选择器在所有元素中禁用此效果。

例如:

.someelement {
-webkit-tap-highlight-color: transparent;
}

关于javascript - 使用 touchstart 会导致屏幕在 touchstart 时变得模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9187003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com