linie mit actionscript

T

The Wool

hi

ich bin ziemlicher newbie und hab so ne idee im kopf, doch mir fehlt noch ein stein um sie umzusetzen...
und zwar möchte ich mit actionscript eine linie zeichnen, deren start und endkoordinaten ich habe...
also so etwas wie einen line(x1,y1)-(x2,y2) befehl...
ich weiß allerdings nicht wie das geht...

danke für eure hilfe!

cu the wool
 
hast dir aber was reichlich schwieriges ausgesucht fürn anfang...

sofern nur horizontale, bzw vertikale linien sein sollen ist das ziemlich simpel.
für ne horizontale:
mach dir ne linie (kann auch nen kasten sein) ziemlich egal wie lang/groß. die benennt man dann mit instance (z.b. "line").
also irgendwo deklariert man die werte (x1/y2)(x1/y2)
angenommen:
x1=50;
y1=100;
x2=120;
y2=100;

_root.line._x=x1;
_root.line._y=y1;
laengex=_root.x2-_root.x1;
_root.line._xscale=laengex;
_root.line._yscale=2;

das wars eigentlich, klappt aber nur wenn die line horizontal verläuft und der x1 wert kleiner als der x2 wert ist (also x1 links x2 rechts)
wenn die linie jetzt vertikal verlaufen soll, muß man nur bei den letzten drei zeilen die x´s und y´s tauschen.
also:
langey=_root.y2-_root.y1;
_root.line._yscale=langey;
_root.line.xscale=2;

______________________________________________________

so, und sofern das ganze auch noch diagonal funktionieren soll, wird das ganze extrem komlizierter...
mir fällt da folgendes zu ein, dadurch wird die linie allerdings nicht sofort erstellt sondern gezeichnet, also punkt für punkt quasi. könnte auch ein wenig prozessorbelastend sein :) ....

scene1,layer1, frame1:
startwerte:
x1=20;
y2=100;
stop;

scene1, layer1, frame10:
endwerte:
x2=120
y2=50;
stop;

dann einen movieclip namens "malermeister" :)))
der besteht ausm kleinen punkt.
malermeister, frame1:
duplicateMovieClip (_root.malermeister, _root.delta_x, _root.delta_x);
malermeister, frame2:
prevframe();
play;

dem gibt man als objectaction:

onClipEvent (enterFrame) {
_root.delta_x = _root.x-_x;
_root.delta_y = _root.y-_y;
_x += _root.delta_x/8;
_y += _root.delta_y/8;
}

da ja in scene1, frame1 nen stop ist passiert erstma wenig, außer das der malermeister an seine startkoordinaaten rückt, und dabei kleine punkte auf seinem weg läßt.
wenn man dann nen knopf hat der _root.gotoAndPlay(2); sagt dann malt der malermeister seinen weg vom start- zum endwert.

das einzige problem ist nur, dass das ganze ne endlosschleife ist und das der flash-film bei mir beim testen auf halben weg abschmiert...
:)
tja, schade marmelade...
aber theoretisch klappt das. mit nem 66666²³mhz compi mit 2 terrabyte ram dürfte das ding laufen...

egal, heut ist irgendwie nich mein tag, vielleicht hat ja jemand anderes nochma ne idee.

immerhin klappt das mit dem horizontalen/vertikalen...


·kuat·
 
Danke für deine Mühe, aber ich brauch eine schnelle animation mit diagonalen...

sorry

cu the wool
 
das ist zwar kein animtation aber ne dynamisch erstellte linie zwischen zwei beliebigen punkten:

erstma braucht man nen mc der aus ner dünnen linie besteht die von links oben nach rechts unten geht (so an die 100*100 pixel das ganze)

dann braucht man noch nen mc der eigentlich unsichtbar sein kann, ich hab ihn aus nem kleinen halbtransparenten kreis gemacht. den braucht man gleich 2mal und nennt ihn "p1" und "p2" . das werden dann die end- start-punkte.

jetzt gibt man dem symbol linie folgendes als object-action:

onClipEvent (enterFrame) {
_x = _root.p1._x;
_y = _root.p1._y;
_xscale = _root.p2._x-_root.p1._x;
_yscale = _root.p2._y-_root.p1._y;
}


das ganze kann man schön testen indem man einen punkt irgendwo hinsetzt und dem anderen mit
startdrag(this,true);

an die maus heftet....

mit
_root.p1._x=42;

kann man die eckpunkte dann auch schön nachträglich verschieben...


·kuat·
 

Neue Beiträge

Zurück