Wenn ich einen MovieClip auf einem Halbkreis über die Bühne bewegen will kenne ich zur Zeit nur die Möglichkeit das über das Bewegungspfad Werkzeug zutun. Nun möchte ich das auch per Script versuchen, habe aber noch keinen Ansatzpunkt wie ich das machen könnte oder wonach ich via Goggle suchen müsste um das zutun. Kann mir jemand einen Tipp dazu geben? Den ich hae trotz Suche nichts gefunden.
Ich suche keine fertige Komponente oder ähnliches, sondern ich würde gerne versuchen das über selbstgetipptes Script zu machen. Einfach um zu verstehen wie man soetwas macht.
__________________ Wissen wird nur durch teilen erweitert..
onSelfEvent (load) {
// centX = X-Mittelpunkt
// centY = Y-Mittelpunkt
// rad = Radius
// step = gradzahl Bewegung
// n = Startposition in Grad, 90 = limks, -90 =rechts, 0 = oben, 180 = unten
MovieClip.prototype.Halbkreis=function(centX:Number,centY:Number,rad:Number,step:Number,n:Number) {
this.onEnterFrame=function() {
tx = centX - (Math.sindeg(n)*rad);
// Kreisberechnung X
ty = centY - (Math.cosdeg(n)*rad);
// Kreisberechnung Y
this._x = tx;
// MC bewegen nach x
this._y = ty;
// MC bewegen nach y
n -= step;
// Gradzaehler um Schrittweite ändern
if (n <= -90) {
// nach 180 Grad stop
delete this.onEnterFrame;
}
}
}
stern.halbkreis(250,250,200,2,90);
}
Vielleicht nützt es Dir
Edit: falls Du kein SM3 hast, bracust Du nur den Code kopieren und einen MC "stern" erstellen, das ist alles. Koordinaten von "stern" am besten x = 50 und y = 250, dann ist er auf der Startposition
Was ich im Endstadium erreichen und verstehen möchte ist folgendes...
Mal grob erklärt...
Ich zeichne mir eine Sinuskurve auf die Bühne, zeichne dann einen "dicken Punkt" dazu, das ist dann mein MovieClip und dieser soll per Script über die Sinuskurve fahren. Dann möchte ich nur durch veränderen eines Parameters die Amplitudenhöhe der Sinuskurve verändern und der "dicke Punkt" soll dann entsprechend über die neue Sinuskurve fahren.
Da steckt keine konkrete Anwendung hinter, ich möchte einfach nur lernen wie man sowas macht.
__________________ Wissen wird nur durch teilen erweitert..
..irgendwie Überrrascht micht Dodo immer wieder... schon seit Jahren!!!
Taucht auf...wirft ein gutes lehreiches Script rein und ist wieder weg
..aber die Beispiele sind
Original von Robin
Ich zeichne mir eine Sinuskurve auf die Bühne, zeichne dann einen "dicken Punkt" dazu, das ist dann mein MovieClip und dieser soll per Script über die Sinuskurve fahren. Dann möchte ich nur durch veränderen eines Parameters die Amplitudenhöhe der Sinuskurve verändern und der "dicke Punkt" soll dann entsprechend über die neue Sinuskurve fahren.
So eine Sinuskurve nur mit Halbkreisen zu erzeugen, sieht nicht so gut aus. Man kann so eine Kurve natürlich auch berechnen.
onSelfEvent (load) {
// radius = Höhe
// tempo = Weite - je kleiner, desto weiter
// anzahl = Wiederholungen
MovieClip.prototype.skurve=function(radius:Number,tempo:Number,anzahl:Number) {
this.onEnterFrame=function() {
this.lineStyle(1, 0xFF0000, 100);
dx = 0;
dy = 0;
winkel = 0;
this.moveTo(dx,dy);
this.onEnterFrame = function() {
winkel += tempo;
dy = Math.sin(winkel*Math.PI/180)*radius;
dx++;
this.lineTo(dx, dy);
if (winkel%(anzahl*360) == 0) {
delete this.onEnterFrame;
}
};
}
}
//Anwendung
box.skurve(150,4,5);
}
Für SM3 habe ich die Datei angehängt. Für SM2 einfach den Code kopieren und einen MC "box" erzeugen.
In eigener Sache:
Ich bin öfter hier als man evtl. denkt. Ich lese als Gast fleißig mit und wenn ich etwas in meinem Fundus habe, was hilfreich sein könnte, melde ich mich schon.
Nur ich poste das dann so wie es ist, mundgerecht aufbereiten wie in alten Zeiten, das mache ich nicht mehr.
In ein paar Tagen werde ich 67, da tritt man schon etwas kürzer
Wie doch die Zeit vergeht....diesen Wünschen schließe ich mich auch sehr gerne an.
...und finde deine Beispiele auch immer sehr hilfreich, soweie verständlich!
Die meisten erklären sich von selbst und müssen garnicht mundgerecht sein...
ein bischen knobeln wollen wir ja auch
Dir auf jedenfall alles Gute zum anstehenden Geburtstag...und bleib uns erhalten!
Die zuvor von mir geposteten Beispiele funktionieren alle so, dass bei jedem Eintritt in einen Frame die Gradzahl verändert und daraus die neue Position berechnet und mit lineTo eine Linie von der vorherigen zur neuen Position gezogen wird, Dadurch ergibt sich eine Kurve. Diese Methode ist natürlich langsam, weil eine bestimmte Anzahl Frames benötigt wird um die Kurve fertig zu stellen. Der Vorteil ist, dass jede einzelne Position dieser Kurve bekannt ist und man z.B. ein Objekt an dieser Kurve entlang fahren lassen kann.
So eine Kurve lässt sich auch in einem einzigen Frame erstellen, sozusagen blitzartig und zwar mit curveTo. Der Nachteil ist, dass man nur Start- und Endpunkt der Kurve, nicht aber die dazwischen liegenden Koordinaten kennt. Das macht es logischerweise schwierig, so eine Kurve mit einem Objekt abzufahren, wie Robin es gerne möchte.
Ich habe vor einiger Zeit ein kleines Tool erstellt, mit dem man curveTo schön demonstrieren kann. Das Teil ist in der praktischen Arbeit entstanden und zwar habe ich für die Uni Düsseldorf mal ein Swish-Programm erstellt, mit dem der Sauerstoffverbrauch von Ratten-Leberzellen in einem Subrat (Glutamat oder Succinat) simuliert werden konnte. Durch Zugabe von Adenosindiphosphat (ADP) erhöht sich der Sauerstoffverbrauch und dieser Verlauf wurde mit Swish in einem Diagramm dargestellt. Anfangs war das eine Gerade, die mit der Zugabe von ADP begann und endete, wenn das ADP verbraucht war. Nun ist es aber so, dass die Wirkung von ADP nicht schlagartig, sondern verzögert einsetzt und ebenso verzögert ausläuft. Deshalb wollte man auch keine Gerade in dem Diagramm sondern eine Welle. Leider konnte mir niemand sagen, wie so etwas zu berechnen ist. Ich habe daraufhin das Tool entwickelt und dem Auftraggeber gesagt, formt die Welle so, wie ihr sie haben möchtet und teilt mir einfach die Werte mit. Wenn ich mich richtig erinnere, haben wir uns dann auf Schnitt = 50, x = 75 und y = 25 geeinigt. Das hält zwar keiner wissenschaftlichen Überprüfung statt, für die Simulation reichte das aber völlig aus und wenn dadurch tatsächlich Laborversuche eingespart wurden, hat es einigen Ratten das Leben gerettet.
Das Swish-Programm (nicht das kleine Tool) stellte den kompletten Laborversuch in Echtzeit über eine Dauer von 20 Minuten dar. Das Diagramm wird entsprechend dynamisch gezeichnet. Außer ADP konnten noch DNP und KCN (Zyankali) zugegeben werden mit unterschiedlichen Auswirkungen auf die zu zeichnende Kurve. Zyankali beendete den Sauerstoffverbrauch sofort, weil die Zellen abstarben. Das stellte sich im Diagramm dann als eine waagerechte Gerade dar.
An den Auftrag und einige folgende bin ich durch eine Userin aus unserem Vorgängerboard gekommen, die für die Uni Düsseldorf als freie Mitarbeiterin/Dozentin tätig ist. Es hat Spaß gemacht, Swish einmal anders als üblich einzusetzen, obwohl es sicher andere, besser geeignete Programmiersprachen für das Projekt gegeben hätte.
Das Tool ist im Anhang und wurde mit SM2 erstellt.
Weiter ist im Anhang ein Screenshot des kompletten Diagramms, die Datei selber kann ich nicht zur Verfügung stellen, da es eine Auftragsarbeit war.
Wenn ich einen Hut tragen würde würde ich ihn jetzt ziehen, aber da ich keinen trage kann ich nur meine Hochachtung aussprechen und mich nochmal bedanken für das was du hier gepostet hast.
Das sind die Ansätze und Hilfen die ich gebraucht habe.
Danke.
__________________ Wissen wird nur durch teilen erweitert..
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Robin: 21.05.2010 16:15.
Durch etwas Nachdenken bin ich drauf gekommen, dass man die Sinuskurve ja auch mit einer for-Schleife zeichnen kann. Eine for-Schleife wird komplett in einem einzigen Frame abgearbeitet und und die Kurve erscheint komplett in einem Stück.
Ich habe es jetzt so in einem Prototypen umgesetzt:
1. Zeichnen der Sinuskurve mit einer for-Schleife
2. Entlangfahren eines Objekts (hier stern) an der Sinuskurve mit onEnterFrame