Linie dynamisch zeichnen

snownose

Grünschnabel
Hallo zusammen,

Ich war schon langer stiller Leser des Forum aber jetzt hab ich doch ein Problem das ich irgendiwe nicht gelöst bekomme. Ich möchte in Flash eine Linie zeichen mittels AS3. Mithilfe von http://www.tutorials.de/forum/flash/296388-linie-animiert-zeichnen.html hab ich das dann auch hingekriegt, ich habe die gleiche .fla genommen wie dort zur Verfügung gestellt worden ist. Jetzt stört mich aber das ich den Pfad vorzeichnen muss. Ich hab dann gedacht ok erstellst den Pfad einfach mit AS3 dynamisch. Dafür habe ich folgenden AS3 genommen

PHP:
var myShape:Shape= new Shape();
this.addChild(myShape);
myShape.graphics.moveTo(100,300);

myShape.graphics.lineStyle(2, 0x990000, .75);

var i:int;
var xpos:int;
var ypos:int;
var run:int;

for(i=0;i < 5;i++)
{
	if(i == 0)
	{
		myShape.graphics.moveTo(xpos,ypos);
		run = xpos;
	}
	xpos = Math.floor(Math.random()*900+1);
	ypos = Math.floor(Math.random()*400+1);
	
	
	while(run < xpos)
		{
			myShape.graphics.lineTo(run,ypos);
			run++;
		}
}

So das klappt der macht mir immer ein anderen Pfad hin. Das hab ich überprüft in dem ich den gleichen Code außerhalb einer Pfadebene ausgeführt habe. Er hat mir immer eine andere Linie generiert.

So jetzt kommt der Punkt. Damit ein MC am Pfad entlang fahren kann muss er ja am Ende des Pfade "angedockt" sein. Jetzt weiß ich aber nicht wie die Position eine zukünftigen Schlüsselbildes ändern kann. Ich weiß nicht mal ob das geht oder bin ich auf dem Holzweg ?
Ich hab dir Fla mal angehängt.

Ich bin für Tipps dankbar auch wenn es nur der ist das ich auf dem Holzweg bin :)

Grüße
Snownose
 

Anhänge

  • wachsen_forum.fla
    28 KB · Aufrufe: 54
Naja - wenn du es so machst brauchst du ja garnicht den "Trick" mit dem Pfad zu nehmen, der ist ja nur dafür da, irgendwelche Formen nicht in AS reincoden zu müssen. Das hast du ja schon gemacht. Du müsstest einfach per enterFrame-Funktion immer ein Stück der Linie mehr malen.

Die Möglichkeit einen Pfad per AS zuzuweisen ist mir nicht bekannt.
 
Hy zusammen,

so du hattes recht hab alles umgebaut und jetzt gibt es nur noch den MC pen und eine Ebene im ersten Bild hab ich folgendes "gecoded"

PHP:
this.clear();

this.lineStyle(2, 0x000000, 100);

this.moveTo(pen._x, pen._y);

xpos = Math.floor(Math.random()*900+1);
ypos = Math.floor(Math.random()*400+1);
		
xposintervall = xpos / 1000;
yposintervall = xpos / 1000;

this.onEnterFrame = function() {
	
		while(xposintervall < xpos)
			{
				this.lineTo(xposintervall,yposintervall);
				xposintervall++;
				yposintervall++;
			}

}

der malt mir die linien dort viel zu schnell und ich krieg es nicht langsammer hab ich dort ein Denkfehler ? also sicherlich sonst würde es ja funktionieren :)

vielen vielen Danke.

selbstverständlich wird nach der Lösung des Problems die .fla hochgeladen !
 

Anhänge

  • wachsen_forum2.fla
    48 KB · Aufrufe: 48
Zuletzt bearbeitet:
Mein Problem ist, das er die Linie nicht zeichnet, sondern diese einfach erscheint. Ich würde die Linie gerne langsam zeichnen lassen. Ich dacht das geht in dem ich den Weg von Punkt a nach Punkt b in Intervalle unterteile und diese in einer Schleife Zeichnen lasse, irgendiwe funktioniert das aber nicht.
 
Naja - generell ein onEnterFrame sollte es schon langsam zeichnen. snownose schreibt ja, dass das alles mit einer Schleife gemacht wurde - die wird erstmal komplett ausgeführt und dann das Resultat angezeigt. Theoretisch musst du einfach das "while" durch ein "if" ersetzen - und evtl. noch im else-Fall die onEnterFrame-Methode löschen.

Vom ersetzen einer enterFrame-Methode durch einen Interval rate ich immer ab, da der Intervall unabhängig von Rechenleistung und evtl. lags arbeitet - und somit wenn mal was hängt trotzdem immer und immer wieder nachlegt. onEnterFrame wartet da bis zum nächsten Frame, wann auch immer der kommt, und lässt den "ballast" von vorher erst abarbeiten. Auch wenn das bei so simplen Funktionen wie hier wohl nicht soo wichtig ist :)
 
Guten Nachmittag,

Erst mal Sorry das ich so lange auf mich warten ließ, aber es gibt eben auch noch ein anderes Leben :)

Danke für die Tipps, leider bin ich mit keinem zum Erfolg gekommen. Ich hab das While jetzt durch ein If ausgetauscht, srpringt der dann nicht nur einmal in die If Anweisung rein ? ich bekomme nur einmal die Rückmeldung. Folgenden Code habe ich benutzt:

PHP:
this.clear(); 

this.lineStyle(2, 0x000000, 100); 

this.moveTo(pen._x, pen._y); 

xpos = Math.floor(Math.random()*900+1); 
ypos = Math.floor(Math.random()*400+1); 
         
xposintervall = xpos / 1000; 
yposintervall = xpos / 1000; 

this.onEnterFrame = function() { 
     
        if(xposintervall < xpos) 
            { 
                this.lineTo(xposintervall,yposintervall); 
                xposintervall++; 
                yposintervall++; 
            } 

}

Damit erscheint jetzt einfach ein einfacher Punkt oben Links.

Langsam bin ich noch verwirrter wie davor :) aber wir schaffen das schon :)

Danke im vorraus.
 
Ich klink mich hier mal ein (weiß jetzt nicht ob der Jens momentan im Forum aktiv ist)

Hab mir nicht alles durchgelesen, kannst du nochmal in wenigen Worten beschreiben was du vor hast.?
 

Neue Beiträge

Zurück