News Layout-programmet börjar med att läsa artikeltexten från en lokal XML-fil. Sedan läser det en extern CSS-fil som innehåller formateringsinformation för rubriken, underrubriken och brödtexten.
I CSS-filen definieras tre stilar, ett vanligt styckeformat för artikeln samt stilarna h1 och h2 för rubriken respektive underrubriken.
p {
font-family: Georgia, "Times New Roman", Times, _serif;
font-size: 12;
leading: 2;
text-align: justify;
indent: 24;
}
h1 {
font-family: Verdana, Arial, Helvetica, _sans;
font-size: 20;
font-weight: bold;
color: #000099;
text-align: left;
}
h2 {
font-family: Verdana, Arial, Helvetica, _sans;
font-size: 16;
font-weight: normal;
text-align: left;
}
Tekniken som används för att läsa den externa CSS-filen är densamma som tekniken som beskrivs i
Läsa in en extern CSS-fil
. Programmet kör metoden
onCSSFileLoaded()
när CSS-filen har lästs in, så som visas nedan.
public function onCSSFileLoaded(event:Event):void
{
this.sheet = new StyleSheet();
this.sheet.parseCSS(loader.data);
h1Format = getTextStyle("h1", this.sheet);
if (h1Format == null)
{
h1Format = getDefaultHeadFormat();
}
h2Format = getTextStyle("h2", this.sheet);
if (h2Format == null)
{
h2Format = getDefaultHeadFormat();
h2Format.size = 16;
}
pFormat = getTextStyle("p", this.sheet);
if (pFormat == null)
{
pFormat = getDefaultTextFormat();
pFormat.size = 12;
}
displayText();
}
Metoden
onCSSFileLoaded()
skapar ett StyleSheet-objekt och tolkar data från CSS-filen. Brödtexten i artikeln visas i ett MultiColumnTextField-objekt som kan använda ett StyleSheet-objekt direkt. Rubrikfälten använder klassen HeadlineTextField som använder ett TextFormat-objekt för formateringen.
Metoden
onCSSFileLoaded()
anropar metoden
getTextStyle()
två gånger för att konvertera en CSS-formatdeklaration till ett TextFormat-objekt som kan användas för de två HeadlineTextField-objekten.
public function getTextStyle(styleName:String, ss:StyleSheet):TextFormat
{
var format:TextFormat = null;
var style:Object = ss.getStyle(styleName);
if (style != null)
{
var colorStr:String = style.color;
if (colorStr != null && colorStr.indexOf("#") == 0)
{
style.color = colorStr.substr(1);
}
format = new TextFormat(style.fontFamily,
style.fontSize,
style.color,
(style.fontWeight == "bold"),
(style.fontStyle == "italic"),
(style.textDecoration == "underline"),
style.url,
style.target,
style.textAlign,
style.marginLeft,
style.marginRight,
style.indent,
style.leading);
if (style.hasOwnProperty("letterSpacing"))
{
format.letterSpacing = style.letterSpacing;
}
}
return format;
}
Egenskapsnamnen och egenskapsvärdenas betydelse skiljer sig mellan CSS-formatdeklarationer och TextFormat-objekt. Metoden
getTextStyle()
översätter CSS-egenskapsvärden till värden som förväntas av TextFormat-objektet.