2013-03-10 30 views
3

首先,我知道as3不喜欢css或html,并且在这个论坛上大概有十亿个问题,但是在搜索和搜索之后,我看起来似乎无法找到像我正在经历的任何事情。请原谅我,如果这是痛苦的明显回答/已经回答了。在带有CSS的TLFTextField中的AS3 htmlText <a>和<h>标记错误

现状

  • 我在Flash CS6与时间表(我知道这是不好的,但为时已晚改变)
  • 该项目导入上的编码做了一个项目wordpress页面已被导出到一个RSS源,并作为一个xml文件导入到闪存
  • 一个TLF文本框(我可以让它与经典文本框工作,但想尝试使它与TLF的各种原因工作)是创建并通过.stylesheet =应用加载的CSS工作表,并通过设置文本。的htmlText =

的问题

有文本的渲染一些小问题。我知道Flash不支持所有的CSS标签,但即使是基本的也不是,相当的工作。确切的问题是:

  • 标题后跟一个标题(即</H1> < H2>)被合并前述标题(因此两个被格式化为< H1>),加入< P />在他们之间的标签似乎可以解决这个问题,但增加了一个换行符:/
  • 粗体和斜体标签被证明是困难的,用< strong>和<>> < b>和< i>使它们自己工作,他们混在一起(像这样)他们停止工作altogethe [R
  • 这是我的主要问题:链接始终是蓝色的,无论CSS怎么说,尽管一:悬停是正确的(解决这个问题,我可以与其他一切生活)

我想问题就出在我的代码的某个地方,所以这里的AS3:

import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.text.TextField; 
import flash.events.ProgressEvent; 
import fl.text.TLFTextField; 

var fonts:Array = Font.enumerateFonts(); 
for each (var font:Font in fonts) 
{ 
    trace(font.fontName+":"+font.fontType); 
} 

var rss_xml:XML = new XML(); 
var test_txt:TLFTextField = new TLFTextField ; 
with (test_txt) 
{ 
    antiAliasType = AntiAliasType.ADVANCED; 
    width = 940; 
    height = 600; 
    x = 0; 
    y = 0; 
    autoSize = TextFieldAutoSize.LEFT; 
    wordWrap = true; 
    embedFonts = true; 
} 
var sulsc_style:StyleSheet = new StyleSheet(); 
var css_loader:URLLoader = new URLLoader(); 

css_loader.load(new URLRequest("sulsc_style.css")); 
css_loader.addEventListener(Event.COMPLETE, onCSSComplete); 
function onCSSComplete(e:Event):void 
{ 
    sulsc_style.parseCSS(e.target.data); 
    rss_xml.ignoreWhitespace = false; 
    var rss_loader:URLLoader = new URLLoader(new URLRequest("http://news.sulsc.org/feed")); 
    rss_loader.addEventListener(Event.COMPLETE,rss_loaded); 
    l.mode = "manual"; 
    rss_loader.addEventListener(ProgressEvent.PROGRESS,rss_load); 
} 

function rss_load(e:ProgressEvent):void 
{ 
    //trace(e.bytesLoaded/(113*1024)); 
    l.setProgress(e.bytesLoaded,(113*1024)); 
} 

function rss_loaded(e:Event):void 
{ 
    removeChild(l); 
    l = null; 
    rss_xml = XML(e.target.data); 
    rss_xml.ignoreWhiteSpace = true; 
    var rss_raw:String = String(rss_xml); 
    rss_raw = rss_raw.split(":encoded").join(""); 
    rss_raw = rss_raw.split("\n").join(""); 
    rss_raw = rss_raw.split("</h1><h2>").join("</h1><p/><h2>"); 
    rss_raw = rss_raw.split("</h2><h3>").join("</h2><p/><h3>"); 
    rss_raw = rss_raw.split("</h3><h4>").join("</h3><p/><h4>"); 
    rss_raw = rss_raw.split("</h4><h5>").join("</h4><p/><h5>"); 
    rss_raw = rss_raw.split("<strong>").join("<b>"); 
    rss_raw = rss_raw.split("</strong>").join("</b>"); 
    rss_raw = rss_raw.split("<em>").join("<i>"); 
    rss_raw = rss_raw.split("</em>").join("</i>"); 
    rss_xml = XML(rss_raw); 
    test_txt.styleSheet = sulsc_style; 
    test_txt; 
    test_txt.htmlText = rss_xml.channel.item.(guid == "http://news.sulsc.org/?page_id=656").content; 
    addChild(test_txt); 
} 

下面是它的读取XML:

<h1>Heading 1</h1><p/><h2>Heading 2</h2><p/><h3>Heading 3</h3><p/><h4>Heading 4</h4><p><a title="SULSC" href="http://www.sulsc.org">Isolated link.</a></p><p>Paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In nibh risus, elementum in tempor non, <a title="SULSC" href="http://www.sulsc.org">normal link</a>. Donec consequat arcu in nulla rhoncus aliquam. Fusce eu leo nunc, eget tempus risus. Aliquam imperdiet, sem non euismod blandit, nisi sapien pharetra leo, ac facilisis velit purus nec <i><b>bold italic</b></i>. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales vulputate interdum. <del>Strikethrough</del> congue, purus ut rhoncus porttitor, erat velit iaculis libero, nec commodo leo dui eget ante. Vivamus volutpat sollicitudin vulputate.</p><blockquote><p>Block quote. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In nibh risus, elementum in tempor non, malesuada ac nisl. Donec consequat arcu in nulla rhoncus aliquam. Fusce eu leo nunc, eget tempus risus. Aliquam imperdiet, sem non euismod blandit, nisi sapien pharetra leo, ac facilisis velit purus nec tellus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales vulputate interdum. Vestibulum congue, purus ut rhoncus porttitor, erat velit iaculis libero, nec commodo leo dui eget ante. Vivamus volutpat sollicitudin vulputate.</p></blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In nibh risus, elementum in tempor non, malesuada ac nisl. Donec consequat arcu in nulla rhoncus aliquam. Fusce eu leo nunc, eget tempus risus. <i>Italic</i> imperdiet, sem non euismod blandit, nisi sapien pharetra leo, ac facilisis velit purus nec tellus. <b>BOLD</b> aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. <a href="http://sulsc.org">Link</a> sodales vulputate interdum. Vestibulum congue, <a href="http://sulsc.org"><b><i>BOLD ITALIC LINK</i></b></a> ut rhoncus porttitor, erat velit iaculis libero, nec commodo leo dui eget ante. Vivamus volutpat sollicitudin vulputate.</p><ol><li>Numbered list</li><li>Number two</li><li>Number three</li></ol> 

这里是一个的被应用的CSS:

/* 
leading is line height 
*/ 
p, ol, ul, li, body { 
    font-family: Fontin Sans Rg; 
    font-size: 12pt; 
    color: #666666; 
    text-align: justify; 
} 
h1 { 
    font-family: Nilland; 
    font-size: 30pt; 
    text-align:left; 
    color: #999999; 
} 
h2 { 
    font-family: Nilland; 
    font-size: 20pt; 
    color: #ff9900; 
    margin-left:25px; 
    letter-spacing: 1px; 
} 
h3 { 
    font-family: GeosansLight; 
    font-size: 16pt; 
    text-align:left; 
    color: #999999; 
    margin-left:50px; 
    letter-spacing: 1px; 
} 
h4, h5, h6 { 
    font-family: GeosansLight; 
    font-size: 14pt; 
    text-align:left; 
    color: #999999; 
    margin-left:75px; 
    letter-spacing: 1px; 
} 
ol, ul, li { 
    margin-left: 50px; 
} 
b-quote,blockquote { 
    font-family: Fontin Sans Rg; 
    font-style:italic; 
    color:#999999; 
    margin-left: 100px; 
    margin-right: 100px; 
} 
a, { 
    text-decoration: underline; 
    color: #666666; 
} 
a:hover { 
    color: #FF9900; 
    text-decoration: underline; 
} 

组合时,它们产生的:

如果你知道我做错了,请让我知道,但我是一个完全新手,所以外行的条款将不胜感激(:

+1

只是一个简单的说明..在你的样式表中有'a',可能不会有帮助。 – Pebbl 2013-03-10 16:10:12

回答

0

在CSS中使用a:链接设置flash中的链接样式。

插入具有特定样式(没有行高的样式)的段落标记可以有效地修复标题问题。

还没有想出大胆和斜体,但这不是一个真正的主要担心。如果有人这样做,让我知道!

这里的任何人当前工作的代码是谁的兴趣:

import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.text.TextField; 
import flash.events.ProgressEvent; 
import fl.text.TLFTextField; 

var fonts:Array = Font.enumerateFonts(); 
for each (var font:Font in fonts) 
{ 
    trace(font.fontName+":"+font.fontType); 
} 

var rss_xml:XML = new XML(); 
var test_txt:TLFTextField = new TLFTextField ; 
with (test_txt) 
{ 
    antiAliasType = AntiAliasType.ADVANCED; 
    width = 940; 
    height = 600; 
    x = 0; 
    y = 0; 
    autoSize = TextFieldAutoSize.LEFT; 
    wordWrap = true; 
    embedFonts = true; 
} 
var sulsc_style:StyleSheet = new StyleSheet(); 
var css_loader:URLLoader = new URLLoader(); 

css_loader.load(new URLRequest("sulsc_style.css")); 
css_loader.addEventListener(Event.COMPLETE, onCSSComplete); 
function onCSSComplete(e:Event):void 
{ 
    sulsc_style.parseCSS(e.target.data); 
    rss_xml.ignoreWhitespace = false; 
    var rss_loader:URLLoader = new URLLoader(new URLRequest("http://news.sulsc.org/feed")); 
    rss_loader.addEventListener(Event.COMPLETE,rss_loaded); 
    l.mode = "manual"; 
    rss_loader.addEventListener(ProgressEvent.PROGRESS,rss_load); 
} 

function rss_load(e:ProgressEvent):void 
{ 
    //trace(e.bytesLoaded/(113*1024)); 
    l.setProgress(e.bytesLoaded,(113*1024)); 
} 

function rss_loaded(e:Event):void 
{ 
    removeChild(l); 
    l = null; 
    rss_xml = XML(e.target.data); 
    rss_xml.ignoreWhiteSpace = true; 
    var rss_raw:String = String(rss_xml); 
    rss_raw = rss_raw.split(":encoded").join(""); 
    rss_raw = rss_raw.split("\n").join(""); 
    rss_raw = rss_raw.split('<p style="text-align: right;">').join('<p class="right">'); 
    rss_raw = rss_raw.split('<p style="text-align: center;">').join('<p class="centre">'); 
    rss_raw = rss_raw.split('<p style="text-align: left;">').join('<p class="left">'); 
    rss_raw = rss_raw.split('<p style="text-align: justify;">').join('<p class="just">'); 
    var heading_replace:RegExp = new RegExp("(</h[0-9]>)(<h[0-9]>)","g9"); 
    var underline_replace:RegExp = new RegExp('<span style="text-decoration: underline;">(.*?)</span>',"gi"); 
    var bold_replace:RegExp = new RegExp('<strong>(.*?)</strong>',"gi"); 
    var italic_replace:RegExp = new RegExp('<em>(.*?)</em>',"gi"); 
    rss_raw = rss_raw.replace(heading_replace,'$1<p class="space"></p>$2'); 
    rss_raw = rss_raw.replace(underline_replace,'<u>$1</u>'); 
    rss_raw = rss_raw.replace(bold_replace,'<b>$1</b>'); 
    rss_raw = rss_raw.replace(italic_replace,'<i>$1</i>'); 
    rss_xml = XML(rss_raw); 
    test_txt.styleSheet = sulsc_style; 
    test_txt.htmlText = rss_xml.channel.item.(guid == "http://news.sulsc.org/?page_id=400").content; 
    addChild(test_txt); 
} 

和CSS:

/* 
flash doesn't support: 
-bold and italic 
-strikethrough 
*/ 
p, ol, ul, li, body { 
    font-family: Fontin Sans Rg; 
    font-size: 12pt; 
    color: #666666; 
    text-align: justify; 
    padding-bottom: 12px; 
    padding-top: 6px; 
} 
h1 { 
    font-family: Nilland; 
    font-size: 30pt; 
    text-align:left; 
    color: #999999; 
} 
h2 { 
    font-family: Nilland; 
    font-size: 20pt; 
    color: #ff9900; 
    margin-left:25px; 
    letter-spacing: 1px; 
} 
h3 { 
    font-family: GeosansLight; 
    font-size: 16pt; 
    text-align:left; 
    color: #999999; 
    margin-left:50px; 
    letter-spacing: 1px; 
} 
h4, h5, h6 { 
    font-family: GeosansLight; 
    font-size: 14pt; 
    text-align:left; 
    color: #999999; 
    margin-left:75px; 
    letter-spacing: 1px; 
} 
ol, ul, li { 
    margin-left: 50px; 
    line-height:5px 
} 
b-quote,blockquote { 
    font-family: Fontin Sans Rg; 
    font-style:italic; 
    color:#999999; 
    margin-left: 100px; 
    margin-right: 100px; 
    padding-bottom: 12px; 
} 
a:link { 
    text-decoration: underline; 
    color: #666666; 
} 
a:hover { 
    color: #FF9900; 
    text-decoration: underline; 
} 
/* DO NOT DELETE THESE */ 
.space { 
    line-height:1px; 
    padding-bottom: 0px; 
    padding-top:0px; 
} 
.right { 
    text-align:right; 
} 
.centre { 
    text-align:center; 
} 
.left { 
    text-align:left; 
} 
.just { 
    text-align:justify; 
} 

这使得:

Working!

感谢您的帮助!

2

就像你说的,Flash有StyleSheets的问题。也许你应该尝试在as3中直接设置风格!总是为我工作!

var style:StyleSheet = new StyleSheet(); 

var hover:Object = new Object(); 
hover.color = "#FF9900"; 

var link:Object = new Object(); 
link.fontWeight = "bold"; 
link.textDecoration= "underline"; 
link.color = "#00FF00"; //green 

style.setStyle("a:link", link); 
style.setStyle("a:hover", hover); 

html_txt.styleSheet = style; 

那到链接问题!对于其他人,我将不得不自己测试一下,我会在我做的时候更新答案!但是你可以尝试在as3中设置所有的Style属性。

+0

ahhh谢谢你让我意识到:链接是CSS闪存正在寻找!你是对的,我应该从内部进行格式化,但是这样做的目的是让没有fla编辑器的人可以对样式进行细微的修改,因此CSS – 2013-03-10 19:06:33

0

在粗体/斜体问题上,我们发现我们需要完全分离字体/类来处理它们。因此,您需要导出每种常规,斜体和粗体字体,然后在字体标签中包装相应的部分。我们使用并执行查找/替换将fontClassName_italic添加到字体标记,然后指向css中的导出字体。真正的皮塔饼,但你去了。

相关问题