Ivonne: n-Punkte setzen

Hallo,

ich habe das folgende Script in dem 2 Punkte hintereinander gesetzt werden. Von denen die Bildkoordinaten gespeichert werden und zum Schluß die Länge der Linie errechnet wird. Ich möchte gerne das Projekt auf die Anzahl von n Punkten erweitern. D.h. dem Nutzer soll nicht vorgeschrieben werden, wieviele Punkte er setzen soll. Wie kann ich diese Sache umstellen?

Mfg. Ivonne

function ...
  { i=0;
  jg.clear();
        if (iClick == i)
        {
          /* erster Klickpunkt */
          iClick++;
    i++;
          if (isNetscape == true)
          {
            x1Real=e.x-document.graphic.x;
            y1Real=e.y-document.graphic.y;
   linex1=e.x-document.graphic.x;
   liney1=e.y-document.graphic.y;
   var x1pos=e.x;
   var y1pos=e.y;
            if ((x1Real > 0) & (y1Real > 0))
            {
              document.x1y1.x=e.x-16;
              document.x1y1.y=e.y-16;
            }
            else
            {
              iClick=0;
            }
          }
          else
          {
            x1Real=window.event.offsetX;
            y1Real=window.event.offsetY;

x1y1.style.left=window.event.clientX-16;
            x1y1.style.top=window.event.clientY-16;
            window.document.img_x1y1.width=31;
            window.document.img_x1y1.height=31;
   linex1=window.event.offsetX;
            liney1=window.event.offsetY;

}
        }
        else
        {
          /* zweiter Klickpunkt */
          iClick=0;
          if (isNetscape == true)
          {
            x2Real=e.x-document.graphic.x;
            y2Real=e.y-document.graphic.y;
   var linex2=e.x-document.graphic.x;
   var liney2=e.y-document.graphic.y;
            if ((x2Real > 0) & (y2Real > 0))
            {
              document.x2y2.x=e.x-16;
              document.x2y2.y=e.y-16;

}
            else
            {
              iClick=i;
            }
          }
          else
          {
            x2Real=window.event.offsetX;
            y2Real=window.event.offsetY;
   linex2=window.event.offsetX;
            liney2=window.event.offsetY;
   x1y1.style.left=0;
            x1y1.style.top=0;
            window.document.img_x1y1.width=0;
            window.document.img_x1y1.height=0;
            x2y2.style.left=0;
            x2y2.style.top=0;
            window.document.img_x2y2.width=0;
            window.document.img_x2y2.height=0;

}
          if ((x1Real > 0) & (y1Real > 0))
          {
            if ((x2Real > 0) & (y2Real > 0))
            {
              r1=GetRRealCoord (x1Real);
              h1=GetHRealCoord (y1Real);
              r2=GetRRealCoord (x2Real);
              h2=GetHRealCoord (y2Real);
              a=CalcOffset (r1,h1,r2,h2);
              window.document.clickaction.offset.value=Math.round (a)+ m;

}
          }
        }

  1. hi,

    Ich möchte gerne das Projekt auf die Anzahl von n Punkten erweitern. D.h. dem Nutzer soll nicht vorgeschrieben werden, wieviele Punkte er setzen soll. Wie kann ich diese Sache umstellen?

    auf jeden fall nicht, in dem du hier mit einer "macht mal"-attitüde deinen code reinpostest.

    was hast _du_ bisher unternommen, um diese erweiterung umzusetzen?
    hast du analysiert/verstanden, wie es für zwei punkte funktioniert?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hallo wahsaga,
      ich verlange nicht, dass mir jemand den Quelltext umschreibt. Ich bin eher auf der Suche nach Anregungen und Hinweisen. Vielleicht hat sich jemand auch schon mal mit diesem oder einem ähnlichen Problem auseinander gesetzt.
      Nun zu deinen Fragen.
      Ja ich habe die Umsetzung mit 2 Punkten verstanden. Allerding liegt das Problem bei der Umsetzung eher in dem nicht wissen wie ich [i] in Verbindung mit einem array bringe.

      1. hi,

        Ja ich habe die Umsetzung mit 2 Punkten verstanden.

        gut. die ermittlung der klick-koordinaten scheint ja recht einfach zu sein, und mittels eines flags wird entschieden, ob es die für den ersten oder den zweiten punkt sein sollen.

        Allerding liegt das Problem bei der Umsetzung eher in dem nicht wissen wie ich [i] in Verbindung mit einem array bringe.

        nimm dir obige koordinaten-ermittlung, und speichere dir den aktuellen wert für x und y beispielsweise in einem array, wo du für jeden neuen klick einen neuen eintrag anlegst.

        wenn du dann entschieden hast, dass genug herumgeklickt wurde, durchläufst du dieses array mit einer schleife, und führst für jeweils zwei aufeinanderfolgende einträge die berechnung der entfernung durch. und anschließend (oder während dessen) addierst du diese teilentfernungen zur gesamtentfernung.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Hallo wahsaga,
          soweit sogut alles klar. Sollte das dann in folgendender Form erfolgen:...

          x[i]Punkt=new Array;
          y[i]Punkt=new Array;
          i=1; i++;

          ...?
          Wie bereits beschrieben habe ich noch nie mit [i]gearbeitet.

          1. hi,

            Sollte das dann in folgendender Form erfolgen:...

            x[i]Punkt=new Array;
            y[i]Punkt=new Array;
            i=1; i++;

            na ja, wohl eher

            var indexzaehler=0;
            var x = new Array();
            var y = new Array();

            x[indexzaehler] = aktuelle_x_koordinate;
            y[indexzaehler] = aktuelle_y_koordinate;
            indexzaehler++;

            Wie bereits beschrieben habe ich noch nie mit [i]gearbeitet.

            http://de.selfhtml.org/javascript/objekte/array.htm gibt auskünfte über grundlegendes zum arbeiten mit arrays in JS.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."