|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: Mo, 22.10.2007 09:15:41
In-reply-to:
<812F86EC9E1A96489D5E83C2AB7D6886015783CE@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<812F86EC9E1A96489D5E83C2AB7D6886015783CE@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hallo Frank,
Am 22.10.2007 um 07:40 schrieb Menzel, Frank IT-OO4:
Hallo Timo,
Du hast nun zusätzlich deactivateCalledBehaviours eingebaut. Dies
hat nun zur Folge, dass das Verhalten1, welches das Cancel-
Verhalten als auch das abzubrechende Verhalten2 aufruft, nicht
wieder aktiviert wird nach Zuschlagen der Abbruchbedingung.
Zur Verdeutlichung:
Verhalten 1 ruft also auf:
-Verhalten2 mit data-Verhalten1
-cancel-Verhalten ebenfalls mit data-Verhalten1, um Verhalten2
abzubrechen
Nun trifft Abbruchbedingung des Cancel-Verhaltens zu und Verhalten2
wird abgebrochen. Verhalten2 erreicht nicht die Endestelle mit
return_from_behaviour.
Das Cancelverhalten erreicht zwar return_from_behaviour, es wird
aber scheinbar der caller vorher durch deactivateCalledBehaviours
initialisiert und damit Verhalten 1 nach Rückkehr nicht mehr
aktiviert.
und das so früh am Morgen... ich glaube, ich weiß aber, was du meinst.
Sollte nicht ein Aufruf von bot_cancel_behaviour(NULL) (also kein
Caller), das Problem umgehen?
Nach Auskommentieren von deactivateCalledBehaviours funktioniert es
wieder.
Aber ohne deactivateCalledBehaviours(), lassen sich keine Verhalten
deaktivieren, die andere Verhalten starten, wie z.B. solve_maze(). Da
solve_maze() fast nie selbst aktiv ist, sondern nur die vom ihm
gestarteten Hilfsverhalten, läuft deactivateBehaviour() dann ins
Leere und nichts passiert.
Gruß Timo
|
|
|