mousewheel(和其他类型)的addEventListener不起作用
addEventListener for mousewheel (and other types) not working
需要为画布元素实现放大/缩小(和平移)功能。这是我第一次尝试JavaScript事件,所以我不存在的经验可能是这里的问题。我不知道我使用的类型是否正确。使用了我在网上找到的。
function onLoad() {
var canvas;
var context;
var exampleFamilyTrees;
var topPerson;
var previousMousePosition;
var mousePosition
var pan;
var mouseDown;
var zoom;
function initialise() {
canvas = document.getElementById('canvas');
if (!canvas) {
alert('Error: Canvas element not found');
return;
}
context = canvas.getContext('2d');
if (!context) {
alert('Error: Unable to get canvas context');
return;
}
exampleFamilyTrees = new ExampleFamilyTrees();
topPerson = exampleFamilyTrees.getFamilyTree(0);
pan = new Vector(0, 0);
zoom = 1;
//context.translate(canvas.width*0.5, canvas.height*0.5);
}
function draw() {
context.save();
context.translate(pan.getX(), pan.getY());
context.scale(zoom, zoom);
topPerson.draw(context);
context.restore();
}
initialise();
canvas.addEventListener('mousedown', onMouseDown, false);
canvas.addEventListener('mouseup', onMouseUp, false);
canvas.addEventListener('mousemove', onMouseMove, false);
canvas.addEventListener('mousewheel', onMouseWheel, false);
function onMouseDown(event) {
previousMousePosition = new Vector(event.clientX, event.clientY);
mouseDown = true;
}
function onMouseUp(event) {
mouseDown = false;
}
function onMouseMove(event) {
mousePosition = new Vector(event.clientX, event.clientY);
if (mouseDown) {
var difference = mousePosition.subtract(previousMousePosition);
pan.add(difference);
}
previousMousePosition = mousePosition;
}
function onMouseWheel(event) {
var wheelDelta = event.wheelDelta;
if (wheelDelta > 0){
zoom = zoom * 1.1;
}
else {
zoom = zoom * 0.9;
}
}
setInterval(draw, 1000/60);}
这些功能都不起作用。我想我的语法是错误的。控制台一点也不抱怨。
您的事件被正确绑定,iv'e准备了一个小提琴来演示它,我已经注释了关于Vector
和ExampleFamilyTrees
对象的所有代码,因为我没有它们的构造函数(不确定它是库还是您制作的东西),也为了使示例更简单,因为问题是关于事件处理程序不工作。
在注释掉这些行之前,我在控制台中遇到了一些关于这些对象(Vector
、ExampleFamilyTrees
)的错误。也许你也会犯这些错误,这就是为什么你的事件没有被绑定的原因。
如果您在运行fiddle后检查控制台,您可以看到要绑定的每个事件的日志。
相关文章:
- 没有找到相关文章