PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Seltsames Verhalten von false-Klasse



Kelven
18.03.2011, 17:42
Folgende Situation (die bei mir schon in mehreren Projekten aufgetreten ist):

Ich hab eine Klasse mit einer Variablen @bla. Bei Initialisierung setze ich @bla auf false oder true. Später möchte ich @bla ändern und weise ihr false zu. Dann hängt sich der Maker auf. Es gibt keine Fehlermeldung, auch kein "Script is hanging" oder so. Weiß jemand woran das liegen könnte?

Ich hab's auch nochmal eben getestet. Mit dieser Klasse:



class Fehler
attr_accessor :bla

def initializie
@bla = true
end
end

Dann hab ich nen Charset bei dem per Scriptaufruf ein neues Objekt angelegt wird:


$fehler = Fehler.new

Und ein weiteres Charset ändert dann die Variable per:


$fehler.bla = false

Danach hängt sich das Spiel auf. Ich frag mich, ob ich bei false und true etwas grundsätzlich falsch verstanden hab oder ob der Maker spinnt.

-KD-
18.03.2011, 17:52
Das liegt an dem Event-Interpreter. Wenn ein Script-Befehl im Event false als Rückgabewert hat, wird das als "Fehler im Script" interpretiert und der Interpreter führt das Script nochmal neu aus, weil ja Fehler im Script plötzlich verschwinden wenn man ein Script nur oft genug ausprobiert oO

Ist jedenfalls ein ziemlich merkwürdiges Feature des Interpreters, bei dem die Entwickler bei Enterbrain sicher nicht ganz bei der Sache waren. Die einfachste Art und Weise das zu umgehen ist ans Ende deines Script-Befehls ein true anzuhängen.

@x = false
true

Ansonsten kannst du auch das Problem an der Wurzel packen und den Interpreter entsprechend umschreiben:

class Game_Interpreter
alias eval_event_code command_355
def command_355
eval_event_code || true
end
end
Das in den Script-Editor über dem Main-Script einfügen.