KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: LUA screen:clear
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin ich habe da mal ne Frage und zwar wenn ich jetzt in lua ein "Hauptmenü" coden will und wen man x drückt kommt eine andere schrift kommen soll muss ja erst die alte Schrift weg. Das geht ja mit screen:clear oder? Könntet ihr mir bitte ein code beispiel geben bei dem man sieht wie man den bildschirm "reinigt"? Danke schonmalSmile
screen:clear() ist ein Standart Befehl für jedes Lua Programm (außer Malprogramm aber darum geht es ja gerade nicht).

Wenn du reinigen denkst ist das der falsche Anfang, du musst es eher durch if Schleifen verschiedene Sachen anzeigen:

Code:
modus = 0
green = Color.new(0,255,0)

while true do
pad = Controls.read()

screen:clear()

if modus == 0 then
screen:print(10,10,"Hallo",green)
elseif modus == 1 then
screen:print(10,10,"Welt",green)
end

if pad:cross() then
if modus == 0 then
modus = 1
elseif modus == 1 then
modus = 0
end
end

screen:flip()
screen.waitVblankStart()

end

Ich denk mal das müsste so funktionieren ist halt als Beispiel gedacht.

Ähmm... Ok Danke erstmal allerdings habe ich das nicht wirklich verstanden... Was bewirkt denn dieses Codebeispiel? Dass wenn man X drückt Hallo angezeigt wird? Also ich hatte da die Idee das halt beim Start des HBs Text steht und wenn man X drückt kommt halt n anderer Text (z.B. Erster Text: Hallo und Willkommen zweiter Text: In meinem HB) Aber wenn jetzt halt der zweite Text erscheint steht noch immer der erste da und ich wollte nur fragen wie ich den ersten Text weg bekomme während der zweite angezeigt wird... Oder bewirkt das das Codebeispiel?
Das Programm erzeugt das am Anfang "Hallo" ausgegeben wird und wenn du X drückst dann "Welt" usw.
screen:clear() löscht immer den ganzen Bildschirm.
Der Codblock:

Code:
if modus == 0 then
screen:print(10,10,"Hallo",green)
elseif modus == 1 then
screen:print(10,10,"Welt",green)
end

Bewirkt, dass entweder "Hallo" oder "Welt" angezeigt wird.

Und der Codeblock:

Code:
if pad:cross()
if modus == 0 then
modus = 1
elseif modus == 1 then
modus = 0
end
end

bewirkt, dass immer zwischen den 2 Modis umgeschaltet wird.

Achso ok das habe ich jetzt verstanden und wenn ich will dass er immer wenn ich X oder O drücke umschaltet? Muss das dann heißen:
if modus == 0 then
screen:print(10,10,"Hallo",green)
elseif modus == 1 then
screen:print(10,10,"Welt",green)
end

if pad:cross() then
modus = 0
end

if pad:circle() then
modus = 1
end


Oder ist das Falsch?
Müsste stimmen .
Ok Danke an alle!Smile
Ja müsste auch so funktionieren.

In Zukunft kannst du dir den Danke Post sparen und dafür den Danke Button drücken Wink
und wie mache ich das der bildschirm komplett schwarz wird? Weil bisher wird Hallo genau über Welt geschrieben. Wie macht man das immer nur eins von beiden da steht?
Theoretisch müsste es gehen das Problem liegt nur an an der Tasten Abfrage.

Man kann es natürlich auch so Machen:

Code:
modus = 0
green = Color.new(0,255,0)

oldpad = Controls.read()

while true do
pad = Controls.read()

screen:clear()

if modus == 0 then
screen:print(230,125,"Mein Homebrew",green)
elseif modus == 1 then
screen:print(10,10,"Hallo Welt",green)
end

if pad:cross() and not oldpad:cross() then
if modus == 0 then
modus = 1
elseif modus == 1 then
modus = 0
end
end

oldpad = pad

screen:flip()
screen.waitVblankStart()

end

Referenz-URLs