Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-09-2003, 16:53   #1 (permalink)
peter mandt
Gast
 
Beiträge: n/a
Question distanzmessung zwischen zwei punkten?

hallo,
kann mir jemand sagen, wie ich folgendes problem lösen kann:
der erste mausklick soll einen startpunkt setzen (z.b. visuell ein kreuz) und die durch den klick erhaltene x und y position der maus angeben. durch ziehen der maus soll eine strich (ausgangspunkt der erste klick) erscheinen, dessen ende mit der mausbewegung mitwandert und beim loslassen der maus einen endpunt setzt (wieder ein kreuz). die loslaspunkt soll dann wieder die x und y koordinaten der maus abfragen und das ergebnis dieser distanzmessung (entfernung der zwei punkte) anzeigen (in pixel).

vielleicht hat das schonmal jemand gemacht oder ist so fit im programmieren, das er/sie mir dafür ein script schicken kann.

danke schonmal im vorraus,
gruss p.m.
  Mit Zitat antworten
Alt 01-09-2003, 17:04   #2 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
bitteschön

(einfach in ersten frame kopieren und strg+enter)
ActionScript:
  1. onMouseDown = function () {
  2.     var o = this.createEmptyMovieClip("kreuz", 2);
  3.     var k = this.createEmptyMovieClip("line", 1);
  4.     o.lineStyle(0, 0xff0000), o.moveTo(-5, 0), o.lineTo(5, 0), o.moveTo(0, -5), o.lineTo(0, 5);
  5.     o._x=_xmouse, o._y=_ymouse;
  6.     k._x=_xmouse, k._y=_ymouse;
  7.     md = 1;
  8.     k.onEnterFrame = function() {
  9.         if (md) {
  10.             this.clear();
  11.             this.lineStyle(0), this.lineTo(_xmouse-o._x, _root._ymouse-o._y);
  12.         } else {
  13.             delete this.onEnterFrame;
  14.         }
  15.     };
  16. };
  17. onMouseUp = function () {
  18.     var u = this.createEmptyMovieClip("kreuz1", 3);
  19.     u.lineStyle(0, 0xff0000), u.moveTo(-5, 0), u.lineTo(5, 0), u.moveTo(0, -5), u.lineTo(0, 5);
  20.     u._x=_xmouse, u._y=_ymouse;
  21.     md = 0;
  22.     // länge
  23.     trace(Math.sqrt(Math.pow((Math.abs(kreuz._x-kreuz1._x)), 2)+Math.pow((Math.abs(_kreuz._y-_kreuz1._y)), 2)));
  24. };
thorben.schmitt ist offline   Mit Zitat antworten
Alt 02-09-2003, 08:41   #3 (permalink)
peter mandt
Gast
 
Beiträge: n/a
Talking danke!!!

wow! vielen dank - das ging schnell!!!
gruss p.m.
  Mit Zitat antworten
Alt 02-09-2003, 16:49   #4 (permalink)
peter mandt
Gast
 
Beiträge: n/a
Question hallo nochmal!

hallo,
funktioniert alles prima, aber ein paar fragen habe ich noch:
1. wo sind die kreuze/linien definiert? kann ich auch ein gestaltetes kreuz (farbe/form) benutzen, das meiner maus folgt, beim ersten klick an der position stehen bleibt, meinen laufenden film anhält und beim zweiten klick den film wieder weiterlaufen läßt und wieder der maus folgt.
2. wie erscheint das ergebnis der messung in meinem dynamischen textfeld?
danke und gruss
p.m.
  Mit Zitat antworten
Alt 03-09-2003, 11:07   #5 (permalink)
peter mandt
Gast
 
Beiträge: n/a
Wink teilweise gelöst

hallo,
die probleme mit der farbe und dem "trace" habe ich gelöst (man muss halt ein biserl rumprobieren ), aber zwei sachen habe ich noch:
1. ich hätte gern, dass die beiden kreuze und die linie ca. 2 sec. nach beenidugung der messung wieder verschwinden (?)
2. wie erstelle ich einen counter, der ab dem moment zählt, wo der film anfängt?
gruss p.m.
  Mit Zitat antworten
Alt 03-09-2003, 11:09   #6 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
schau dir mal

ActionScript:
  1. setInterval
an ..

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 03-09-2003, 11:21   #7 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
ActionScript:
  1. // Textfeld erstellen
  2. this.createTextField("t", 1, 0, 0, 100, 16);
  3. t.border=true, t.selectable=false, t.text="Strecke: 0 px";
  4. // neues textformat:
  5. tf = new TextFormat();
  6. tf.font = "Verdana";
  7. tf.size = 10;
  8. t.setTextFormat(tf);
  9. // punkte löschen:
  10. function deletePoints() {
  11.     removeMovieClip(kreuz);
  12.     removeMovieClip(kreuz1);
  13.     removeMovieClip(line);
  14.     trace("gelöscht");
  15.     clearInterval(this)
  16. }
  17. onMouseDown = function () {
  18.     var o = this.createEmptyMovieClip("kreuz", 3);
  19.     var k = this.createEmptyMovieClip("line", 2);
  20.     o.lineStyle(0, 0xff0000), o.moveTo(-5, 0), o.lineTo(5, 0), o.moveTo(0, -5), o.lineTo(0, 5);
  21.     o._x=_xmouse, o._y=_ymouse;
  22.     k._x=_xmouse, k._y=_ymouse;
  23.     md = 1;
  24.     k.onEnterFrame = function() {
  25.         if (md) {
  26.             this.clear();
  27.             this.lineStyle(0), this.lineTo(_xmouse-o._x, _root._ymouse-o._y);
  28.         } else {
  29.             delete this.onEnterFrame;
  30.         }
  31.     };
  32. };
  33. onMouseUp = function () {
  34.     var u = this.createEmptyMovieClip("kreuz1", 4);
  35.     u.lineStyle(0, 0xff0000), u.moveTo(-5, 0), u.lineTo(5, 0), u.moveTo(0, -5), u.lineTo(0, 5);
  36.     u._x=_xmouse, u._y=_ymouse;
  37.     md = 0;
  38.     // länge
  39.     t.text = "Strecke: "+(Math.sqrt(Math.pow((Math.abs(kreuz._x-kreuz1._x)), 2)+Math.pow((Math.abs(_kreuz._y-_kreuz1._y)), 2)))+" px";
  40.     t.setTextFormat(tf);
  41.     setInterval(deletePoints, 1000);
  42. };
thorben.schmitt ist offline   Mit Zitat antworten
Alt 03-09-2003, 11:36   #8 (permalink)
peter mandt
Gast
 
Beiträge: n/a
uups

hallo thorben,
das script erzeugt irgendwie eine schleife im ausgabefeld. es taucht immer wieder der begriff "gelöscht" auf. das läßt sich auch nicht stoppen (?)
gruss p.m.
  Mit Zitat antworten
Alt 03-09-2003, 11:44   #9 (permalink)
peter mandt
Gast
 
Beiträge: n/a
...

...und man kann nur einmal messen, danach löscht er sofort das erste kreuz usw.
gruss p.m.
  Mit Zitat antworten
Alt 03-09-2003, 11:45   #10 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
ups, mein fehler:
ActionScript:
  1. // Textfeld erstellen
  2. this.createTextField("t", 1, 0, 0, 100, 16);
  3. t.border=true, t.selectable=false, t.text="Strecke: 0 px";
  4. // neues textformat:
  5. tf = new TextFormat();
  6. tf.font = "Verdana";
  7. tf.size = 10;
  8. t.setTextFormat(tf);
  9. // punkte löschen:
  10. function deletePoints() {
  11.     removeMovieClip(kreuz);
  12.     removeMovieClip(kreuz1);
  13.     removeMovieClip(line);
  14.     trace("gelöscht");
  15.     clearInterval(del);
  16. }
  17. onMouseDown = function () {
  18.     var o = this.createEmptyMovieClip("kreuz", 3);
  19.     var k = this.createEmptyMovieClip("line", 2);
  20.     o.lineStyle(0, 0xff0000), o.moveTo(-5, 0), o.lineTo(5, 0), o.moveTo(0, -5), o.lineTo(0, 5);
  21.     o._x=_xmouse, o._y=_ymouse;
  22.     k._x=_xmouse, k._y=_ymouse;
  23.     md = 1;
  24.     k.onEnterFrame = function() {
  25.         if (md) {
  26.             this.clear();
  27.             this.lineStyle(0), this.lineTo(_xmouse-o._x, _root._ymouse-o._y);
  28.         } else {
  29.             delete this.onEnterFrame;
  30.         }
  31.     };
  32. };
  33. onMouseUp = function () {
  34.     var u = this.createEmptyMovieClip("kreuz1", 4);
  35.     u.lineStyle(0, 0xff0000), u.moveTo(-5, 0), u.lineTo(5, 0), u.moveTo(0, -5), u.lineTo(0, 5);
  36.     u._x=_xmouse, u._y=_ymouse;
  37.     md = 0;
  38.     // länge
  39.     t.text = "Strecke: "+(Math.sqrt(Math.pow((Math.abs(kreuz._x-kreuz1._x)), 2)+Math.pow((Math.abs(_kreuz._y-_kreuz1._y)), 2)))+" px";
  40.     t.setTextFormat(tf);
  41.     del = setInterval(deletePoints, 1000);
  42. };
thorben.schmitt ist offline   Mit Zitat antworten
Alt 03-09-2003, 11:52   #11 (permalink)
peter mandt
Gast
 
Beiträge: n/a
Talking jetzt aber...

... funktioniert prima, aber einen kleine schönheitsfehler gibt es noch: solange man schön langsam misst, das ergebnis abwartet und dann wieder misst funktioniert alles einwandfrei. wenn mann aber ein bißchen hastet und schon die zweite messung beginnt, obwohl die erste noch nicht beendet ist, verschwinden die kreuze wieder und eine weitere messung ist nicht möglich (?)
ABER RESPECT!!! ich weiss nicht wie ich ohne deine hilfe zu einem ergebnis gekommen wäre!
gruss p.m.
  Mit Zitat antworten
Alt 03-09-2003, 12:00   #12 (permalink)
...
 
Registriert seit: Oct 2002
Ort: Nürnberg
Beiträge: 3.611
schreib mal in die MouseDown-function einfach
ActionScript:
  1. deletePoints()

dann sollte es auch gehen
thorben.schmitt ist offline   Mit Zitat antworten
Alt 03-09-2003, 12:06   #13 (permalink)
peter mandt
Gast
 
Beiträge: n/a
Talking YES!!!

  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele