if Schleife oder nicht

if Schleife ja oder nein

  • ja

    Abstimmungen: 17 30,4%
  • nein

    Abstimmungen: 29 51,8%
  • keine Ahnung

    Abstimmungen: 10 17,9%

  • Anzahl der Umfrageteilnehmer
    56

DerBär

Erfahrenes Mitglied
Ich hatte gerade mit Geist eine interessante Diskussion zum Thema if.

Wie wir ja alle wissen spricht man in Verbindung mit
PHP:
if(Wert){
tudieses;
}
von einer Abfrage, und soweit ich weis ist das in jeder Programmiersprache so.
Nun aber wie verhält sich das im Falle von Flash ActionScript oder wenn ich das ganze in eine for oder while Schleife einbaue.

Da gibt es ja unter den MovieClip Funktionen dir Funktion "enterFrame".
Diese besagt nichts anderes, dass das Script auf diesem MC solange ausgeführt wird
solange es im Aktuellen Keyframe vorhanden ist. Also im Grunde eine Schleife.

Ja und jetzt zur Frage. Wenn ich jetzt auf ein MovieClip
PHP:
onClipEvent (enterFrame) {
    if (Wert) {
tudieses,
    }
}
code , bzw in PHP folgendes mache
PHP:
for($i=0;$i<10;$i++){
   if($Wert){
 $tudiese;
  }
}
hab ich dann automatisch eine if Schleife ?:rolleyes:

Nun haben wir beschlossen hier mal eine Umfrage zu machen.:p

Bin schon auf eure Antworten gespannt.;)
 
Zuletzt bearbeitet:
Hi,

man kann definitiv nicht von einer IF-Schleife sprechen, da zu einer Schleifenstruktur zwingend auch die Definition der Abbruchbedingung gehört (wenn man keine Endlosschleife produzieren will ;)). In dem o.g. Beispiel ist die Abbruchbedingung aber nicht durch die IF-Abfrage bestimmt, sondern wenn überhaupt durch den Auftritt des Ereignises "enterFrame". Aber auch das würde ich nicht als Schleife betrachten, da an ein wiederkehrendes Ereignis gebundene Befehle nicht zwingend unmittelbar hintereinander ausgeführt werden, was aber bei einer Schleife grundsätzlich der Fall ist (wenn das im Fall des Flash ActionScipt doch so ist, korrigiert mich, ich habe von Flash keine Ahnung).

Auch im Falle der zur Verdeutlichung gegebenen FOR-Schleife, ist es ja auch keine IF-Schleife, sondern eben eine FOR-Schleife.

Ein Beispiel für eine IF-Schleife ist höchstens noch eine uralte GOTO-Struktur wie diese (jedenfalls fällt mir sonst absolut kein Szenario ein, in dem man von einer IF-Schleife sprechen könnte):
Code:
10: i=0
20: IF i=10 THEN GOTO 60
30: tudieses
40: i=i+1
50: GOTO 20
60: END
OK, das ist uralt Basic und grottenschlecht mit GOTO zu arbeiten, aber wie gesagt: das würde ich als IF-Schleife bezeichnen.

so long, Fluke
smile_cool.gif
 
Zuletzt bearbeitet:
Hy,

nun kannst du aber lustigerweise den Spaß nicht nur 10mal ablaufen lassen, sondern echt x-mal per Kombination enterFrame&if()
PHP:
onClipEvent (enterFrame) {
 count++;
 if (count < 10) {
  tudieses;
 }
 if (count == 9) {
  count = 0;
 }
Du hast dann also doch 'ne Endlosschleife, warum dann also nicht 'ne if-Schleife?! ;)

Geist
 
Ähm, sorry, aber das ist ziemlich sinnlos:
PHP:
onClipEvent (enterFrame) {
count++;
if (count < 10) {
 tudieses;
}
if (count == 9) {
 count = 0;
}
Denn das ist exakt das gleiche wie:
PHP:
onClipEvent (enterFrame) {
    if (Wert) {
       tudieses;
    }
}
Nur dass du eben oben ein Beispiel für den zweiten Code gibst. Die Bedingung (count < 10) ist immer erfüllt, bei jedem Einstieg in das Ereignis "enterFrame". Das endet aber noch lange nicht in einer Endlosschleife. Die Anzahl der Schleifendurchläufe wird dabei immer noch durch das Ereignis "enterFrame" und den dazugehörigen Aufruf der Methode "onClipEvent(enterFrame)" bestimmt und nicht durch eine if-Bedingung.

Und auch wie dadraus eine Endlosschleife entstehen soll, sehe ich nicht. Dies könnte nur eintreten, wenn das Ereignis unendlich oft aufgerufen wird. Aber es bleibt Sache des Ereignisses... nicht der if-Anweisung.

In einer if-Schleife müsste die if-Anweisung sowohl die Laufvariable verändern als auch die Abbruchbedingung stellen. Keines von beidem wird in deinem Code durch die if-Anweisung geleistet.

Sorry, aber das ist definitv keine "if-Schleife". :) :rolleyes: :)

so long, Fluke
smile_cool.gif
 
Zuletzt bearbeitet:
Gargl...hier macht's mir aber einer schwer. ;)

Also eine Endlosschleife ist es in dem Sinne schon, denn lasse ich das enterFrame-Objekt weiterhin im Film, dann tritt die Aktion, deren Bedingung ja enterFrame ist, doch stets auf.
Folglich wird nie die Bedingung nicht erfüllt und ich habe eine Endlosschleife - oder nicht?

Des weiteren ist es möglich, einen EventHandler nicht nur manuell zu entfernen, sondern auch automatisch, sprich:
Es sollte möglich sein, bei jedem beliebigen Wert, den die Zählvariable annehmen kann, durch einen Check per if() ein Entfernen des onClipEvent-Codes herbeizuführen - irgendwie also eine Selbstauflösung.

Die Laufvariable ist afaik nicht änderbar, dazu müsste ich die Bildwiederholrate des Filmes ändern; nur dann wäre es imho möglich, die enterFrame-Bedingung zeitlich zu verändern.

Aber die Abbruchbedingung kann also auch die if-Abfrage stellen. :p

Geist
 
Hehe, weiter im Text :)
Also eine Endlosschleife ist es in dem Sinne schon, denn lasse ich das enterFrame-Objekt weiterhin im Film, dann tritt die Aktion, deren Bedingung ja enterFrame ist, doch stets auf.
Folglich wird nie die Bedingung nicht erfüllt und ich habe eine Endlosschleife - oder nicht?
Stimmt wohl. Aber eine Ereignis-Schleife, keine if-Schleife :)
Des weiteren ist es möglich, einen EventHandler nicht nur manuell zu entfernen, sondern auch automatisch, sprich:
Es sollte möglich sein, bei jedem beliebigen Wert, den die Zählvariable annehmen kann, durch einen Check per if() ein Entfernen des onClipEvent-Codes herbeizuführen - irgendwie also eine Selbstauflösung.
Hört sich logisch an.
Aber die Abbruchbedingung kann also auch die if-Abfrage stellen.
Dann liefert aber immer noch das Ereignis selber DURCH die if-Abfrage die Abbruchbedingung. Die umklammernde Struktur bleibt das Ereignis.

Auch das hier ist durch die if-Abbruchbedingung keine if-Schleife, sondern immer noch eine (wenn auch unsaubere und unsinnige) while-Schleife:
PHP:
count=0;
while (1<2) {
   count++;
   if (count==10) {
      exit;
   }
}
Die Laufvariable ist afaik nicht änderbar, dazu müsste ich die Bildwiederholrate des Filmes ändern; nur dann wäre es imho möglich, die enterFrame-Bedingung zeitlich zu verändern.
Laufvariable ist für mich die Bezeichnung für die Zählvariable einer Schleife (welche solange für die Ausführung der Schleife sorgt, bis sie die Abbruchbedingung erfüllt).

Fluke :)
 
Ja ja ich teile deine Meihnung Fluke auch
wenn das von mir gewählte Bsp eher nicht sehr anschaulich ist.
Naja und dann hab ich glaube ich irgendwann gehört das wen mann
heute noch die GOTO Anweisung verwendet (ausgenommen in Flash AS)
wird mann doch schon standrechtlich erschossen oder?:p


Des weiteren ist es möglich, einen EventHandler nicht nur manuell zu entfernen, sondern auch automatisch, sprich:
Es sollte möglich sein, bei jedem beliebigen Wert, den die Zählvariable annehmen kann, durch einen Check per if() ein Entfernen des onClipEvent-Codes herbeizuführen - irgendwie also eine Selbstauflösung.
@ Geist schon aber ohne dem Eventhändler der eigendlich ja die Schleife ist würde die If Abfrage ja auch nur genau einmal stattfinden
:)
 
Oki, wie wär dann folgender Vorschlag:

Da der Terminus "if-Schleife" ja bis dato noch nicht vergeben ist, würde ich vorschlagen, dass dieser einfach als halb-existent anerkannt wird in Verbindung mit dem enterFrame-Event in Flash. ;-)

Auch wenn man dann nicht von einer if-Schleife im Sinne einer geschleiften (oder geschliffenen :)) if-Abfrage reden kann, so ist diese Bezeichnung ab sofort darauf hin zurückzuführen, dass eine if-Anweisung innerhalb eines enterFrame-Events, welches die Schleife darstellt, zu einer schleifenähnlichen Struktur promovieren kann.

;)

in diesem Sinne,
"ich gebe mich geschlagen"

Geist :)
 
Auch wenn man dann nicht von einer if-Schleife im Sinne einer geschleiften (oder geschliffenen ) if-Abfrage reden kann, so ist diese Bezeichnung ab sofort darauf hin zurückzuführen, dass eine if-Anweisung innerhalb eines enterFrame-Events, welches die Schleife darstellt, zu einer schleifenähnlichen Struktur promovieren kann.

Promovieren am Fachbereich Schleifenwissenschaft:)
Naja für ein Ehrendoktorrat wird es wohl reichen
 
Nun für mich ist es eine Schleife mit if-Bedingung!!!!!

Und if eine Anweisung und keine Schleife - DEFINITIV!!!!!!!!

Nur weil man eine Schleife herumbastelt ist es für mit keine IF-Schleife!!! AUS, FERTIG, BASTA!!!!!

Und noch was!!!! Wenn ihr in Flash mit Events daher kommt, dann müsste es ja ein IF-Aktion bzw. IF-Event sein!!! Na Verwirrung komplett!
 

Neue Beiträge

Zurück