Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-06-2004, 12:31   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Dyn. Textfeld, Absatz wird zu 2 Zeilensprüngen

Hi zusammen,

ich lade aus MySQL via PHP mit einem loadVars Objekt dynamische Inhalte in ein Textfeld.

Das Textfeld selbst befindet sich in einem Movieclip in der Library, hat Univers als eingebettetes Typeface, Linespacing von 4 pt, ist weder HTML-fähig, auswählbar oder eingerahmt. Als Typ ist Multiline definiert.

Da meine Textlänge variiert, habe ich in dem folgenden Script textfeld.autosize=true; definiert.

PHP-Code:
//Actionscript 1.0

var ContComp=_root.elements.level5.attachMovie('content''content'1);ContComp.txt_field.text=this.txt;
ContComp.txt_field.autoSize=true
Funktioniert auch alles wunderbar.

Nur wenn ich im CMS einen Absatz für den Text, der dort ausgelesen wird, mittels <enter> setze, wandelt Flash den in 2 Zeilensprünge um.
Automatische Zeilenumbrüche funktionieren hingegen ohne Probleme.

Ich habe schon versucht, das ganze mit Standardlinespacing, Systemschriftart (nicht eingebettet), mit Multiline-No Wrap, ohne autosize=true; usw.…

Es funktioniert einfach nicht.

Eventuell liegt es ja daran, wie die Daten nach Flash geschickt werden oder wie der Text im CMS definiert ist?

Hier der Head der Eingabemaske des CMS…

PHP-Code:
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"

Die Werte aus der DB konvertiere ich nach UTF-8 und ersetze die kleinen Umlaute in einer Klasse in große Umlaute, da manche Server eine PHP.ini wegen der locale Settings im strtoupper() keine Umlaute mit einbeziehen.

Hier die Datei. Verantwortlich für den Inhalt ist die Variable &text=

PHP-Code:
<?php
require_once('cms/config.inc.php');
require_once(
'cms/function.inc.php');
$i=0;
$read=mysql_query("select id,root_id,date,name,image,image_max,text from $db_tab where root_id='$_POST[root_id]' order by id desc",$handler);
while(
$a=mysql_fetch_array($read))
    {
    
$result.='&id_'.$i.'='.$a['id'];
    
$result.='&root_id_'.$i.'='.$a['root_id'];
    
$result.='&date_'.$i.'='.$a['date'];
    
$result.='&name_'.$i.'='.workaround::replace(utf8_encode(strtoupper($a['name'])));
    if(!empty(
$a['image']))
        {
        
$result.='&image_'.$i.'='.$file_source.$a['image'];
        }
    else
        {
        
$result.='&image_'.$i.'=';
        }
    if(!empty(
$a['image_max']))
        {
        
$result.='&image_max_'.$i.'='.$file_source.$a['image_max'];
        }
    else
        {
        
$result.='&image_max_'.$i.'=';
        }
    
$result.='&text_'.$i.'='.workaround::replace(utf8_encode(strtoupper($a['text'])));
    
$i++;
    }
$result.='&repeats='.$i;
echo 
$result;
?>
Weiß jemand von euch woran das liegen könnte? Eventuell im CMS für die Eingabemasken & co im head das Charset als UTF-8 definieren? Eigentlich nicht, oder?

Ich hab auch noch ein paar Bilder zur Erklärung/Veranschaulichung:






Liebe Grüße

Yves

Geändert von 409coffeemaker (26-06-2004 um 12:32 Uhr)
  Mit Zitat antworten
Alt 26-06-2004, 17:10   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
da hast du viel geschrieben ;-)))) was ich eigentlich nachgesehen hätte ist aber nicht dabei. wenn der computer 2 returns darstellt, dann sind auch 2 returns da.

sieh bitte mal den text nach, der in das textfeld geschrieben wird. wieviele "\r" und "\n" und "<br>" und <p> gibt es denn?
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-06-2004 um 17:12 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-06-2004, 17:17   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

es sind eben nicht 2 returns da… Schau mal hier…

http://www.flashhilfe.de/flash/movie...=117&link=code

Ich weiß nur noch nicht, wie ich den eingegeben Zeilenumbruch als Zeichen darstellen soll, um ihn dann in einer Funktion wie dieser durch den Hexcode %D0 zu ersetzen…

PHP-Code:
function replace($x)
        {
        
$k1=array('ä','ö','ü',' ','&');
        
$k2=array('Ä','Ö','Ü','%20','%26','%0D');
        for (
$i='0';$i<'6';$i++)
            {
            
$x=str_replace($k1[$i],$k2[$i],$x);
            }
        return 
$x;
        } 
Liebe Grüße

Yves
  Mit Zitat antworten
Alt 26-06-2004, 17:35   #4 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
hallo,
hgseib wollte Deine Gedanken schon in die richtige Richtung lenken und Du bist nich drauf eingegangen...
Nirgendwo taucht bisher der Text auf, der geladen wird und in dem liegt schon die Ursache, viele Editoren fügen bei einem Zeilenumbruch die Steuerzeichen '/r/n' ein und in flash ist sowohl '/r' (steht für return) als auch '/n'(steht für newline) ein Zeilenumbruch mach mal im loadVars-Objekt folgendes:
ActionScript:
  1. deinLoadVars_object.onLoad=function(){
  2. ....
  3. this.text=this.text.split("/r/n").join("/r");
  4. ...
  5. }
Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 26-06-2004, 19:03   #5 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hallo alle zusammen,

ich wollte nicht besserwisserisch oder unbelehrbar sein… tut mir leid.

Ich habe nun euren Ratschlag befolgt, aber es funktioniert nicht.

Ich glaube, es liegt daran, das ich die Texte nicht in einem Texteditor abspeichere, sonder über ein PHP CMS in eine Datenbank einpflege und später wieder auslesen.

Woher sollten da die von euch genannten Steuerzeichen herkommen…

Ich nehme an, das PHP schon „Steuerzeichen“ dafür benutzt… aber welche?

Hier ein Snipplet, wie ich euren Ratschlag versucht habe, anzuwenden.

PHP-Code:
_root.elements.createEmptyMovieClip('level5',4);
var 
ContComp=_root.elements.level5.attachMovie('content''content'1);
ContComp.name_field.text=this.name_0;
var 
content=this.text_0.split("/r/n").join("/r"); 
ContComp.txt_only_field.text=content
Liebe Grüße

Yves
  Mit Zitat antworten
Alt 26-06-2004, 20:18   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
mach einen track-befehl in flash und lass dir den text ausgeben, der in das textfeld geschrieben wird. der ist offensichtlich faul.

und dann gibt es soch das
this.text=this.text.split("/r/r").join("/r");

falls alle returns doppelt vorkommen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-06-2004 um 20:22 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 27-06-2004, 10:59   #7 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von hgseib
PHP-Code:
this.text=this.text.split("/r/r").join("/r"); 
Hi, ihr hattet doch schon von Anfang an die richtige Idee… aber fällt euch was auf?

Es müssen Backslashes sein, anstatt Slashes. Ich hab's auch einfach per Copy&Paste übernommen und mich gewundert, warum es nicht funktioniert…


So geht's:
PHP-Code:
ContComp.txt_only_field.text=this.text_0.split('\r\n').join('\r'); 

Liebe Grüße


Yves
  Mit Zitat antworten
Alt 28-06-2004, 07:21   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
ääääh, wir wollten nur testen ob du 8 gibst ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-06-2004, 09:56   #9 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
lol, natürlich mein slash/backslash-Denkfehler immer wieder.....
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 28-06-2004, 10:32   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a

Thx anyway… die Idee war eure
  Mit Zitat antworten
Alt 29-06-2004, 22:02   #11 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Vielen Dank auch nochmal in Auftrag

http://www.flashforum.de/forum/showt...769#post971769


Hehe…
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele