Dynamische Koordinaten (Instanzierung, Bewegung) mittels XML-Datei

ok also hier mal ein kleines Problem..

XML:
var ym = new XML();   // XML Objekt wird erstellt
ym.ignoreWhite = true;
ym.onLoad = function() {
	var nuu = parseInt(this.firstChild.firstChild.firstChild.attributes.x);
	this.createEmptyMovieClip("line_mc", 10);
	line_mc.lineStyle(1, 0x0000FF, 100);
	line_mc.moveTo(0, 110);
	line_mc.lineTo(10, nuu);
	abschnitt_mc._x = 100;
	abschnitt_mc._y = 100;
	trace(nuu);
}
ym.load("einstellung.xml");

da soll eigentlich ne Linie irgendwohin gezeichnet werden.. aber da kommt nix :(
die XML Datei wird richtig eingelesen und nuu = 400 ist auch richtig und wird mit trace richtig ausgegeben.. aber die line wird nicht gezeichnet :(

und das ganze Line zeugs hab ich aus der Referenz.

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

wenn du in einer XML.onLoad-Funktion mit this arbeitest, referenzierst du das Objekt, an dem der Code ausfgeführt ist und das ist in diesem Fall das XML-Objekt, in dem wiederum lässt sich kein MovieClip platzieren. Lass einfach mal das this weg.

gruss
 
:) omg... da ist NE LINIE auf meinem Bildschirm :) was für ein Erfolgserlebnis :)

Vielen Dank für den Tipp: "Lass doch einfach mal das this weg" :)
Damit hat sich auch schon meine nächste Frage geklärt.. ob ich nämlich im ersten Frame eine xml datei einlesen kann und mit den eingelesenen Werten eine Hintergrundstruktur zeichnen kann. Klappt wunderbar :)

Aber da stellt sich die nächste Frage für mich. Ich wollt dem ganzen noch ein Hintergrundbild verpassen, doch wenn ich da ein Bild in mein Flashmovie reinziehe dann wird die Linie zwischen den beiden Punkten nicht mehr angezeigt. Kann ich mein Bild irgendwie in den Hintergrund verschieben? oder die Linie in den Vordergrund bringen?

MfG Mahzuni

btw: Vielen vielen Dank für eure Mühen :)
 
Hallo,

setz doch dein Script, das die Linien darstellen soll, in einen neuen MovieClip (Pfade anpassen nicht vergessen ;)) und leg den auf eine Ebene über dem Bild-Container.

gruss
 
Hallo Zusammen,

ich möchte auch gern soetwas in der art realisieren. Mein problem ist, dass ich noch nicht soo viel in ActionScript geschrieben habe und das es meiner Meinung nach hier schon ins eingemachte geht. Prinzipiell ist dieses Script im grunde genau das was ich möchte (denke ich), allerdings sollte meine Lösung sogar noch simpler sein. Ich möchte bei einem mouseover auf irgendein objekt (bild, form... etc) dass sich von diesem Punkt aus Linien zu anderen Punkten bilden (ohne große animation etc.). Die Punkte sollen auch über eine XML Datei verwaltet werden.

Ich hoffe das war jetzt nicht so unverständlich.

Also z.B.

Punkt A (koordinate) zu Punkt B (koordinate)
Punkt A (koordinate) zu Punkt C (koordinate)
Punkt A (koordinate) zu Punkt D (koordinate)

wenn ich also mit der Maus auf Punkt A klicke oder drüberfahre, soll er 3 Linien ziehen (B,C,D).

Wie könnte ich das realisieren? Ist dieses Script hier hilfreich oder könnte mir da jemand ein wenig unter die Arme greifen? Das wäre Super!

Gruß,
Florian

EDIT:
So würde ich die XML aufbauen... vom Ansatz richtig?

Code:
<?xml version='1.0' encoding='utf-8'?>
	<PunktA>
		PunktB x="5" y="30"
		PunktC x="5" y="40"
		PunktD x="5" y="50"
	</PunktA>


Und hier mein erster Ansatz wo ich die Koordinaten auslesen und füllen möchte:
Code:
// XML File erstellen und Koordinaten auslesen / füllen
var XMLkoordinaten = new XML();
	XMLkoordinaten.ignoreWhite=true;
	XMLkoordinaten.load("punktkoordinaten.xml");
	
	XMLdaten.onLoad = function(success) 
		{
			// Koordinaten Array`s (X,Y)
			XMLkoordinaten_x = [];
			XMLkoordinaten_y = [];
			
			// Prüfen und Daten füllen
			if (success) 
				{
					// Daten auslesen und füllen
					for (var i=0; i<XMLkoordinaten.firstChild.childNodes.length; i++) 
						{
							XMLkoordinaten.firstChild.childNodes[i]
							XMLkoordinaten_x[i] = XMLkoordinaten.firstChild.childNodes[i].attributes.x;
							XMLkoordinaten_y[i] = XMLkoordinaten.firstChild.childNodes[i].attributes.y;
						}
						
						// Verarbeitung
						trace(XMLkoordinaten_x[0])
						trace(XMLkoordinaten_y[0])
						trace(XMLkoordinaten_x[1])
						trace(XMLkoordinaten_y[1])
						trace(XMLkoordinaten_x[2])
						trace(XMLkoordinaten_y[2])
				}
		}
 
Zuletzt bearbeitet:
Hi,

ich würde die Koordinaten in einer leicht parsbaren Form anlegen, sonst bekommst Du a) mit dem xml-Objekt Probleme und b) machst Dir beim Interpretieren unnötig viel Arbeit. Mein Vorschlag:
Code:
<punkt x="320" y="240">
  <ziel x="50" y="120" />
  <ziel x="117" y="2" />
  <ziel x="512" y="48" />
</punkt>
Ohne bestimmte Namen für jeden Punkt und jedes Ziel bleibt die Anzahl beider variabel und Du kannst die Werte einfach aus den xml-Attributen auslesen.

eine Realisierung Deines Vorhabens wäre in der Tat um einiges simpler als das Beispiel in diesem Thread, so dass ich einen Neuaufbau empfehlen würde. ;)

Gruß
.
 
Okay danke erstmal für den Tipp bzgl. der XML Datei...

Wie sieht das denn mit dem Auslesen aus, habe ich das so richtig gemacht?

Code:
// XML File erstellen und Koordinaten auslesen / füllen
var XMLkoordinaten = new XML();
	XMLkoordinaten.ignoreWhite=true;
	XMLkoordinaten.load("punktkoordinaten.xml");
	
	XMLdaten.onLoad = function(success) 
		{
			// Koordinaten Array`s (X,Y)
			XMLkoordinaten_x = [];
			XMLkoordinaten_y = [];
			
			// Prüfen und Daten füllen
			if (success) 
				{
					// Daten auslesen und füllen
					for (var i=0; i<XMLkoordinaten.firstChild.childNodes.length; i++) 
						{
							XMLkoordinaten.firstChild.childNodes[i]
							XMLkoordinaten_x[i] = XMLkoordinaten.firstChild.childNodes[i].attributes.x;
							XMLkoordinaten_y[i] = XMLkoordinaten.firstChild.childNodes[i].attributes.y;
						}
						
						// Verarbeitung
						trace(XMLkoordinaten_x[0])
						trace(XMLkoordinaten_y[0])
						trace(XMLkoordinaten_x[1])
						trace(XMLkoordinaten_y[1])
						trace(XMLkoordinaten_x[2])
						trace(XMLkoordinaten_y[2])
				}
		}

Und wenn ja, dann ist ja jetzt nur noch die Frage, wie ich die Linien an sich zeichne...

Okay Linien zeichnen ist ja recht easy... das klappt soweit, allerdings nicht mit meinen Variablen:
Code:
                                                anfangx = XMLkoordinaten_x[1];
						anfangy = XMLkoordinaten_y[1];
						endex = XMLkoordinaten_x[2];
						endey = XMLkoordinaten_y[2];

						this.createEmptyMovieClip("linie", 1);
						linie.lineStyle(1, 0x000000, 100);
						linie.moveTo(anfangx, anfangy);
						linie.lineTo(endex, endey);

Vielen Dank im voraus
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück