Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-01-2012, 18:39   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 14
zwei Fragen zu XML Textfeldern in Flash

Hallo,

hab ein Textfeld in Flash das mit ner XML Datei verlinkt ist. Im XML nutze ich via [CDATA] nun HTML Tags... und verzweifle am Versuch, irgendwie Tabellen darzustellen.

Ist es denn irgendwie möglich, mittels der XML Datei ne Tabelle in nem Flash-Textfeld darzustellen?

Falls nein, wäre es denn irgendwie anders möglich, einen Text der durch XML in ein Textfeld eingebunden wird in zwei Spalten darzustellen?


Zweite Frage: wie ändere ich die Absatzlänge (nicht den Zeilenumbruch) des Textfeldes, wenn der Text von ner XML eingebunden wird? Die HTML-Tags scheinen nicht zu funktionieren...

Danke im Voraus
coffeetown ist offline   Mit Zitat antworten
Alt 07-01-2012, 18:58   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von coffeetown Beitrag anzeigen
Ist es denn irgendwie möglich, mittels der XML Datei ne Tabelle in nem Flash-Textfeld darzustellen?
Nein. Flash-Textfelder unterstützen nur eine rudimentäre Anzahl von HTML-Tags und CSS-Einstellungen). <table>, <tr> und <td> gehören nicht dazu.

Zitat:
Zitat von coffeetown Beitrag anzeigen
Falls nein, wäre es denn irgendwie anders möglich, einen Text der durch XML in ein Textfeld eingebunden wird in zwei Spalten darzustellen?
Nur mit TextLayoutFramework oder (wahrscheinlich einfacher) mit zwei ganz normalen Textfeldern

Zitat:
Zitat von coffeetown Beitrag anzeigen
Zweite Frage: wie ändere ich die Absatzlänge (nicht den Zeilenumbruch) des Textfeldes, wenn der Text von ner XML eingebunden wird? Die HTML-Tags scheinen nicht zu funktionieren...
Was meinst Du mit »Absatzlänge«? Die tatsächliche Länge eines Absatzes oder der Abstand zwischen zwei Textblöcken, der durch ein <p> entsteht (oder auch nicht)?

Letzteres lässt sich (wenn ich mich richtig erinnere) leider nicht vernünftig einstellen. Da müsstest Du zur Holzhammermethode greifen und z.B. das <p> per replace durch zwei <br> ersetzen.

Die HTML-Unterstützung von Flash ist (wie gesagt) leider sehr rudimentär...
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (07-01-2012 um 19:02 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-01-2012, 19:55   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 14
Danke für die rasche Antwort 8)

Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Was meinst Du mit »Absatzlänge«? Die tatsächliche Länge eines Absatzes oder der Abstand zwischen zwei Textblöcken, der durch ein <p> entsteht (oder auch nicht)?
Hm hab das falsch ausgedrückt.

Ich meinte den Zeilenabstand der entsteht, wenn man in der XML Datei einfach Enter drückt und eine neue Zeile anfängt Der Abstand zur vorigen Zeile wird dann in Flash leider immer viel zu groß dargestellt.

Nicht gemeint ist der Zeilenabstand der entseht, wenn man in einer Zeile durchschreibt und einfach automatisch eine neue Zeile begonnen wird.

in AS3 ist mir lediglich "leading" bekannt. Das beeinflusst jedoch nicht die durch "Enter" entstandenen Zeilenabstände der XML.
coffeetown ist offline   Mit Zitat antworten
Alt 07-01-2012, 23:21   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Normale Umbrüche sollte man IMHO in html-Textfeldern eigentlich garnicht erst verarbeiten. Stell bei Deinem Textfield einfach mal condenseWhite auf true!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 09-01-2012, 00:04   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 14
Danke, condensWhite löst das Problem, da leading damit nu auch bei allen Absätzen funktioniert

Hm noch ne Frage: ist es in XML/CSS eigentlich überhaupt möglich, z.B. ein Bild zu zentrieren, wenn das Bild via XML eingefügt wurde? Oder ginge das nur über langwierigere AS3 Umwege?


Edit: Hrm gleich noch ne Frage dazu:
kann ich denn irgendwie ne embedded/custom Font nutzen, wenn der Text via XML importiert wird?

fla Code sieht folgendermaßen aus (ist ne Flashmo Menüliste)

Code:
function create_item_desc( item_desc:String )
{
	var fm_text = new TextField();
	fm_text.condenseWhite = true;
	fm_text.embedFonts = true;
	fm_text.antiAliasType = AntiAliasType.ADVANCED;
	fm_text.multiline = true;
	fm_text.wordWrap = true;
	fm_text.x = item_padding;
	fm_text.y = item_padding;
	fm_text.width = item_width - item_padding * 2;
	fm_text.styleSheet = flashmo_style;
	fm_text.htmlText = item_desc;
	fm_text.selectable = false;
	fm_text.autoSize = TextFieldAutoSize.LEFT;
	return fm_text;
}
nu hätt ich mir gedacht, dass ich einfach nen Textformat mit meiner embedded Font hinzufüge und styleSheet entferne:


Code:
function create_item_desc( item_desc:String )
{
	var fm_text = new TextField();
	fm_text.condenseWhite = true;
	fm_text.embedFonts = true;
	fm_text.antiAliasType = AntiAliasType.ADVANCED;
	fm_text.multiline = true;
	fm_text.wordWrap = true;
	fm_text.x = item_padding;
	fm_text.y = item_padding;
	fm_text.width = item_width - item_padding * 2;
	fm_text.selectable = false;
	fm_text.autoSize = TextFieldAutoSize.LEFT;
	fm_text.htmlText = item_desc;
	fm_text.defaultTextFormat = fm_text_format;
	return fm_text;
}


var fm_text_format:TextFormat = new TextFormat();
fm_text_format.leading = 2;
fm_text_format.font = "Avant";
fm_text_format.size = 18;
fm_text_format.align = "justify";
fm_text_format.color = 0xFFFFFF;
fm_text_format.blockIndent = 1;
und das klappt leider nicht, da mir vom XML nie ein Text angezeigt wird :/ Außer der Text, der explizit in nem <font> Tag definiert wird (und der nimmt auch ned die embedded font an ).


gesamter Inhalt von diesem MC:
Code:
// Copyright © flashmo.com
// Developed by Min Thu

var flashmo_item_list = new Array();
var flashmo_item_group:MovieClip = new MovieClip();

var item_width:Number = flashmo_mask.width;
var item_height:Number = 0;
var item_spacing:Number = 15;
var item_padding:Number = 10;
var i:Number;
var total:Number;

var flashmo_xml:XML = new XML();
var flashmo_style:StyleSheet = new StyleSheet();
var css_loader:URLLoader = new URLLoader();

function push_array(e:Event):void 
{
	flashmo_xml = XML(e.target.data);
	total = flashmo_xml.item.length();
	for( i = 0; i < total; i++ )
	{
		flashmo_item_list.push( { content: flashmo_xml.item[i].content.toString() } );
	}
	load_css();
}

function load_xml(xml_file:String):void
{
	var xml_loader:URLLoader = new URLLoader();
	xml_loader.load( new URLRequest( xml_file ) );
	xml_loader.addEventListener(Event.COMPLETE, push_array);
}

function load_css():void
{
	css_loader.load( new URLRequest("stylez.css") );
	css_loader.addEventListener(Event.COMPLETE, css_complete);
}

function css_complete(e:Event):void 
{
	var css_format:TextFormat = new TextFormat();
	flashmo_style.parseCSS(css_loader.data);
	create_item_list();
}

function create_item_list():void
{
	for( i = 0; i < total; i++ )
	{
		var flashmo_item = new MovieClip();
		flashmo_item.addChild( create_item_desc( flashmo_item_list[i].content ) );
		flashmo_item.addChildAt( create_item_bg( flashmo_item.height, i ), 0 );
		flashmo_item.y = item_height;
		item_height += flashmo_item.height + item_spacing;
		flashmo_item_group.addChild( flashmo_item );
	}
	
	this.addChild( flashmo_item_group );
	flashmo_item_group.mask = flashmo_mask; 
	flashmo_sb.scrolling("flashmo_item_group", "flashmo_mask", 0.40);	// ScrollBar Added
}

function create_item_bg( h:Number, item_no:Number )
{
	var fm_rect:Shape = new Shape();
	fm_rect.graphics.beginFill(0x000000, 1);	// ITEM BACKGROUND COLOR
	fm_rect.graphics.drawRoundRect(0, 0, item_width, h + item_padding * 2, 0);
	fm_rect.graphics.endFill();
	return fm_rect;
}

function create_item_desc( item_desc:String )
{
	var fm_text = new TextField();
	fm_text.condenseWhite = true;
	fm_text.embedFonts = true;
	fm_text.antiAliasType = AntiAliasType.ADVANCED;
	fm_text.multiline = true;
	fm_text.wordWrap = true;
	fm_text.x = item_padding;
	fm_text.y = item_padding;
	fm_text.width = item_width - item_padding * 2;
	fm_text.selectable = false;
	fm_text.autoSize = TextFieldAutoSize.LEFT;
	fm_text.htmlText = item_desc;
	fm_text.defaultTextFormat = fm_text_format;
	return fm_text;
}


var fm_text_format:TextFormat = new TextFormat();
fm_text_format.leading = 2;
fm_text_format.font = "Avant";
fm_text_format.size = 18;
fm_text_format.align = "justify";
fm_text_format.color = 0xFFFFFF;
fm_text_format.blockIndent = 1;


und zuletzt noch die Test XML Datei:
Code:
<?xml version="1.0" encoding="utf-8"?>
<items>
	<item>
		<content><![CDATA[
		TEST TEST TEST TEST
		<font size="20" color="#355b7f" face="Arial"><b>TEST TEST TEST</b></font><br/>
		TEST TEST TEST TEST
		</span> ]]></content>
	</item>
</items>

Geändert von coffeetown (09-01-2012 um 01:52 Uhr)
coffeetown ist offline   Mit Zitat antworten
Alt 09-01-2012, 10:11   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Ohne die Unmengen an Code, die Du gepostet hast, jetzt im Detail durchgelesen zu haben:
  • Hast Du die Schrift »Avant« auch richtig in Deiner FLA eingebettet?
    Stimmt der Schriftname?
    Was gibt dieses Script aus?
    ActionScript:
    1. import flash.text.Font;
    2. for each(var font:Font in Font.enumerateFonts()) trace(font.fontName + " | " + font.fontType);
  • In Flash vertragen sich TextFormat und benutzerdefinierter htmlText nicht wirklich. Das liegt (wie der folgende Code zeigt) daran, dass ein TextFormat im Endeffekt nichts anderes tut als entsprechende HTML-Tags zu generieren - und wenn man die dann über schreibt...
    ActionScript:
    1. import flash.text.TextField;
    2. import flash.text.TextFormat;
    3.  
    4. var tf:TextField = new TextField();
    5. addChild(tf);
    6. tf.defaultTextFormat = new TextFormat("Arial", 32, 0x00FF00);
    7. tf.text = "Irgendein Text";
    8. trace(tf.htmlText);
    Man sollte daher entweder mit TextFormat oder mit htmlText und StyleSheets arbeiten - nicht aber mit allem zusammen. Ich würde Dir daher vorschlagen einfach ein Stylesheet für Deine Formatierung anzulegen!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 09-01-2012, 15:05   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 14
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Hast Du die Schrift »Avant« auch richtig in Deiner FLA eingebettet?
Stimmt der Schriftname?
Was gibt dieses Script aus?
ActionScript:
  1. import flash.text.Font;
  2. for each(var font:Font in Font.enumerateFonts()) trace(font.fontName + " | " + font.fontType);
Da lag der Hund begraben, sorry :/ Dachte der in Class eingetragene Fontname wäre der richtige. Mit AvantageSmall klappt es nu. Vielen Dank!!

Zitat:
Zitat von Martin Kraft Beitrag anzeigen
In Flash vertragen sich TextFormat und benutzerdefinierter htmlText nicht wirklich. Das liegt (wie der folgende Code zeigt) daran, dass ein TextFormat im Endeffekt nichts anderes tut als entsprechende HTML-Tags zu generieren - und wenn man die dann über schreibt...
ActionScript:
  1. import flash.text.TextField;
  2. import flash.text.TextFormat;
  3.  
  4. var tf:TextField = new TextField();
  5. addChild(tf);
  6. tf.defaultTextFormat = new TextFormat("Arial", 32, 0x00FF00);
  7. tf.text = "Irgendein Text";
  8. trace(tf.htmlText);
Man sollte daher entweder mit TextFormat oder mit htmlText und StyleSheets arbeiten - nicht aber mit allem zusammen. Ich würde Dir daher vorschlagen einfach ein Stylesheet für Deine Formatierung anzulegen!
Ah, danke für die ausführliche Erklärung, wieder was gelernt Und wenn ich ab nu nur noch css Stylesheet verwende, kann ich denn auch irgendwie via css Styelsheet auf Eigenschaften der AS3 TextFormat zugreifen? Oder gibt es ohnehin für jede aufgelistete Eigenschaft nen eigenes (in Flash funktionierendes) CSS tag, wie z.B. font-weight: bold in CSS das Gegenstück zu bold = true in AS3 ist? Auf sowas wie "leading" möchte ich nämlich nicht verzichten

Geändert von coffeetown (09-01-2012 um 15:07 Uhr)
coffeetown ist offline   Mit Zitat antworten
Alt 09-01-2012, 15:10   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von coffeetown Beitrag anzeigen
Und wenn ich ab nu nur noch css Stylesheet verwende, kann ich denn auch irgendwie via css Styelsheet auf Eigenschaften der AS3 TextFormat zugreifen? Oder gibt es ohnehin für jede aufgelistete Eigenschaft nen eigenes (in Flash funktionierendes) CSS tag, wie z.B. font-weight: bold in CSS das Gegenstück zu bold = true in AS3 ist? Auf sowas wie "leading" möchte ich nämlich nicht verzichten
Ja, eine solche Auflistung gibt es in der Referenz (hatte sie auch oben schonmal verlinkt) und wie Du siehst, ist sie nahezu identisch mit den Properties von TextFormat.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (09-01-2012 um 15:55 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 09-01-2012, 15:36   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 14
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Ja, eine solche Auflistung gibt es in der Referenz (hatte sie auch oben schonmal verlinkt) und wie Du siehst ist sie nahezu identisch mit den Properties von TextFormat.
arghs sorry :/

Damit wär nu alles geklärt. Tausend Dank nochma für all die Mühe & Geduld
coffeetown ist offline   Mit Zitat antworten
Alt 09-01-2012, 21:58   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 14
meh zu früh gefreut, neues Problem mit einbundenen Fonts =/

undzwar hab ich drei Myriad Pro Stile eingebunden (Regular, Bold und Condensed Bold). und dabei wird Bold und Condensed Bold immer mit dem selben Namen eingebunden, siehe Screen:



Im Tracefenster erscheint dort zwei mal Myriad Pro Cond... kann daher nur auf eines der beiden zugreifen... und möchte daher einfach nur den Bezugsnamen ändern, finde aber einfach nicht heraus, wo =/

Edit: hab's nu einfach so gelöst, weight via css auf bold zu stellen um die bold version der font verwenden zu können - gibt wohl noch ne bessere Methode, aber hauptsache es funkt

Geändert von coffeetown (09-01-2012 um 22:45 Uhr)
coffeetown ist offline   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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Einige Fragen zu Textfeldern und Buttons Onkel-Tom Flash Einsteiger 6 25-04-2008 21:09
Zwei Flash Einsteiger fragen ? TrippleEx Flash Einsteiger 3 21-01-2007 13:11
2 Fragen zu Formularen mit dynamischen Textfeldern mk.design ActionScript 1 6 08-07-2005 15:57
Abstand zwischen zwei dynamischen Textfeldern suhe Flash mit XML und Webservices 1 21-11-2002 16:55
Problem mit zwei Textfeldern Eric_Mulder ActionScript 1 1 07-04-2002 19:29


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele