• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Vermeidung von onClick-Event

Akrisios

Geonewbie
Hallo zusammen,

ich bastle gerade mit Urwigo an meinem ersten Whereigo. Ich war auch soweit fertig, im Simulator und auf Android lief das Ganze wie es soll. Nun bin ich, ich weiß, reichlich spät, auf die Probleme mit den Garmins gestoßen und hab nun Etliches zu ändern :kopfwand:

Mein bisheriger Ablauf sah vor:
Zone betreten -> Task dieser Zone aktivieren -> Nutzer muss Task abschließen (Frage richtig beantworten) -> Zone wird deaktiviert, nächste Spielzone wird aktiviert usw.
Dabei war es so, dass der Input durch onClick-Event gestartet wurde, sodass man also manuell das Eingabeformular aufrief - da war es auch kein Problem, wenn die Frage falsch beantwortet wurde, es gab den Hinweis auf eine falsche Lösung als Message und der Nutzer konnte durch Anklicken des Tasks die Eingabe wiederholen.

Wie bau ich dieses Verhalten denn jetzt am besten ohne onClick nach?
Ich hab das jetzt so, dass gar keine Tasks mehr da sind, sondern dass beim Betreten der Zone direkt der Input aufgerufen wird und bei falschen Eingaben (onError) bzw. wenn die Antwort nicht mit der erwarteten übereinstimmt, der Input sich selbst neu aufruft.
Das führt aber zu Problemen, wenn der Nutzer falsche Eingaben macht. Ohne jetzt genauer getestet zu haben funktionieren nur "wenige" Falscheingaben, sobald ich mehr als ~3 mal falsch antworte, stürtzt das ganze mit einem Stack-Overflow ab, ich nehme an, weil die Inputs zu verschachtelt werden.
Ein weiteres Problem ist, wenn der Nutzer die Spielzone verlässt, während der Input noch offen ist und sie wieder betritt: das alte offene wird als falsch beantwortet gewertet, ruft sich also selbst neu auf und durch das Betreten der Zone wird der selbe Input auch nochmal aufgerufen.
Und zu guter Letzt ist noch das Problem, dass solang der Input offen ist, der Nutzer nicht aufs Inventar zugreifen kann, in dem sich manchmal Hinweise zur Aufgabe befinden. Zwar kann ich den Input abbrechen, aber ihn ja nicht mehr manuell aufrufen, nachdem ich mich im Inventar umgesehen habe.
Mit onClick->Input war das alles so einfach :/
In die Zone einen Character oder Item zu stellen, der mir durch ein Command "Ansprechen" o.ä. die Frage stellt, finde ich blöd...

Und eine zweite Frage, die ist nicht ganz so wichtig: Kann ich in einer Message statt eines Textes ein Bild darstellen?
 

Charlenni

Geomaster
Ich nehme an, Du kommst nicht darum herum, einen Character/Item zu verwenden, der Dir den Input-Aufruf übernimmt. Beim Betreten der Zone diesen Input aufzurufen ist nicht gut (viel Gerenne und damit bleiben die Leute immer am Zonenrand stehen was auch zu Problemen führt.

Bau doch eine Antwortmaschine oder ein Aufzeichnungsgerät. Ich habe auch schon ein Notizbuch verwendet, in den alle Antworten eingetragen werden können. Kann immer aufgerufen werden, eventuell kann man auch nachschauen.

Man kann bei einer MessageBox immer Text und Bild angeben. Oder auch nur eins davon. Wie das nun genau bei Urwigo funktioniert weiß ich leider aus dem Kopf nicht. Sollte aber kein Problem sein.
 

Team Eifelyeti

Geomaster
Boah - da hast Du Dir aber jetzt eine Menge an Komplexität eingehandelt, was die Antwort auf Deine Frage(n) angeht.

Versuche mal, etwas zu strukturieren.

1. Tasks - Finger weg, da diese auf Garmingeräten nicht vollumfänglich funktionieren. Bei Garmin wird beim Click auf den Task nur ein hinterlegter Text angezeigt, sonst nix. Was auf Garmins funktioniert - erledigte Tasks bekommen ihr Häkchen

2. Aufruf eines Inputs beim betreten der Zone - Nicht so pralle, da, insbesondere "verschachtelte" Inputs dem Spieler keine Möglichkeit lassen (hast Du ja selber schon beschrieben). Des weiteren kann ein offener Input beim Verlassen der Zone zum Absturz führen (da die Zone durch GPS Ungenauigkeiten auch verlassen werden kann, wenn sich der Spieler nicht einen Millimeter bewegt...)

3. On Click - Finger weg, da dies auf Garmins nicht funktioniert.

Was sich bei meinen Wherigos bewährt hat (und dies ist meine rein subjektive Erfahrung und es gibt evtl. andere Lösungen):

Wenn ein Input durch den Spieler erfolgen soll, wird eine Item in das Inventar gelegt, welches mittels eines definierten Commands den erforderlichen Input aufruft. Damit ist auch zugleich das Problem eines offenen Inputs beim Verlassen der Zone erledigt.

Beim betreten der Zone kannst Du eine Messagebox ausgeben (auch mit Bild!!! Dies kannst Du an der Messagebox definieren), die den Spieler über dieses Item informiert und schon die Frage stellt.

Für Items und Characters immer ein "Command" definieren, welches die "OnClick" Funktion übernimmt.

Hoffe, dies hilft Dir weiter.

Viel Spass beim weiteren programmieren des Wherigos
Team Eifelyeti
 
OP
A

Akrisios

Geonewbie
Hallo nochmal und danke für die Tipps bisher.

Ich habe jetzt doch ein Item erstellt, das sich beim Nutzer befindet und ein Command hat, das in der entsprechenden Zone das passende Input aufruft. Der Einfachheit halber habe ich das erstmal für zwei Zonen probiert, wie hier zu sehen:
frage.jpg
Dummerweise wird nie ein Input aufgerufen, ich krieg nur die Else-Message (die kommt da dann noch weg). Es ergibt sich für die insideZone-Abfrage also nie der Wert true - Wie frage ich denn sonst ab, wo der Nutzer gerade ist?
 
Oben