Post: # 81891Post
japanhonk
14 Nov 2014, 19:24
Klar---
Das könnte ich, aber das Ganze geht nur in Verbindung mit ( einem Close Button ), Variablen, Strings und Funktionen. Klingt umständlich, ist aber sehr flexibel einsetzbar und nicht nur auf Texte beschränkt.
Man kann damit z.B. EIN Musikstück abspielen und dann ein Weiteres. Man muss nur seine Länge kennen
und dann z.B. ein weiteres Objekt als Timer definieren , deren Zustände solange hintereinander ablaufen, wie das Musikstück lang ist. Damit ließe sich eine Playlist abspielen.
Ich gebe ein Beispiel anhand einer bzw mehrerer Textausgaben.
-Variablen : Werden von Funktionen benötigt, sagen aus, welcher Text angezeigt werden soll.
-Strings : Sagen dem Timer, welche Funktion ( Text, Sound, Eregnis usw ) aktiviert werden soll
-Funktionen : regeln die Ausgabe von Text, Sound usw anhand von Variablen ( die regeln die Reihenfolge )
Close Button : Nur für Texte, die durchgeklickt werden können bzw weggeklickt werden können.
Wenn Du eine Textfunktion hast, kann Diese anhand von Variablen berechnen , welcher Text ausgegeben werden soll.
Der Text wird ausgegeben, die Variable verändert ( +1 bei Reihenfolgen oder feste Nummern bei Sprüngen zu anderen Passagen ) dann wird der Timer aktiviert, der läuft im gewünschten Tempo ab und aktiviert dann z.B. wieder die Textfunktion. ( bzw die Funktion, die im jeweiligen String drinsteht und im Frame des Timers ausgeführt wird )
Die Textfunktion prüft jetzt wieder die Variable und gibt den dazu passenden Text aus. Falls nichts mehr folgt, wird das Timerobjekt auf 0 gesetzt, die Funktion beendet und das letzte Textfenster bleibt solange
offen, bis der Close Button geklickt wird.
EIn Closebutton prüft, ob ein Fenster nur geschlossen werden soll ( Textnum=0) , oder ob eine ( per String definierte ) Funktion ausgegeben werden soll.
Alternativ kann auch der Closebutton die Textfunktion neu aufrufen.
Beispiel :
timer_obj Zustand 1 : 30 sek Laufzeit
timer_obj Zustand 2 : 15 sek Laufzeit
Es soll ein kurzer Text per Speech ( für 15 Sek ) ausgegeben werden, danach sollen 2 weitere Texte angezeigt werden.
Der Speech Teil kann z.B. durch Klick auf ein Objekt angezeigt werden :
die entsprechende Textpassage 1 soll die Nummer Textnum=1 haben und dann automatisch nach 30 sek auf einen Text mit der Nummer 2 schalten. Danach bleibt das Fenster offen und wartet, bis es geschlossen wird.
In Kurz :
Speech Teil, 15 Sek Wartezeit, neues Fenster , 30 Sekunden Wartezeit, neues Fenster, offen, bis geklickt wird.
Klick während der Wartezeit auf den Closebutton schliesst sofort die offenen Textfester und ruft den nächsten Text auf oder schließt das Fenster, wenn Nix mehr kommt.
on (click)
{
speech (self;Das ist eine Tür;true)
setnum (textnum;1)
setstring (textstring;textausgabe)
setobj (timer_obj;2)
break()
}
im letzten Frame jedes Zustandes des Timerobjektes "timer_obj" steht : function ([textstring])
Dieser String bestimmt die Funktion, die nach der abgelaufenen Zeit ablaufen soll.
Er muss definiert und vor dem Timerstart an den Timer übergeben werden.
Da das Objekt ( timer_obj ) oben mit 15 Sekunden ( Zustand 2 ) eingeschaltet wurde, wird die Funktion Textausgabe somit nach 15 sek aktiviert.
Funktion : TEXTAUSGABE :
hidealltext()
setobj (textfenster_klein;0)
setobj (textfenster_groß;0)
setobj (close_button;1)
If_num (textnum;1)
{
setobj (textfenster_groß;1)
textout (1; soll ich die Tür untersuchen ?...)
textout (2; Ich sehe mir das mal an......)
textout (3;...)
textout (4;...)
textout (5;...)
setnum (texttimer;+1)
setobj (timer_obj;1)
break()
}
If_num (textnum;2)
{
setobj (textfenster_klein;1)
textout (1; sie ist verschlossen, Pech gehabt.... )
textout (2;gehe ich eben woanders hin)
setnum (textnum;0)
setobj (timer_obj;0)
break()
}
im Objekt Close Button steht :
on (click)
{
ifnot_num (textnum;0)
function ([textstring])
if_num (textnum;0)
{
setobj (textfenster_klein;0)
setobj (textfenster_groß;0)
hidealltext()
setobj (timer_obj;0)
setobj (close_button;0)
}
}
Wenn jetzt die Textvariablen verändert werden, kann jeder Text damit zu jeder Zeit angesprungen werden.
Das setzt voraus, dass ich weiß, wo die Texte stehen und welche Nummer sie haben.
Ich habe z.B. je eine Funktion pro Figur, die alle ihre Texte enthält.
In einem weiteren Teil der Serie habe ich nur eine große Textfunktion benutzt, dort stehen alle Dialoge
und Aussagen des Spiels drin.
Hoffe, dass Dir das nützt.
Gruß
Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de