Hallo, ich bin mit meinem JS am Ende. Um 'Buttons' für Canvas zu programmieren, habe ich einen Code von Stackoverflow genommen, doch leide funktioniert er nicht.
Code
<script>
var mx = 640,
my = 360;
var buttons = [];
canvas.addEventListener("click", function (event) {
var x = event.pageX,
y = event.pageY;
buttons.forEach(function (element) {
if(y > element.top && y < element.top + element.height && x > element.left && x < element.left + element.width) {
alert("k");
}else { alert('no');
context.beginPath();
context.arc(element.left+element.width/2,element.top+element.height/2,1,0,2*Math.PI);
context.stroke();
}
});
}, false);
buttons.push({
text: "Play",
top: my-25,
left: mx-50,
width: 100,
height: 50
});
//render
buttons.forEach(function (element) {
context.fillText(element.text, element.left + element.width/2, element.top+element.height/2);
context.strokeRect(element.left, element.top, element.width, element.height);
});
</script>
Alles anzeigen
Sollte der Code funktionieren, so sollte er zu Folge haben, dass bei einem Klick ins 'Play' Feld 'k' ausgegeben wird. Doch es wird immer nur 'no' ausgegeben. Um zu schauen, wo sich denn element.top und element.width befinden, habe ich bei diesen einen Punkt gezeichnet. Dieser ist genau dort, wo es sein sollte. Doch auch bei genauem Klick auf den Punkt kommt "no".
Was mache ich falsch? Der Code ist der exakt gleiche, wie der aus Stackoverflow.