Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Bilder bewegen .....





Frage

Hallo zusammen, ich hoffe hier einen richtigen Javascript/DHTML [ZENS] zu finden da ich langsam aber sicher am verweifeln bin... Ich habe ein Bild in einen IMG Tag und will dieses Bild bewegen. Mein Problem ist nur das ich dafür OnMouseDown/Move und Up Abfragen muss ( da ich die Koordinaten der verschiebung noch für spätere Berechnungen brauche. Das Problem ist das er beim OnMouseMove ( bei gedrückter Maustaste ) "denkt" ich würde das Bild nun mit Drag&Drop irgendwohin ziehen wollen und löst damit nicht mehr das OnMouseMove bzw OnMouseUp Event aus. Hier ist ein Link wo ihr euch das mal angucken könnt. http://www.webgeo.regioit-aachen.de/javascript/index.php Vieleicht hat einer ne Ahnung was man da noch tun könnte ? Vieleicht einen unsichtbaren/transparenten "Layer" drüberlegen aber ich wüsste nicht wie ich das anstellen könnte. Etwas kompliziert das ganze, umso dankbarer wäre ich über eine Antwort. Gruss Thomas

Antwort 1 von Friedel

Das Bild bewegt sich. Ich kann mir zwar gur vorstellen, dass das nicht so ist, wie es sein soll, aber ich habe keine Ahnung wie es sein soll. Du schreibst, dass du am verzweifeln bist und dass du hoffst einen richtigen (keine Ahnung was) zu finden. Aber was willst du denn erreichen? Ich könnte dir auch sagen(/schreiben) wie du einen unsichtbaren Layer drüber legen kannst. Aber wozu?

Antwort 2 von Dr.Ma-Busen

Mahlzeit!

Das Problem könnte an der Funktion des Browser liegen die es erlaubt per Drag & Drop Bilder aus der Seite zu ziehen. (Hatte damit auch mal zu kämpfen)
Pack das Bild mal als Hintegrundbild in ein DIV- Tag und verschiebe das und nicht das Bild, könnte dann klappen.

Dann habe ich da noch so ein paar kleine Beanstandungen ;)
Schreib mal anstelle von
language=JavaScript
das
type="text/javascript"

Hier weist du den Events funktionen zu, aber zu den Zeitpunkt gibt es die Funktionen noch nicht:
document.onmousedown = mouse_down; 
document.onmousemove = mouse_move;
document.onmouseup = mouse_up;

Hier weist du die Position des Bildes zu, aber zu den Zeitpunkt gibt es das Bild noch nicht:
var offsetx = document.bild.offsetLeft;
var offsety = document.bild.offsetTop


Dann vielleicht noch ein kleinen Programmier tipp:
Ermittel nur in der mouse_move Funktion die cursor position und schreibe die in zwei gesonderte Variabeln. Und kopier den wert dann bei mousedown und mouse up in die entsprechenden Variabeln. Das hält das Script etwas kleiner und übersichtlicher.

So, dann habe ich noch was für dich ;)
Ich habe mir auch mal solch ein Script gemacht mit den man HTML- Objekte mit der Maus frei bewegen kann. Du findest es hier unter Meine Javascripte, es hat den namen Objekt Move
Vielleicht hilft es dir bei dein weiteren Vorhaben etwas weiter.

MfG
Dr. Ma-Busen

Antwort 3 von ThomasOOP

@ friedel
das bild bewegt sich halt nicht wenn man
mit cursor über das bild geht + linke maustaste klickt + festhält + zieht
dann sieht man so kreis der durchgestrichen ist ( crNo heissts in Delphi - kennt man ja von drag&drop )

er denkt du willst das bild irgendwohin dra(g)gen und führt dann nicht mehr das onmousemove+up aus

den unsichtbaren layer brauch ich dann um das drag&drop ereignis auszutricksen

@ Dr.Ma-Busen
wie immer verdammt gute tips :-)

- das language=JavaScript kommt vom dreamweaver :-)
- das zuweisen der funktionen geht
- das mit den offset müsste ich erst testen, ist aber eh erstnicht nicht so wichtig ( verfälscht schlimmstenfalls die position )

alle 3 dinge funktionieren wohl deshalb weil der browser so fehlertolerant ist
ich werde es auch nur für den IE optimieren, alle anderen browser werde ich links liegen lassen

das mit nur onmousemove ist ne idee, bin mir aber nicht sicher ob ich damit exakte start und endpunkte ermitteln kann ( wie ihr schon gesehen habt soll das eine kartenfunktion werden, da kommt es auf jeden pixel an )

dein link ist leider tot :/
bzw der ganze server

kannst du mir das script an co-d-en@dun_eco_op.de schicken ? ( ohne die _ und - wegen spam )

das mit den div tag habe ich mir auch schon überlegt, sehe im moment auf keine andere möglichkeit

ich habe im internet eine seite gefunden die genau das kann was ich will, aber werde aus deren quellcode so garnicht schlau
hier zu finden

wäre nett wenn du mir das script zukommen lässt,
derweil probiere ich nochmal weiter
von nichts kommt schließlich auch nichts ;-)

gruss

Thomas

Antwort 4 von ThomasOOP

zwischenstand ...

das mit den div tag geht garnicht da die refresh rate des Bildes nicht hoch genug ist und es somit permament flackert

naja, mal weiter testen

Antwort 5 von Dr.Ma-Busen

Mahlzeit!

Ja, habe ich schon gemerkt das meine Seite Offline ist, seltsam ist aber das ich auf den FTP noch drauf kommen :-?. Na ja, vielleicht werden jetzt mal die Bugs beseitigt am Server.

So, habe mir das mal angeshaut und gesehen wie der/die das Problem gelöst haben.
Da hätte ich damals eigentlich auch drauf kommen müssen, aber warum einfach wenn es auch kompliziert geht *G*

Also, um dein Problem zu beseitigen must du nichts anderes machen als am ende von deiner Funktion mouse_move die zwei kleinen zauberworte
return false;
zu schreiben.
Dann sollte das Problem beseitigt sein.


MfG
Dr. Ma-Busen

PS: Hast auch noch post, wenn die mail nicht in irgend einen Spamfilter gelandet ist.

Antwort 6 von ThomasOOP

jo post bekommen und return false ist des rätsels lösung ?
wenn das wirklich wahr ist häng ich mich auf ;-)

Antwort 7 von Dr.Ma-Busen

Also mit reutn false ging es bei mir.
Ich hatte deine beipiel Seite lokal bei mir gespeichert und es ausprobiert und es Funktionierte so, glaube ich, wie es haben willst.

MfG

Antwort 8 von ThomasOOP

jup funktioniert so wie ich es haben wollte :-)
ohne dich hätte ich da noch tage/wochen gebraucht

danke

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: