| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Nov 2005 Ort: Bayern
Beiträge: 225
| z-achsen rotation eines mc (sinus)
So, ich zerbrech mir seit mehreren Stunden den Kopf wegen folgendem Effekt: ich möchte eine "stehende Welle" über AS programmieren. Eine "stehende Welle" ist eine Sinuskurve, die sich im Prinzip um die z-Achse dreht (so ungefähr kann man den visuellen Effekt beschreiben). nun habe ich über AS eine Sinuskurve erstellt: HTML-Code: var xWert :Number = 0;
var yWert :Number = 0;
var pi = Math.PI;
var amp :Number = -49;
function sinus(amplitude) {
for (i=0; i<=720; i++) {
xWert = i * 2.68
yWert = 100 +(amplitude * (Math.sin(pi*2/360*i)));
sinus_mc.lineTo(xWert, yWert);
}
}
this.createEmptyMovieClip("sinus_mc", 1);
sinus_mc.lineStyle(2, 0xFF00FF, 100);
sinus_mc.moveTo(0, 100);
sinus (amp); Nun meine Frage: hat jemand einen Ansatz, wie ich den MC mit der Sinuskurve "um die z-Achse rotieren" kann? Die Rotationsbewegung könnte man wieder über den Sinus berechnen. Aber wie kann ich die Pixel eines MC´s ansteuern und ihnen sagen, wo hin sie sich bewegen sollen. Jemand eine Idee? |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2005 Ort: Bayern
Beiträge: 225
|
danke seib ![]() habs aber doch noch selbst hinbekommen mit der stehenden Welle ![]() hier mal mein Script : (für verbesserungsvorschläge an dem Script bin ich gerne dankbar... ) ActionScript:
|
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Nov 2005 Ort: Bayern
Beiträge: 225
|
nochmals eine Verbesserung in meinem Script. Jetzt "dreht" sich welle richtig um die x_Achse in z-Richtung :-) ActionScript:
|
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Nov 2005 Ort: Bayern
Beiträge: 225
|
also mein wissen ist nun erschöpft ![]() Die Welle funktioniert zwar einwandfrei, aber die Rechenleistung ist einfach zu derb (ab 3 Wellen geht mein Rechner in die Knie...) folgende ähnliche Wellenanimation möchte ich erstellen: http://www.flashintro.de/templates2.html?flash_intro (4te Reite mitte -> aufs image klicken und dann das preview anschauen) mit meiner Variante habe ich einfach viel zu viele Rechenoperationen. 30 Funktionsaufrufe pro Sekunde / pro Funktion 1x Movieclip erstllen / alten löschen / 720 sinus-berechnungen + if-abfragen macht circa 22000 Operationen pro Sekunde pro Welle... das ist einfach nicht wirklich gut programmiert. Hat jemand eine Idee, wie ich das noch lösen könnte??? |
| | |
| | #6 (permalink) | |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| Zitat:
for (i=0; i<=720; i++) { <== 720 linien for (i=0; i<=720; i+=10) { <== 72 linien langt. da ist kaum ein qualitätsunterschied zu erkennen; aber 90% gespahrt! - nicht jedesmal ein neues mc erzeugen, sondern die grafik mit clear löschen und neu zeichnen. - zwei wellen lang zeichnen und dann nur noch das mc hin- und her bewegen; anstatt das immer wieder neu zu berechnen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de | |
| | |
| | #7 (permalink) | |
| Neuer User Registriert seit: Nov 2005 Ort: Bayern
Beiträge: 225
|
Also habe das Script nun umgeändert auf jeden 10ten Punkt und mit Clear. Du hast Recht, man sieht Qualitativ keinen Unterschied und wirklich 90% Einsparung rechnerisch... Auf die Idee bin ich nicht gekommen ![]() Hier mein geändertes Script: ActionScript:
Zitat:
Ich zeichne die Kurve ja 2 Wellen lang mit 720 (1 Welle =360); Danach stopfe ich den MC in einen neuen MC und tweene den. Aber was meinst du damit, dass nicht immer wieder neu zu berechnen? Geändert von deejayy (31-05-2007 um 14:49 Uhr) | |
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| die welle wellt ;-) zeichne die welle einmal doppelt so lange (das was du jetzt hast nochmal hinten drann hängen) und dann das mc nur noch in x-richtung bewegen. das wellt genauso. wenn du das mc um eine ganze welle weit geschoben hast, dann um die komplette welle zurück und wieder langsam vorschieben.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (01-06-2007 um 13:29 Uhr) |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Nov 2005 Ort: Bayern
Beiträge: 225
|
ja, das ist mir klar ![]() mach ich ja momentan eigentlich auch schon da ich die welle für 1900 Pixel länge berechne (2 Wellen) und nur 950 Pixel breite habe... somit kann ichs verschieben und die welle wellt ![]() Aber ich verändere ja neben der Bewegung in x-Richtung (durch den Tween) auch nocht die Amplitude entsprechend, um eine "optische" Drehung um die x-Achse in Z-Richtung zu erzeugen. Und diese "Drehung" wird ja durch das Script erzeugt (jeweils neu zeichen). Somit muss ich ja gezwungenermaßen bei jedem Frame die Welle neu zeichnen lassen. Alternativ könnte ich einmal 120 MC´S erzeugen (je ein Wellenzustand) und diese MC´s pro Frame der reihe nach auf visible schalten (die anderen alle unsichtbar), dann hätte ich das selbe ergebniss... aber ich glaube nicht, dass das recht sinnvoll wäre |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |