Javascript 调整屏幕大小后Konva事件定位错误
在我的代码中,我正在调整Konva画布和konvajs内容元素的大小,以保持全屏外观Javascript 调整屏幕大小后Konva事件定位错误,javascript,html5-canvas,konvajs,Javascript,Html5 Canvas,Konvajs,在我的代码中,我正在调整Konva画布和konvajs内容元素的大小,以保持全屏外观 resizeCanvas() window.onresize = function() { resizeCanvas(); } function resizeCanvas() { var w = window, d = document, e = d.documentElement, g = d.getElementsByTagName('body')[0], x = w.in
resizeCanvas()
window.onresize = function() { resizeCanvas(); }
function resizeCanvas() {
var w = window,
d = document,
e = d.documentElement,
g = d.getElementsByTagName('body')[0],
x = w.innerWidth || e.clientWidth || g.clientWidth,
y = w.innerHeight || e.clientHeight || g.clientHeight;
var ratio = x / y;
var should = 1920 / 1080;
var cv = document.getElementsByTagName("canvas")[0];
var cc = document.getElementsByClassName("konvajs-content")[0];
var cx, cy;
var cleft=0;
if(ratio > should) {
cx = (y * 1920/1080);
cy = y;
cleft = (x - cx) / 2;
} else {
cx = x;
cy = (x * 1080/1920);
cv.setAttribute("style", "width:" + x + "px;height:"+ (x*1080/1920) + "px;");
}
cc.setAttribute("style", "width:" + x + "px;height: " + y + "px;");
cv.setAttribute("style", "width:" + cx + "px;heigth: " + cy + "px; position: relative; left: " + cleft + "px");
}
在我尝试捕获任何事件输入之前,这一切都非常有效。正如您在JSFIDLE中看到的,当尝试单击“Test”文本时,不会触发事件
但是,如果单击左侧的~40px和文本上方的20px,则会触发事件
有没有办法保持调整大小行为并确保根据元素的实际位置触发事件?您应该使用
stage.width()
和stage.height()
来适应页面。如果需要,您可以在stage中添加比例。您应该使用stage.width()
和stage.height()
来适应页面。如果需要,您可以在舞台上添加比例