smiley's im dynamisches textfeld

Mad-Line

Mitglied
Hallo
ich hab mir ein kleines cms gebastelt aus verschiedenen scripten was per php xml Daten aus einer Datenbank läd und Schreibt soweit bin ich zufrieden das funktioniert ganz gut.
Nun möchte ich das Dynamische Textfeld mit smiley's erweitern.
Was ich brauch ist ein script der mir die zeichen umwandelt und durch ein smiley ersetzt.
Ich hab von http://flashcomponents.net/ das Jolan SmileyTextField gefunden aber ich steig durch den code nicht durch.

Hier mal mein cms zur ansicht und zum probieren Link

einer eine idee oder tipp zur simplen lösung?
 
Hi und willkommen im Forum,

das Umwandeln der Codes in Smiley-Grafiken ist kein Problem:
Code:
function umwandeln(str:String):String {
    var codes:Array = new Array(':)', ':(');
    var smileys:Array = new Array('smile', 'cry');
    for (var i=0; i<codes.length; i++) {
        str = str.split(codes[i]).join('<img src="' + smileys[i] + '">');
    }
    return str;
}
Schwieriger wirds beim Textfeld ansich, da Flash bei jeder eingefügten Grafik einen Zeilenumbruch vor dem Bild vornimmt. Smileys im Textfluss sind damit nicht möglich.

Die von Dir gefundene Komponente legt die Smileys als MovieClips über das eigentliche Textfeld, was insofern knifflig ist, als dass die exakte Position und Größe der Grafiken in Relation zum Text berechnet werden müssen. Dazu müssen quasi andauernd im Hintergrund Referenztextfelder mit Teilhinhalten des Haupttextfeldes angelegt werden.

Das Problem hier: Der nötige Code ist so komplex, dass ich in der Zeit, die ich benötigen würde, den vorliegenden Code zu untersuchen, eher eine eigene Variante entwickelt hätte - was immer noch eine Aufgabe bleibt, die ich mir lieber für ein paar kalte Winterabende aufspare, als mir hier mal eben im Zuge der Beantwortung einer Frage vorzunehmen. ;)

Gruß
.
 
muha
hab esay lösung gefunden ka wieso da noch keiner drauf gekommen ist. :suspekt:

es werden zwar keine umgewandelt aber ich kann sie einfügen und sind animiert. Werde die funktion jetzt einbauen.

Vielen Vielen Dank für deine Antwort.

edit: mal sehen vieleicht bekomm ich das mit deinem script auch mit dem umwandeln hin werde mal bissel fummeln.
 
Zuletzt bearbeitet:
ja klar

ich packe die animierten gif's in eine swf und lade sie als normales image ein
<img border="0" src="......./news/bla/motz.swf" >

dann bastel ich ein fenster wo ich dann die smiley's per knopdrück verlinken kann.

jetzt is bloss das problem was du schon angesprochen hast das er das smiley nicht in die zeile haut.

zu sehen hier Link

meinst du es gibt da eine elegantere lösung die kein Flash studium benötigt? :)
 
Zuletzt bearbeitet:
Hi,

ich bin davon ausgegangen, Du hättest eine simple Lösung für das Zeilenumbruch-Problem gefunden - nichts für ungut. :)

Du brauchst im Übrigen keine externen Dateien für die Smileys verwenden - mein Beispiel arbeitest z.B. mit Verknüpfungsbezeichnern zu MovieClips in der Bibliothek (smiley1, smiley1).

Gruß
.
 
Hi,

ich bin davon ausgegangen, Du hättest eine simple Lösung für das Zeilenumbruch-Problem gefunden - nichts für ungut. :)

.

ich freue mich halt schon über kleine Erfolgserlebnisse :)

Das mit den Externen Smailys ist für mich einfacher weil ich mich da bissel schwer tuhe dein script mit dem textfield zu kombinieren.

das ganze ist mir eigentlich bissel viel aber es soll ja für ein guten zweg sein. Vieleicht mag mir ja noch mal einer Helfen.

der ganze kram wird ja per xml eingeladen das heisst wohl der teil ist dafür zuständig denke ich.


Code:
function showEntries(pSuccess:Boolean):Void {
	
	if (false == pSuccess) {
		entries_txt.htmlText = "A loading error has occurred.";
		return;
	}
	
	entries_txt.htmlText = "Connecting to XML ...";
	
	entries_txt.htmlText = "";
	entries_txt.styleSheet = css;
	
	var fc:String = "firstChild";
	var cn:String = "childNodes";
	// the 'control'-node:
	highestDepth = Number(this[fc][fc].attributes.num_pages);
	approval_required = Number(this[fc][fc].attributes.approval_required) == 1 ? true : false;
	
	showPageLinks(highestDepth);
	// i = 1 is because the first childNode is <control>
	for (var i:Number = 1; i < this[fc][cn].length; i++) {
		var id:String		= this[fc][cn][i].attributes.id;
		var poster:String 	= this[fc][cn][i].attributes.poster;
		var date:String 	= this[fc][cn][i].attributes.date;
		var msg:String 		= su.trim(this[fc][cn][i][fc].nodeValue);
		
		entries_txt.htmlText += "<p>"
								+ "<font size=\"12\" color=\"" + su.htmlCol(HILITE_COL) + "\">"
								+ poster + "</font>" + " "
								+ "(" + date + ")" + "<br />"
								+ msg + "<br />"
								+ "<font color=\"" + su.htmlCol(NORMAL_BORDER_COL) + "\">" + su.str_repeat("-", 70) + "</font>"
								+ "</p>";


								
function umwandeln(str:String):String {
    var codes:Array = new Array(':)', ':(');
    var smileys:Array = new Array('smile', 'cry');
    for (var i=0; i<codes.length; i++) {
        str = str.split(codes[i]).join('<img src="' + smileys[i] + '">');
    }
    return str;
}
	}

hab das einfach mal da unter kopiert aber das script weiss jetzt sicherlich nicht wo er was umwandeln soll bzw rein schreiben soll.

bin damit glaube ich überfordert... :rolleyes:
 
Hi,

Code:
var msg:String 		= umwandeln(su.trim(this[fc][cn][i][fc].nodeValue));
(Vorausgesetzt, die Methode "su.trim" liefert einen String zurück, wovon ich ausgehe)

Setze die Funktion "umwandeln" aber auf jeden Fall ausserhalb der Funktion "showEntries" (sprich: ausserhalb aller anderen Funktionen).

Gruß
.
 
Super Tobias das klappt soweit.

ich habe an dem image jetzt 4 zeilen umbrüche

Code:
 str = str.split(codes[i]).join('<img src="' + smileys[i] + '"><br /><br /><br /><br />');

kann ich irgendwie verhindern das die umbrüche bei mehren smiles hintereinander nicht addiert werden?

die umbrüche hab ich hinzu gefungt damit man sehen kann zu welchen satz datt smile überhaupt gehört und der text sich nicht immer drum her rum legt.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück