我正在添加带有html文字的TextField。我正在申请StyleSheet。
如何在我的html元素上应用多个类
<span class='classOne classTwo'>my text </span>
我试过这个看起来像flash无法处理这个,它渲染没有任何样式的文本。
答案 0 :(得分:2)
StyleSheets可以包含带空格的名称,因此,例如“classOne classTwo”是一个有效的标识符 - 您只需将引用的样式组合到组合名称下的新样式中,您的文本就会正确显示。
您可以通过扩展TextField类并手动将class
的{{1}}属性中的所有引用样式组合到一个新的StyleSheet中来实现,然后将其传递给htmlText
原来的一个:
super.styleSheet
答案 1 :(得分:1)
这最终会崩溃,但如果你只是想要结合几种风格,你可以做这样的事情,而不必像上面建议的那样使用FTE或TLF:
嵌套&lt; span&gt;第一个样式在另一个&lt; span&gt;内有第二种风格。内部范围的样式属性将覆盖外部范围上的样式属性,就像CSS继承一样。
package
{
import flash.display.Sprite;
import flash.text.StyleSheet;
import flash.text.TextField;
public class CSSTEst extends Sprite
{
public function CSSTEst()
{
var style:StyleSheet = new StyleSheet();
var redStyle:Object = {};
redStyle.color = "#FF0000";
style.setStyle(".darkRed", redStyle);
var bigStyle:Object = {};
bigStyle.fontWeight = "bold";
bigStyle.fontSize = 36;
style.setStyle(".big", bigStyle);
var greenStyle:Object = {};
greenStyle.color = "#00FF00";
style.setStyle(".green", greenStyle);
var tf:TextField = new TextField();
tf.styleSheet = style;
tf.htmlText = "<span class='darkRed'><span class='big'>Red</span></span> apple, Granny's <span class='big'>big <span class='green'>green</span> apple</span>";
tf.width = tf.textWidth + 10;
addChild(tf);
}
}
}
答案 2 :(得分:0)
这可能是由于Flash解释HTML的方式与大多数主要供应商浏览器解释HTML的方式不同。我的猜测是更细粒度的控制,你可以使用这个例子http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS2AEF3551-BB6C-4e20-8865-83CD7E685263.html并构建一些东西,允许你加载flash文本引擎中使用的样式的多个类。
只有想到的其他事情是在普通的flash组件之外使用某种html包装器来显示将解释class属性的html。