Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-03-2005, 00:15   #1 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
Actionscript grundsatzfrage

hi

wie macht man es eigentlich am besten wenn man mehr schleifen hintereinander laufen lassen möchte. Nicht daß ich es nicht irgendwie hinbekomme aber ich würde gern wissen wie die "normale" performancebeste Methode ist. bisher hab ichs immer so gemacht;


PHP-Code:
blablamc.onEnterFrame = function() {

...
erste schleife

if(bedingung) {
delete this.onEnterFrame
this
.onEnterFrame = function() {
...
zweite schleife

if(bedingung) {
delete this.onEnterFrame
this
.onEnterFrame = function() {

...
dritte schleife

if(bedingung) {
delete this.onEnterFrame


}
}
}
}
}

Clemenses ist offline   Mit Zitat antworten
Alt 16-03-2005, 00:23   #2 (permalink)
dreizeiler
 
Benutzerbild von mojave
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 1.411
wäre nicht schlecht zu wissen wie die schleife wirklich aussieht. so wie es jetzt scheint, würde ich einfach alle "if"-anweisungen in eine schleife einbinden.
mojave ist offline   Mit Zitat antworten
Alt 16-03-2005, 00:27   #3 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
könnte jede funktion sein - daß mehrere Schleifen nacheinander laufen sollen brauch wohl nicht nur ich ständig mich würd interessieren obs da eine allgemeine Methode gibt

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 16-03-2005, 09:21   #4 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Ich denke schon das die Version die Du hattest ein feine Sache ist.
Würde auch ne neue onEnterFrame "aufsetzen", da wenn mann mehrere if-Bedingungen hatt und diese im nächsten gar nicht braucht ist das eh praktischer, weil diese sonst noch geprüft werden (und diese dann eh egal sind). Und ich finde es übersichtlicher.
Aber obs nun die beste Möglichkeit ist kann ich nicht sagen...
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 16-03-2005, 11:45   #5 (permalink)
links, gerade, letzte tür
 
Benutzerbild von KAI IX
 
Registriert seit: Oct 2001
Ort: Köln
Beiträge: 705
hoi.

zuersteinmal würde ich versuchen, schleifen nie in einer eventprocedure ablaufen zu lassen. schließlich muß man bedenken, daß diese schleifen bei jedem bilddurchlauf iterieren. sollte das jedoch anders nicht möglich sein: immer die iteration so kurz als möglich halten. stichwort break...

zum zweiten ist das problem nicht klar genug definiert. so wie ich es verstehe könntest du die anweisungen auch in die jew. schleifenkörper packen und dann immer mit `nem break; rausspringen...

mfg
__________________
2addicted.de
KAI IX ist offline   Mit Zitat antworten
Alt 16-03-2005, 14:54   #6 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
Hallo,

das ist eine gute Frage, denn ich Löse es bisweilen wie Clemenses.
@KAI IX: Kannst Du mal Deinen Ansatz genauer beschreiben?

Danke,
solo
soloFlash ist offline   Mit Zitat antworten
Alt 18-03-2005, 00:35   #7 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
keine Ahnung was Iteration ist. hab das immer mit goldener Schnitt in Verbindung gebracht?

wie könnte man es also besser machen?

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 18-03-2005, 00:52   #8 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Sorry das ich mich hir einmische!
Wenn hier schon fragen über wie mach ich "Schleifendurchläufe richtig", gestellt werden!! Darf man wenigstens erwarten das sich Fragensteller mit der Grundsubstanz auseinandersetzen!!!

" Iteration ist eine Wiederholung einer Schleife in einem Computerprogramm."

"switch-case" würde ich empfehlen!!
------------------------------------------------------------------------
switch (zahl) {
case 1:
trace ("case 1 ergab true");
break;
case 2:
trace ("case 2 ergab true");
break;
case 3:
trace ("case 3 ergab true");
break;
default:
trace ("kein case ergab true")
}
------------------------------------------------------------------------
Lässt sich auch wunderbar in der Flashhilfe nachschlagen!!
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 18-03-2005, 14:22   #9 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
Hallo,
danke für Dein einmischen!

"Wiederholung einer Schleife"... Äh, ist es nicht so, dass eine Schleife sich von sich aus wiederholt? Sonst wärs ja keine Schleife, oder?

Ist das Deine Idee???
ActionScript:
  1. this.onEnterFrame = function ()
  2. {
  3. switch (zahl) {
  4.  case 1:
  5.   trace ("case 1 ergab true");
  6.   break;
  7.  case 2:
  8.   trace ("case 2 ergab true");
  9.   break;
  10.  case 3:
  11.   trace ("case 3 ergab true");
  12.   break;
  13.  default:
  14.   trace ("kein case ergab true")
  15.  }
  16. }

Banales beispiel:

ich will dass ein MC sich erst noch links bewegt. Wenn er eine gewisse Grenze überschritten hat, soll er sich nach unten bewegen.
Würde ich so machen:
ActionScript:
  1. this.onEnterFrame = function ()
  2. {
  3.   // beweg dich nach links
  4.   if (links angekommen)
  5.   {
  6.     this.onEnterFrame = function ()
  7.     {
  8.       if (unten angekommen)
  9.       {
  10.          delete this.onEnterFrame;
  11.       }
  12.     }
  13.    }
  14. }
Mir ist nicht klar, was:
a) daran schlecht ist (ausser dass nach x-Verschachtelungen der Code unübersichtlich wird)
b) wie ich es anders machen könnte.

freue mich über jede Meinung, Danke!

Grüße,
solo
soloFlash ist offline   Mit Zitat antworten
Alt 19-03-2005, 01:04   #10 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Für Dein Beispiel brauchst ja eigentlich keine Schleife!!

onEnterFrame oder setInterval ist für Dein anliegen wohl richtig (kontrolle der Position eines Mc's)!

Wobei des enggenommen ja keine Schkleifen sind!!

for, for-in,while, do-while sind eigentlich Schleifen!

War ich wohl mit switch-case auch nicht so richtig

Btw! onEnterFrame würd ich nicht schachteln, eins reicht eigentlich aus
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 19-03-2005, 09:13   #11 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
für das was du machen willst, hast du schon die richtige Struktur, nur heißt es nicht Schleife, wie Rusty gesagt hat.

Du kannst es noch etwas schneller machen, indem du die Funktionen nicht direkt verschachtelst, sondern erstmal alle anlegst, und dann später zuweist:

ActionScript:
  1. oef1 = function()
  2. {
  3.     /* tue was */
  4.    
  5.     if(/* bedingung */)
  6.     {
  7.         this.onEnterFrame = oef2;
  8.     }
  9. };
  10.  
  11. oef2 = function()
  12. {
  13.     /* tue was */
  14.    
  15.     if(/* bedingung */)
  16.     {
  17.         this.onEnterFrame = oef3;
  18.     }
  19. };
  20.  
  21. //...
  22.  
  23. this.onEnterFrame = oef1;

Damit verhinderst du eine allzutiefe Verschachtelung im Code, und du hast eine bessere Performance, da die Funktionen nur einmal erstellt werden.
(das gilt nur, wenn sich der Vorgang wiederholen soll)
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp 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:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele