2011-01-11 12 views
1

Ive vor kurzem eine "Karte" erstellt, obwohl nicht sehr anspruchsvoll (ich arbeite daran) hat es die Grundfunktion und ist in der Regel in die richtige Richtung.Mouseover erkennen und Tooltip-Text für Punkte auf einem HTML-Canvas anzeigen

Wenn du es dir ansiehst, kannst du winzige rote Punkte sehen und auf diesen winzigen roten Punkten möchte ich mit der Maus darüber gehen und Text sehen, aber ich hatte ein paar Probleme damit, den richtigen Code zu finden.

http://hummingbird2.x10.mx/website%20creation/mainpage.htm

Dies ist der gesamte Code so weit.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Oynx Warrior</title> 
<link rel="stylesheet" type="text/css" href="mystyle.css" /> 

</head> 
<body> 
<h1>Oynx Warrior</h1> 

<canvas id="myCanvas" width="500" height="500" style="border:1px solid #c3c3c3;"> 
Your browser does not support the canvas element. 
</canvas> 

<script type="text/javascript"> 
var c=document.getElementById("myCanvas"); 
var cxt=c.getContext("2d"); 
cxt.fillStyle="#red"; 
cxt.beginPath(); 
cxt.arc(50,50,1,0,Math.PI*2,true); 
cxt.closePath(); 
cxt.fill(); 

</script> 
</body> 
</html> 

Antwort

1

Hier sind vier Möglichkeiten:

  1. Halten Sie den Überblick über alle Standorte Punkte und verfolgen die mousemove Ereignis auf den Körper. Wenn sich die Maus über einen Punkt bewegt, zeichnen Sie die Leinwand mit dem Text neu. Wenn sich die Maus bewegt, löschen Sie die Zeichenfläche und zeichnen Sie sie ohne den Text neu. Sie müssen Ihren eigenen 'Treffer'-Erkennungscode schreiben, um die Mausposition mit den Begrenzungsrahmen/Radius aller Punkte zu vergleichen. Es ist schwer, aber nicht unmöglich.

  2. Anstelle einer Leinwand für die gesamte Karte, verwenden Sie eine Leinwand Ihre benutzerdefinierten Punkt zu erstellen, rufen Sie toDataURL() auf der Leinwand einen String zu erhalten für sie neu zu schaffen, ein absolut positionierten <div> Element für jeden Punkt, und stellen Sie die .style.backgroundImage = url('+myDotDataURL+');. Jetzt können Sie einfach das Attribut title für jedes Div festlegen und den Browser die Mauserkennung und QuickInfo-Anzeige für Sie behandeln lassen. Nachteil: Sie sehen den Tooltip für einen quadratischen Bereich um den Punkt, nicht genau den Punkt selbst.

  3. Anstatt HTML-Canvas, gehen Sie mit SVG. In SVG gezeichnete "Elemente" sind tatsächliche Objekte, die ihre eigenen Ereignisse und Treffererkennung haben. Mit diesem können Sie benutzerdefinierte Punkte zeichnen und lassen Sie den Browser alle Maustreffer für Sie tun.