Javascript 在画布上平移图像后,工具提示无法查看平移位置?
以下是我的代码供参考Javascript 在画布上平移图像后,工具提示无法查看平移位置?,javascript,jquery,canvas,3d,2d,Javascript,Jquery,Canvas,3d,2d,以下是我的代码供参考 一个主要图像显示在画布上 在带有dataJSON对象的图像上,我传递x和y 坐标和画球的图像 然后添加工具提示(功能工具提示FUNC) 但当我平移图像时,这些图像上的工具提示不可见 球在悬停** 在tooltipFunc函数中,如果代码为默认位置,则 页面首次加载。而其他代码用于翻译位置 当我们平移图像以显示工具提示时 但在平移之后,当鼠标悬停在球的图像上时,工具提示是 看不见。当我单击这些球图像时,工具提示是 可见,但不在平移位置 有什么建议吗? //以下是参考代码 va
var isDown = false;
var startCoords = [];
var last = [0, 0];
canvas.onmousedown = function(e){
isDown = true;
startCoords = [
e.offsetX - last[0],
e.offsetY - last[1]
];
};
canvas.onmouseup = function(e){
isDown = false;
last = [
e.offsetX - startCoords[0], // set last coordinates
e.offsetY - startCoords[1]
];
//tooltipFunc(e);
};
canvas.onmousemove = function(e){
tooltipFunc(e); //tooltip function
if(!isDown) return;
var x = e.offsetX;
var y = e.offsetY;
context.setTransform(1, 0, 0, 1, x - startCoords[0], y - startCoords[1]);
draw1(scaleValue);//redrawing image on canvas while panning image
}
function tooltipFunc(e){
var translationX, translationY;
var r = canvas.getBoundingClientRect(),
x = e.clientX - r.left,
y = e.clientY - r.top,
i = 0,
r,
inTooltip = false;
if((typeof startCoords[0] === 'undefined' || startCoords[0] === 'NaN') && (typeof startCoords[1] === 'undefined' || startCoords[1] === 'NaN')){
for (; r = dataJSON[i]; i++) {
if (x >= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(scaleValue) && x <= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(20/scaleValue) && y >= parseInt(dataJSON[i].y[0] * scaleValue) && y <= parseInt(dataJSON[i].y[0] * scaleValue) + parseInt(20/scaleValue)) {
clearTooltip();
showTooltip(e.clientX, e.clientY, i);
inTooltip = true;
}
}
}
else{
for (; r = dataJSON[i]; i++) {
translationX = parseInt(x) - parseInt(startCoords[0]);
translationY = parseInt(y) - parseInt(startCoords[1]);
if (x >= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(translationX) + parseInt(scaleValue) && x <= parseInt(dataJSON[i].x[0] * scaleValue) + parseInt(translationX) + parseInt(20/scaleValue) && y >= parseInt(dataJSON[i].y[0] * scaleValue) + parseInt(translationY) && y <= parseInt(dataJSON[i].y[0] * scaleValue) + parseInt(translationY) + parseInt(20/scaleValue)) {
clearTooltip();
var newX = e.clientX - translationX;
var newY = e.clientY - translationY
showTooltip(newX, newY, i);
inTooltip = true;
}
}
}
}
var isDown=false;
var startCoords=[];
var last=[0,0];
canvas.onmousedown=函数(e){
isDown=真;
startCoords=[
e、 offsetX-上一个[0],
e、 offsetY-最后一个[1]
];
};
canvas.onmouseup=函数(e){
isDown=假;
最后=[
e、 offsetX-StartWord[0],//设置最后一个坐标
e、 offsetY-StartWord[1]
];
//工具提示函数(e);
};
canvas.onmousemove=函数(e){
tooltipFunc(e);//tooltip函数
如果(!isDown)返回;
var x=e.offsetX;
变量y=e.offsetY;
setTransform(1,0,0,1,x-startWord[0],y-startWord[1]);
draw1(scaleValue);//平移图像时在画布上重新绘制图像
}
函数tooltipFunc(e){
变量translationX,translationY;
var r=canvas.getBoundingClientRect(),
x=e.clientX-r.left,
y=e.clientY-r.top,
i=0,
R
inTooltip=false;
如果((星字类型[0]=='undefined'| |星字[0]=='NaN')&((星字类型[1]=='undefined'| |星字类型[1]=='NaN')){
对于(;r=dataJSON[i];i++){
如果(x>=parseInt(dataJSON[i].x[0]*scaleValue)+parseInt(scaleValue)&&x=parseInt(dataJSON[i].y[0]*scaleValue)&&y=parseInt(dataJSON[i].x[0]*scaleValue)+parseInt(translationX)+parseInt(dataJSON[i].y[0]*scaleValue)+parseInt(translationY)&&y没有人有答案/提示/想法?