n-Punkte setzen
Ivonne
- javascript
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;
}
}
}
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
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.
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
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.
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