Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-09-2004, 10:25   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 5
Frage zu einem Problem

Liebe Leute,
ich bin seit gestern bei diesem Forum angemeldet und habe beim Stöbern auch schon viel Interessantes endeckt. Vielen Dank.

Ich kämpfe mit einem Problem. Für einen Freund (Psychotherapeut) programmiere ich in Flash5 ein Program das auf dem Programm ELIZA von J. Weizenbaum aus den 60er Jahren (!) basiert. Der User gibt eine Frage ein und der "Doktor" antwortet. Es entsteht so scheinbar ein Dialog, da das Programm in der Frage des Users nach Schlüsselworten sucht und daraus eine Antwort bastelt. Die string-operationen funktionieren alle, aber in der while Schleife funkts nicht, der Computer hängt sich immer auf. Der Code des buttons:

on (release) {
work=pat;
l=work.length;
m=0;
while (l>1){
e=work.indexOf(" ");
s=work.slice(0, e);
work=work.substring(e+1, m);
l=work.length;
if (s==k[i]) {m=i};
}
//hier folgt der Antwortteil
if (s==k[0]) {doc="Fühlst Du dich oft "+s+" ?"}
else{doc="Tja ich weiß nicht. "+s};

}

pat = Texteingabe des Users (PATient)
doc = Antwort des "Doktors"
k= Array der Schlüsselworte (key)
k[1]= "einsam"
Wie gesagt, die Schleife funktioniert noch nicht. der Antwortteil ist noch nicht ausprogrammiert.

Ich wäre dankbar wenn mir jemand einen Tipp geben könnt, was da nicht funktioniert.
fraglos ist offline   Mit Zitat antworten
Alt 25-09-2004, 16:10   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
while-Schleifen in Flash sind immer sehr gefährlich, denn wenn du mehr als 255 Verschachtelungstiefen erreichst, hängt sich der Film auf. Versuchs mal mit einer for-Schleife...

Außerdem solltest du dir deine Variablenzustände unbedingt über traces im Testmodus ausgeben lassen, damit du mehr Kontrolle über das Script hast.

Geändert von agedoubleju (25-09-2004 um 16:11 Uhr)
  Mit Zitat antworten
Alt 27-09-2004, 10:36   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2004
Beiträge: 5
danke für den Hinweis
fraglos ist offline   Mit Zitat antworten
Alt 27-09-2004, 11:07   #4 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
@ AW:

das stimmt doch überhaupt nicht !!!

selbst das geht noch:
PHP-Code:
var i=0;
while(
i++<200000){
    
trace(i);
    } 
und das der player bei vermeintlichen endlosschleifen das script abbricht ist schon ok, aber nicht bei 255. was du meinst ist die maximale rekursionstiefe. rekursion tritt dann auf, wenn eine funktion sich selber immer wieder aufruft.
also mal nix durcheinander bringen, dies hat mit dem problem nichts zu tun.

übrigens sind while schleifen im grunde genau dasselbe wie for schleifen, da ist auch nichts gefährliches dran sie zu benutzen. man sollte natürlich darauf achten KEINE endlosschleifen zu produzieren.

@farglos, wahrscheinlich ist bei dir l niemals < 1 und deshalb bricht deine schleife nicht ab. kontrolliere dies nochmal
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 27-09-2004, 11:28   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
@maddin: Eine Verschachtelung ist eine Rekursion... Und bei while-Schleifen kann das schnell passieren, dass man unbeabsichtigt das Script zum Aufhängen bringt. Dein Beispiel zeigt ja auch "nur" das Hochzählen einer Variable.
  Mit Zitat antworten
Alt 27-09-2004, 12:40   #6 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
Registriert seit: Jul 2003
Ort: berlin f-hain
Beiträge: 1.693
mit meinem beispiel wollte ich dir nur zeigen, daß ne while schleife ÜBERHAUPT nichts mit rekursion zu tun hat und deshalb NICHT auf 255 durchläufe begrenzt ist. deshalb zähle ich "nur" die variable hoch.

in dem beispiel von fraglos gibt es ebenfalls KEINE rekursion, sondern lediglich ein while-schleife, deren abruchbedingung anscheinend NIE eintritt. deshalb bricht bei ihm das script ab.

@fraglos: wo definiertst du bitte i ??? und was passiert wenn er kein " " findet?? frag das lieber mal ab.
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz 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 12:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele