uncopyable (09.12.2011)
Thema: Popup Hindergrundbild
-
08.12.2011, 20:57 #1
Popup Hindergrundbild
Hallo,
ich hab mal ne Frag zum Popup von Knuddels und zwar zum Hindergrundbild
kann ich das beliebig ändern oder muss das Bild auf dem Server (http://chat.knuddels.de/pics/) liegen?
Ich hab mir mal das zusammengestellt..
Code:public class Popup { public static void main(String[] args) { // So geht es groupChat.receive(showPopup("Test","Test","Test","pics/cloudsblue.gif")) // So nicht.. groupChat.receive(showPopup("Test","Test","Test","http://u-hacks.net/images/uhacks/header/logo.gif")); } public static String showPopup(String title, String label, String content, String pic) { StringBuilder sb = new StringBuilder(); sb.append("k\0"); sb.append(title); sb.append("õf\0\0\0 h¾¼ûãEl õcgFh¾¼ûãWl õcgFh¾¼ûãCpBNpBNl õcgFh¾¼ûãCl"); sb.append(label); sb.append("õblgQf\0\0\0 hååÿãSl õcgFh¾¼ûããCc"); sb.append(content); sb.append("õ~tpõsÂ,f\0\0\0 h¾¼ûi"); sb.append(pic); sb.append("õ\0ãSpFb OK õdpgQf\0\0\0 h¾¼ûãããã"); return sb.toString(); } }
Danke schon mal im vorraus
while( behappy() ) { code(); }
-
09.12.2011, 03:25 #2
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: Popup Hindergrundbild
Du kannst es ändern, es reicht aber nicht wenn du einfach die URL des Bildes angibst. Du musst eine Änderung vornehmen, entweder in der Popup-Klasse oder in GroupChat, oder wenn dein Client auf den KRClient basiert in Context.java (wäre das einfachste).
Wenn du weitere Einstellungen wie Hintergrundfarbe und Größe des Popups ändern willst, dann arbeitest du am besten mit Bytes. Schau dir die Klassen im Banana-Chat an, das kann man auch hier verwenden.Geändert von Flav (09.12.2011 um 04:10 Uhr)
-
The Following User Says Thank You to Flav For This Useful Post:
-
14.12.2011, 07:14 #3
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: Popup Hindergrundbild
Ich hab das Ganze für meinen neuen Emulator nochmal neu geschrieben, etwas übersichtlicher und simpler (vorerst mit nur einer Komponente, den OK-Button zum Schließen). Breite und Höhe können den Konstruktor übergeben werden, andere Einstellungen kannst du in der Methode getBytes() anpassen.
Code:/** * * @author Flav */ public class PacketWriter { private StringBuilder buffer; public PacketWriter() { buffer = new StringBuilder(); } public void write(int v) { buffer.append((char) v); } public void writeBoolean(boolean v) { write(v ? 1 : 0); } public void writeShort(int v) { write(v >> 8); write(v); } public void writeString(String v) { buffer.append(v); } public String getBuffer() { return buffer.toString(); } }
Code:/** * * @author Flav */ public class Popup { private String title, subtitle, message; private int width, height; private PacketWriter packet; public Popup(String title, String subtitle, String message, int width, int height) { this.title = title; this.subtitle = subtitle; this.message = message; this.width = width; this.height = height; } private void addSize(int size) { packet.write(size + 'A'); } private void addString(String str) { packet.writeString(str); packet.write(0xF5); } private void addForeground(int[] color) { packet.write('f'); for (int c : color) { packet.write(c); } } private void addBackground(int[] color) { packet.write('h'); for (int c : color) { packet.write(c); } } private void addFontStyle(char weight, int size) { if (weight != 'p') { packet.write(weight); } packet.write('g'); addSize(size); } private void addPanel(char layout) { packet.write('p'); packet.write(layout); } private void addPanelSize(int width, int height) { packet.write('s'); packet.writeShort(width); packet.writeShort(height); } private void addBackgroundImage(String image, int alignment) { packet.write('i'); addString(image); packet.writeShort(alignment); } public String getBuffer() { packet = new PacketWriter(); packet.writeString("k"); packet.write(0x00); addString(title); addForeground(new int[] { 0x00, 0x00, 0x00 }); addBackground(new int[] { 0xBE, 0xBC, 0xFB }); packet.write(0xE3); packet.write('N'); packet.write('l'); addString(" "); addFontStyle('p', 5); packet.write(0xE3); packet.write('W'); packet.write('l'); addString(" "); addFontStyle('p', 5); packet.write(0xE3); packet.write('E'); packet.write('l'); addString(" "); addFontStyle('p', 5); packet.write(0xE3); packet.write('C'); addPanel('B'); if (subtitle != null) { packet.write('N'); addPanel('B'); packet.write('C'); packet.write('l'); addString(subtitle); addFontStyle('b', 16); addBackground(new int[] { 0xE5, 0xE5, 0xFF }); packet.write(0xE3); packet.write('S'); packet.write('l'); addString(" "); addFontStyle('p', 5); packet.write(0xE3); packet.write(0xE3); } if (message != null) { packet.write('C'); packet.write('c'); addString(message); addPanelSize(width, height); addBackground(new int[] { 0xBE, 0xBC, 0xFB }); addBackgroundImage("pics/cloudsblue.gif", 17); packet.write(0xE3); } packet.write(0xE3); packet.write('S'); addPanel('F'); packet.write('b'); addString(" OK "); addFontStyle('p', 16); packet.write('d'); addBackground(new int[] { 0xBE, 0xBC, 0xFB }); packet.write(0xE3); packet.write(0xE3); packet.write(0xE3); return packet.getBuffer(); } }
Geändert von Flav (17.12.2011 um 06:12 Uhr)
-
The Following User Says Thank You to Flav For This Useful Post:
uncopyable (14.12.2011)
-
15.12.2011, 00:56 #4
AW: Popup Hindergrundbild
Hallo,
erstmal danke dafür
Code:groupChat.receive(new Popup("Titel", "Subtitel", "Nachricht", 400, 300).getBytes());
Fehler:
receive(java.lang.String) in n2 cannot be applied to (byte[])
Abhilfe:
Code:groupChat.receive(new String(new Popup("Titel", "Subtitel", "Nachricht", 400, 300).getBytes()));
/e gibt es beim Popup die Möglichkeit ihn in der Mitte des Bildschirms zu positionieren?Geändert von uncopyable (15.12.2011 um 22:02 Uhr)
while( behappy() ) { code(); }
-
16.12.2011, 08:31 #5
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: Popup Hindergrundbild
Stimmt, beim Client wird ja ein String erwartet. Statt aus den Bytes einen neuen String zu erzeugen kannst du PacketWriter aber auch erweitern, einfach eine Methode hinzufügen die den Buffer (hier der StringBuilder) als String zurück gibt.
Ich bin mir nicht sicher, kann aber sein, dass es da noch ein optionales Byte für gibt um die Position anzugeben.
-
The Following User Says Thank You to Flav For This Useful Post:
uncopyable (16.12.2011)
-
17.12.2011, 14:38 #6
AW: Popup Hindergrundbild
Hallo,
ich hab noch eine frage, ich würde gerne den Popup abfangen und in deiner Klasse verwenden damit ich das Design beliebig ändern kann, jedoch ohne das Popup-Packet dabei zu beschädigen.
Code:public String parseInput(String packet) { String[] tokens = packet.split("\0"); if (tokens[0].equals("k")) { if (tokens[1].contains("Who")) { // - ToDo // Popup auslesen/bearbeiten // Ich hab es schon mit Regex/Replace // versucht jedoch hab ich dabei das Packet // beschädig... groupChat.receive(new String(new Popup(ausgelesener Titel.., "ausgelesene Überschrift..", "ausgelesener Inhalt..", 460, 350).getBytes())); return null; } }
Geändert von uncopyable (17.12.2011 um 14:40 Uhr)
while( behappy() ) { code(); }
-
17.12.2011, 15:14 #7
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: Popup Hindergrundbild
Das hängt ganz davon ab wie du Titel, Subtitel und Nachricht liest, die Bytes vor und nach den Strings müssen entfernt werden.
-
The Following User Says Thank You to Flav For This Useful Post:
uncopyable (18.12.2011)
Ähnliche Themen
-
Popup Handlin KNLib
Von Sploxfreak im Forum SourcecodeAntworten: 3Letzter Beitrag: 17.06.2012, 19:19 -
[Java] Popup
Von Flav im Forum SourcecodeAntworten: 7Letzter Beitrag: 27.05.2012, 13:00 -
Schützling annehmen - Popup
Von Devon im Forum Knuddels AllgemeinAntworten: 4Letzter Beitrag: 12.12.2011, 21:51 -
Popup Jugendschutztest 1 und 2
Von AFU im Forum Knuddels AllgemeinAntworten: 0Letzter Beitrag: 11.12.2011, 13:14
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.