Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-11-2004, 14:10   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 54
Sinus Kurve verdoppelt sich

Hallo liebe Flashforum.de User,

ich habe ein recht simples Script welches zwei Sinuskurven erstellt, welche sich kreuzen, und beide von rechts nach links fahren lässt. Das ganze sieht so aus:
ActionScript:
  1. var i = 1;
  2. var plusI = .1;
  3. var j = -20;
  4. var plusJ = 5;
  5. var l = 100;
  6. var farbe1 = "0x000000"
  7. var farbe2 = "0x000000"
  8. var moveX = 300;
  9. var speedX = 10;
  10. var scale = 100;
  11.  
  12. this.createEmptyMovieClip("stift_mc1", 0);
  13. this.stift_mc1._xscale = scale;
  14. this.stift_mc1._yscale = scale;
  15. with (this.stift_mc1) {
  16.     lineStyle(2, farbe1);
  17.     moveTo(-20, 100);
  18. }
  19. this.stift_mc1.onEnterFrame = function() {
  20.     if (j < -10) {
  21.         this.moveTo(j, 100 + (Math.sin(i) * l));
  22.     } else {
  23.         this.lineTo(j, 100 + (Math.sin(i) * l));
  24.     }
  25.     trace(100 + (Math.sin(i) * l));
  26.     i += plusI;
  27.     j += plusJ;
  28.     if (j > moveX) {
  29.         this._x -= speedX;
  30.     }
  31. };
  32.  
  33. this.createEmptyMovieClip("stift_mc2", 1);
  34. this.stift_mc2._xscale = scale;
  35. this.stift_mc2._yscale = scale;
  36. with (this.stift_mc2) {
  37.     lineStyle(2, farbe2);
  38.     moveTo(-20, 1);
  39. }
  40. this.stift_mc2.onEnterFrame = function() {
  41.     if (j < -10) {
  42.         this.moveTo(j, 100 + (Math.sin(i) * -l));
  43.     } else {
  44.         this.lineTo(j, 100 + (Math.sin(i) * -l));
  45.     }
  46.     i += plusI;
  47.     j += plusJ;
  48.     if (j > moveX) {
  49.         this._x -= speedX;
  50.     }
  51. };
Die erste Abfrage beider Kurven (j < -10) verhindert das die Kurve am Anfang direkt loszeichnet, das verursachte bei mir nämlich einen ziemlich unhübschen Start der Kurve.

So nun aber zum Problem:
Lässt man das Script einige Zeit laufen, verdoppeln sich die Sinuskurven und zusätzliche gerade Linien welche am gleichen Startpunkt wie die Kurven beginnen, und deren Ende immer das Ende der Sinuskurven verfolgen. Es ist etwas schwer zu erklären deswegen testet es am besten einmal selber. Es ist zwar nicht besonders schwer nachzubauen, aber ich habe mal die Fla noch mit dran gehängt.

Schonmal dickes Danke und noch ein kleiner Tip:
Starrt nicht zu lange drauf, da kann einem etwas mulmig werden

MfG Benjamin
Angehängte Dateien
Dateityp: zip sinus.zip (5,2 KB, 20x aufgerufen)
Benni@flash ist offline   Mit Zitat antworten
Alt 09-11-2004, 15:37   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. if ((j-i)>10000)    trace(j-i);
  2.  
  3. if (j > moveX) {
  4.   this._x -= speedX;
  5. }
alles hat einmal ein ende. du kannst nicht bis in alle ewigkeiten weiter addieren.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 09-11-2004, 16:11   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 54
Wie könnte ich denn die Linie ewig weiterlaufen lassen?

MfG Benjamin
Benni@flash ist offline   Mit Zitat antworten
Alt 09-11-2004, 17:56   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
antwort: du kannst nicht bis in alle ewigkeiten weiter addieren.
frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
antwort: du kannst nicht bis in alle ewigkeiten weiter addieren.
frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
antwort: du kannst nicht bis in alle ewigkeiten weiter addieren.
frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
...
die fläche auf der gezeichnet werden kann ist begrenzt. wie ein km-zähler im auto. irgendwann fängt der wieder bei null an.

nimm mehrere mc's und schieb die durchs bild. wer hinten rausfällt wird vorne wieder angesetzt.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 10-11-2004, 08:05   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 54
Zitat:
Zitat von hgseib
antwort: du kannst nicht bis in alle ewigkeiten weiter addieren.
frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
antwort: du kannst nicht bis in alle ewigkeiten weiter addieren.
frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
antwort: du kannst nicht bis in alle ewigkeiten weiter addieren.
frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
...
Ojemine was ist denn in dich gefahren? Also erstmal ist das nicht unsere Kommunikation gewesen. Folgendes trifft dort eher zu:
Frage: Warum verdoppeln sich meine Sinuskurven?
Antwort: Weil du nicht bis in alle Ewigkeiten weiter addieren kannst.
Frage: Wie könnte ich denn die Linie ewig weiterlaufen lassen?
Antwort: (Hier könnte eine Antwort stehen)

Ich habe nicht gefragt, wie ich trotz der Beschränkung weiter addieren kann, ich wollte wissen wie ich die Linie ewig weiterlaufen lassen kann. Ich habe mich hier wohl nicht besonders deutlich ausgedrückt, das ist aber noch kein Grund zu versuchen, mich hier auf die Schippe zu nehmen. Besonders nicht mit einer solch überzogenen und teils falschen Zusammenfassung unserer Unterhaltung hier.
Zitat:
Zitat von hgseib
nimm mehrere mc's und schieb die durchs bild. wer hinten rausfällt wird vorne wieder angesetzt.
So, kommen wir nochmal zum wesentlichen. Von der Grundidee her ist mir klar, das ich wenn ich nicht ewig in eine Richtung laufen lassen kann, ich deswegen die Linien hintereinander setzen muss. Ich habe da von der Idee her eher Probleme, zB die Linien so aneinander zu setzen, das sie durchgängig aussehen und immer wieder hintereinander gesetzt werden können. Ich hatte bei meinem ersten Versuch, schon Probleme den Anfang sauber zu zeichnen. Naja dann werd ich wohl weiter probieren müssen...
Benni@flash ist offline   Mit Zitat antworten
Alt 10-11-2004, 20:08   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..jemine was ist denn in dich gefahren?.."
und wo fühlst du dich angegriffen? die beiden sätze sind exakt so nacheinander gefallen: der 1. satz von mir, der 2. satz von dir.
da ist nichts falsches zusammengefasst worden, weil da nicht dazwischen ist. ich fand diesen ringschluss witzig - egal...


gezeichnete linien selbst kann man halt nicht verschieben. deshalb:

mach es so, wie man es mit früheren flash-versionen gemacht hat. ein mc, das aus einer linie besteht so positionieren und drehen, das es wie die gezeichnete linie aussieht. anfangs- und endpunkte sind die selben wie bei draw. das kann also weder besser noch schlechter aussehen.

programmiertechnisch aufwendiger, dürfte dafür in der ausführung schneller sein:
zeichne wie jetzt auch in ein mc. nach z.b. 3000 punkten setzt du ein neues mc an (in dem du wieder bei 0 bzw. -1500 anfangst zu draw'en) und das hindere mc löschen. entspricht meinem bereits gemachten vorschlag.


p.s.
"..Warum verdoppeln sich meine Sinuskurven?.."
das ist niemals passiert! nur eine optische täuschung. so wie ein rad mit speichen bei einer gewissen drehzahl scheinbar rückwärts dreht. mach dein altes movie langsammer, bzw. kleiner, dann verschwindet dieser effekt.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (10-11-2004 um 20:12 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele