Dynamisches Event Switching in Reactive-Banana

9

Ich arbeite gerade an einem kleinen Spiel mit reaktiven Bananen und SDL. Da das Ziel hauptsächlich darin besteht, mehr über reaktive Banane und FRP zu lernen, habe ich versucht, mit dynamischem Switching eine Sammlung von Spielobjekten aufzubauen, aber bisher ohne viel Erfolg.

Im Beispiel von Bartab, dem einzigen Beispiel, das die Ereignisvermittlung verwendet, die ich gefunden habe, wird das Ereignis, das letztendlich die Erstellung eines neuen Eintrags in der Sammlung auslöst, von außerhalb des Ereignisnetzwerks abgerufen, anstatt ein internes Ereignis zu verwenden. Meine Frage ist: Ist dies der einzige Weg, oder ist es nur ein Sonderfall für dieses Beispiel?

Gibt es weitere Beispiele für die dynamische Ereignisumschaltung bei reaktiven Bananen?

Nach dem, was ich verstehe, bekomme ich einen Moment t (Anytime Behaviour a), benutze execute, um ein Event t zu erstellen (Anytime Behaviour a), das wiederum benutzt wird, um das Behaviour mit der Sammlung zu aktualisieren. Der Moment t (Anytime Behavior a) wird mit trimB in einem Verhalten erstellt, das vom auslösenden Ereignis erstellt wurde. Wenn dieses auslösende Ereignis aus dem Ereignisnetzwerk stammt, wird es nicht mit der Fehlermeldung "Konnte nicht ableiten (t ~ t1)" kompiliert. Ich bin mir nicht sicher, was das ~ genau bedeutet, aber es wirft offensichtlich den Fehler auf, weil die zwei Frameworks-Werte (t) des Ereignisnetzwerkes und dieser neue Moment-Wert unterschiedlich sind.

Also, lange Rede kurzer Sinn, ich verstehe nicht, wie Event Switching in reaktiven Bananen funktioniert und ich bin mir nicht sicher warum. Es sollte in der Theorie relativ einfach sein.

Bearbeiten:

%Vor%

Ich habe einfach versucht, newEntry / eNewEntry aus dem Beispiel zu spiegeln, indem ich einfach ein normales Ereignis verwendete, um das neue Verhalten zu erstellen. Dies erzeugt den Fehler "Konnte nicht ableiten (t ~ s)" in spawnPos.

Bearbeiten2:

Es funktioniert, aber jetzt kommt der gleiche Fehler in der Zeile, in der ich execute zum Erstellen des Events verwende. "Konnte t ~ t1 nicht ableiten"

    
AsgarZigel 01.03.2013, 17:27
quelle

1 Antwort

4

Es scheint mir, dass der Code abgesehen von einem kleinen Fehler im Wesentlichen korrekt ist:

Der Compiler beklagt zu Recht, dass spawnPos eine (polymorphe) Startzeit s hat, während die Startzeit von eSpawnEvent auf t festgelegt ist, was anders ist. Die letztere Zeit wird über den forall t -Teil in der Typ-Signatur von setupNetwork in den Geltungsbereich gebracht. Mit anderen Worten, t repräsentiert die Startzeit des gesamten Netzwerks.

Die einfache Lösung besteht darin, die fehlerhafte Zeile in

zu ändern %Vor%     
Heinrich Apfelmus 03.03.2013, 08:46
quelle

Tags und Links