Puh, hab mich jetzt dadurch gewühlt. Ein paar Kommentare mehr hätten es wesentlich leichter gemacht.
Zunächst mal ein paar Basics:
this.elements = Array();
> Wozu soll elements gut sein? Es taucht später nicht mehr auf. Ich nehme mal an, du wolltest elements auf eine Array-Instanz zeigen lassen. Dazu müsstest du aber mittels dem Keyword new den Konstruktor aufrufen. Noch besser ist allerdings es einfach mittels dem Array-Operator "[]" zu initialisieren. Ich könnte mir vorstellen, dass der Fehler, warum dein Code nicht funtkioniert genauso der gleiche ist. "GUIenv" scheint deine GUIEnvironment-Instanz zu sein. Wie wird diese initialisiert? Den Code hast du uns leider vorenthalten.
elements wird in anderen Code-Segmenten die nichts mit dem drag&drop zu tun haben, verwendet. Hab ich nur vergessen raus zu nehmen,
Das "new" hab ich auch vergessen >.<
Wenn ich mit "[]" initialisieren will, dann einfach "this.elements[];" ?
Hier mal die Initialisierung (das ist das "Ende" der js-Datei):
~~~javascript
function GUIInit()
{
body = document.getElementsByTagName("body")[0];
if(body)
{
window.GUIenv = new GUIEnvironment(body);
document.onmousemove = GUIenv.doDrag;
document.onmouseup = GUIenv.stopDrag;
}
else
window.setTimeout("GUIInit()", 100);
}
GUIInit();
Dazu fällt mir noch ein, wenn ich an setTimeout() direkt GUIInit() übergebe - also nicht als string - meckert Firefox immer rum a la "too much recursion" [dazu werd ich mich zu einem anderen Zeitpunkt noch mal genau belesen]
Point hatte ich auch vergessen sollte aber eigentlich nicht der "böse Fehler" sein:
function Point(x,y)
{
this.x = (x?x:0);
this.y = (y?y:0);
}
Seitens Browser kommen keine Fehler-/Warnmeldungen
MfG
bubble
Hier mal der komplette Code (der ist allerdings mit Vorsicht zugenießen):
http://pastebin.com/usEQkGb2