Hi,
für den Lerneffekt erfinne ich grade das Rad neu, um genau zu sein eine minimale GUI.
Nun sitz ich grade beim Verschieben der "Fenster" fest.
Ich habe eine "Klasse" GUIenvironment:
function GUIEnvironment(rootElement)
{
this.root = rootElement;
this.elements = Array();
//dragging vars
this.dragObj = null;
this.mouse = new Point(0,0);
this.offset = new Point(0,0);
//browser related
this.ie = document.all && !window.opera;
}
GUIEnvironment.prototype.doDrag = function(e)
{
if(this.ie)
this.mouse = new Point(window.event.clientX, window.event.clientY);
else
this.mouse = new Point(e.pageX, e.pageY);
document.getElementById("log").value += "\n do_drag "+(this.dragObj?"set":"null");
if(this.dragObj)
{
this.dragObj.style.left = (this.mouse.x - this.offset.x)+"px";
this.dragObj.style.top = (this.mouse.y - this.offset.y)+"px";
}
}
GUIEnvironment.prototype.startDrag = function(obj)
{
this.dragObj = obj;
document.getElementById("log").value += "\n start_drag "+(this.dragObj?"set":"null");
this.offset = new Point(this.mouse.x - obj.offsetLeft, this.mouse.y - obj.offsetTop);
}
GUIEnvironment.prototype.stopDrag = function(event)
{
document.getElementById("log").value += "\n stop_drag "+(this.dragObj?"set":"null");
this.dragObj = null;
}
Das Element mit der ID log ist ein einfaches <textarea>, verschwindet, später dann komplett aus dem Code.
Beim Initialisieren wird unteranderem folgendes gemacht:
document.onmousemove = GUIenv.doDrag;
document.onmouseup = GUIenv.stopDrag;
Im onmousedown Event des Elements, das verschoben werden soll rufe ich dann window.GUIenv.startDrag(this); auf.
Wenn ich nun die Maus auf das Element bewege kommt halt, wie es sein soll, "do_drag null" im log,
wenn ich klicke und die Maustaste gedrückt lasse erscheint auch noch "start_drag set",
wenn ich jetzt aber die Maus bewege um das Element zu verschieben kommt wieder "do_drag null" (this.dragobj hat jetzt einen falschen Wert :-/),
wenn ich die Maustaste wieder los lasse kommt auch wieder fälschlicher weise "stop_drag null".
Das sind allerdings auch alle Funktionen die dragObj lesen/schreiben =/
Ich wind partout den Fehler nicht :(
MfG
bubble