Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-08-2003, 23:26   #1 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Aktionen automatisch ablaufen lassen

Ich habe eine einfachen Sequenzer für Aktionen gebaut, der vielleicht dem ein oder anderen nützlich sein kann.

Das Prinzip ist ganz einfach.
Es gibt immer zwei Funktionen, eine für die Bedingung und eine für die Aktion. Solange die Bedingung wahr liefert, wird die Aktion ausgeführt. Wenn die Bedingung nicht mehr gilt, wird die nächste Aktion geholt. Das geht solange, bis das Array mit den Aktionen zuende ist.


ActionScript:
  1. // Bedingung: Solange width > 50 ist, true liefern
  2. function bedResizeWidth(){
  3.     return width > 50
  4. }
  5.  
  6. // Aktion: width wird um 10 verringert
  7. function doResizeWidth(){
  8.     trace("width: " + width);
  9.     width -= 10;
  10. }
  11.  
  12. // Bedingung: Solange height > 50 ist, true liefern
  13. function bedResizeHeight(){
  14.     return height > 50;
  15. }
  16.  
  17. // Aktion: height wird um 10 verringert
  18. function doResizeHeight(){
  19.     trace("height: " + height);
  20.     height -= 10;
  21. }
  22.  
  23. // Hier werden alle Bedingungen der Reihe nach gespeichert
  24. conditions = [ bedResizeWidth, bedResizeHeight];
  25.  
  26. // Hier werden alle Aktionen der Reihe nach gespeichert
  27. actions = [ doResizeWidth, doResizeHeight];
  28.  
  29. // act zeigt auf den aktuellen Arrayeintrag
  30. act = 0;
  31.  
  32. width = 100;
  33. height = 100;
  34.  
  35.  
  36. onEnterFrame = function(){
  37.     // wir suchen die nächste Bedingung, die wahr liefert   
  38.     while( ! conditions[act]()){
  39.         act++;
  40.         // wenn es keine mehr gibt, raus hier
  41.         if( act >= actions.length){
  42.             delete onEnterFrame;
  43.             return;
  44.         }
  45.     }
  46.     // wenn die gefundene Bedingung wahr ist,
  47.     // wird die Aktion ausgeführt
  48.     actions[act]()
  49. }


Das Beispiel oben macht nichts besonderes. Es gibt nur die Zahlen von 100 bis 50 absteigend ins Ausgabefenster aus. Hier könnt ihr eurer Fantasie freien Lauf lassen. Natürlich kann man genausogut weitere Bedingungen und Aktionen schreiben und an die entsprechenden Arrays hinten anhängen.

Viel Spass damit,
mfg r.
bokel ist offline   Mit Zitat antworten
Alt 02-08-2003, 07:55   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Noch etwas einfacher wird es, wenn man die Bedingung in die Aktion mit hinein nimmt. Wir führen die Aktion solange aus, bis sie falsch liefert, dann holen wir die nächste Aktion. Wenn es keine Aktion mehr gibt, wird die Schleife beendet.

ActionScript:
  1. // Aktion: width wird um 10 verringert
  2. function doResizeWidth(){
  3.         trace("width: " + width);
  4.         if( width > 50){
  5.             width -= 10;
  6.             return true;
  7.         }
  8.         return false;
  9. }
  10.  
  11. // Aktion: height wird um 10 verringert
  12. function doResizeHeight(){
  13.         trace("height: " + height);
  14.         if( height > 50){
  15.             height -= 10;
  16.             return true;
  17.         }
  18.         return false;
  19. }
  20.  
  21. // Hier werden alle Aktionen der Reihe nach gespeichert
  22. actions = [ doResizeWidth, doResizeHeight];
  23.  
  24. // act zeigt auf die aktuelle Aktion
  25. act = 0;
  26.  
  27. width = 100;
  28. height = 100;
  29.  
  30. onEnterFrame = function(){
  31.     // wir suchen die nächste Aktion, die wahr liefert 
  32.     while( ! actions[act]()){
  33.         act++;
  34.         // wenn es keine mehr gibt, raus hier
  35.         if( act >= actions.length){
  36.             delete onEnterFrame;
  37.             break;
  38.         }
  39.     }
  40. }

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 02-08-2003, 08:47   #3 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
Thumbs up

schönes beispiel... da kommt die grund idee gut rüber.....
ich steh seit m.c.v eh voll auf solche sachen
der code ist zwar länger... aber die struktur genial überschaubar....
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 02-08-2003, 11:18   #4 (permalink)
nachtaktiver Flasher
 
Benutzerbild von Cool
 
Registriert seit: Jan 2002
Ort: Stuttgart
Beiträge: 1.310
Thumbs up

danke, sehr praktisch!
__________________
Gruß

-Marc-


Wenn das Automobil denselben Entwicklungszyklus wie der Computer hätte, würde ein Rolls Royce heute 100 Dollar kosten, eine Gallone Benzin auf eine Million Meilen verbrauchen und einmal pro Jahr explodieren und dabei alle Insassen umbringen.
Cool 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 06:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele