包 | flash.text |
类 | public dynamic class StyleSheet |
继承 | StyleSheet EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
要对一个 TextField 对象应用样式,请将该 StyleSheet 对象赋给 TextField 对象的 styleSheet
属性。
注意:具有样式表的文本字段不可编辑。也就是说,type
属性设置为 TextFieldType.INPUT
的文本字段会对文本字段的默认文本应用样式表,但用户不再能编辑该内容。考虑使用 TextFormat 类将样式分配给输入文本字段。
Flash Player 支持原 CSS1 规范 (www.w3.org/TR/REC-CSS1) 中的部分属性。下表显示受支持的层叠样式表 (CSS) 属性和值,及其相应的 ActionScript 属性名称。(每个 ActionScript 属性名称都是从对应的 CSS 属性名称派生的;如果名称中包含连字符,请省略连字符并将连字符后的字符变成大写。)
CSS 属性 | ActionScript 属性 | 用法和支持的值 |
---|---|---|
color
|
color
| 只支持十六进制颜色值。不支持具有指定名称的颜色(例如 blue )。颜色以下面的格式写入:#FF0000 。 |
display
|
display
| 受支持的值为 inline 、block 和 none 。 |
font-family
|
fontFamily
| 用逗号分隔的供使用字体的列表,根据需要按降序排列。可以使用任何字体系列名称。如果您指定通用字体名称,它将转换为相应的设备字体。支持以下字体转换:mono 转换为 _typewriter ,sans-serif 转换为 _sans ,serif 转换为 _serif 。 |
font-size
|
fontSize
| 只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 |
font-style
|
fontStyle
| 可识别的值为 normal 和 italic 。 |
font-weight
|
fontWeight
| 可识别的值为 normal 和 bold 。 |
kerning
|
kerning
| 可识别的值为 true 和 false 。仅嵌入字体支持字距调整。某些字体(如 Courier New)不支持字距调整。只有 Windows 中创建的 SWF 文件支持 kerning 属性,而 Macintosh 中创建的 SWF 文件不支持该属性。但是,这些 SWF 文件可以在 Flash Player 的非 Windows 版本中播放,并且仍可以应用字距调整。 |
leading
|
leading
| 两行之间统一分布的距离。该值指定在每行之后添加的像素数。负值将压缩两行之间的距离。只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 |
letter-spacing
|
letterSpacing
| 两个字符之间统一分布的距离。该值指定在每个字符之后添加的像素数。负值将压缩两个字符之间的距离。只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 |
margin-left
|
marginLeft
| 只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 |
margin-right
|
marginRight
| 只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 |
text-align
|
textAlign
| 可识别的值为 left 、center 、right 和 justify 。 |
text-decoration
|
textDecoration
| 可识别的值为 none 和 underline 。 |
text-indent
|
textIndent
| 只使用该值的数字部分。不分析单位(px、pt);像素和点是等价的。 |
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
styleNames : Array [只读]
一个数组,其中包含此样式表中注册的所有样式的名称(字符串形式)。 | StyleSheet |
方法 | 由以下参数定义 | ||
---|---|---|---|
创建新的 StyleSheet 对象。 | StyleSheet | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
从样式表对象中删除所有样式。 | StyleSheet | ||
将事件调度到事件流中。 | EventDispatcher | ||
返回与名为 styleName 的样式相关联的样式对象的一个副本。 | StyleSheet | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
分析 CSSText 中的 CSS 并用它加载样式表。 | StyleSheet | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
将具有指定名称的新样式添加到样式表对象中。 | StyleSheet | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
扩展 CSS 分析功能。 | StyleSheet | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
styleNames | 属性 |
StyleSheet | () | 构造函数 |
public function StyleSheet()
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
创建新的 StyleSheet 对象。
相关 API 元素
clear | () | 方法 |
public function clear():void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
从样式表对象中删除所有样式。
getStyle | () | 方法 |
public function getStyle(styleName:String):Object
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
返回与名为 styleName
的样式相关联的样式对象的一个副本。如果没有与 styleName
相关联的样式对象,则返回 null
。
参数
styleName:String — 一个字符串,该字符串指定要检索的样式的名称。
|
Object — 一个对象。
|
相关 API 元素
示例
如何使用本示例
有关如何使用
getStyle()
方法的说明,请参阅 parseCSS() 或 transform() 方法的示例。
parseCSS | () | 方法 |
public function parseCSS(CSSText:String):void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
分析 CSSText
中的 CSS 并用它加载样式表。如果 CSSText
中的某个样式在 styleSheet
中已经存在,则保留 styleSheet
中的属性,在 styleSheet
中只添加或更改 CSSText
中的属性。
要扩展本机 CSS 分析功能,可通过创建 StyleSheet 类的子类来覆盖此方法。
参数
CSSText:String — 要分析的 CSS 文本(字符串)。
|
示例 ( 如何使用本示例 )
在构造函数中,创建了一个多行文本字段,并将其内容设置为 HTML 格式的字符串。(在应用 CSS 样式之前不会呈现 HTML heading 和 span 标签。)将创建一个用于指定 CSS 文件位置的 URLRequest
对象,就本示例而言,该 CSS 文件与 SWF 文件位于同一个目录中。该文件是使用 URLLoader
对象加载的。共为 loader
URLLoader 对象添加了两个事件侦听器。如果发生 IO 错误,则会调用 errorHandler()
方法,它在文本字段中显示一条错误消息。在接收所有数据并将其放在 loader
URLLoader 对象的 data 属性中后,将调用 loaderCompleteHandler()
方法。此方法分析从文件加载的数据中的 CSS 样式,并使用样式定义填充 sheet
StyleSheet 对象。
当用户单击文本字段时,将调用 clickHandler()
方法。clickHandler()
方法中的 if 语句检查以确保在将样式表应用于文本字段之前完成文件加载。为了使样式表生效,在将样式表分配给文本字段后,必须为内容重新分配 htmlText
属性。还会将 heading 标签的 CSS font-family
和 color
属性值附加到文本字段内容中。(如果样式表值无效,则这些属性的值为“undefined”。)
下面是一个可用于此示例的 CSS 文件内容的示例。在运行此示例之前,请先创建一个文本文件,将下面的 CSS 内容复制到该文件中,然后使用文件名 test.css
保存该文件,并将其放在与 SWF 文件相同的目录中。
p { font-family: Times New Roman, Times, _serif; font-size: 14; font-Style: italic; margin-left: 10; } h1 { font-family: Arial, Helvetica, _sans; font-size: 20; font-weight: bold; } .bluetext { color: #0000CC; }
package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.IOErrorEvent; import flash.events.Event; import flash.events.MouseEvent; public class StyleSheet_parseCSSExample extends Sprite { private var loader:URLLoader = new URLLoader(); private var field:TextField = new TextField(); private var exampleText:String = "<h1>This is a headline</h1>" + "<p>This is a line of text. <span class='bluetext'>" + "This line of text is colored blue.</span></p>"; private var sheet:StyleSheet = new StyleSheet(); private var cssReady:Boolean = false; public function StyleSheet_parseCSSExample() { field.x = 10; field.y = 10; field.background = true; field.multiline = true; field.autoSize = TextFieldAutoSize.LEFT; field.htmlText = exampleText; field.addEventListener(MouseEvent.CLICK, clickHandler); addChild(field); var req:URLRequest = new URLRequest("test.css"); loader.load(req); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); } public function errorHandler(e:IOErrorEvent):void { field.htmlText = "Couldn't load the style sheet file."; } public function loaderCompleteHandler(event:Event):void { sheet.parseCSS(loader.data); cssReady = true; } public function clickHandler(e:MouseEvent):void { if (cssReady) { field.styleSheet = sheet; field.htmlText = exampleText; var style:Object = sheet.getStyle("h1"); field.htmlText += "<p>Headline font-family is: " + style.fontFamily + "</p>"; field.htmlText += "<p>Headline color is: " + style.color + "</p>"; } else { field.htmlText = "Couldn't apply the CSS styles."; } } } }
setStyle | () | 方法 |
public function setStyle(styleName:String, styleObject:Object):void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
将具有指定名称的新样式添加到样式表对象中。如果该样式表中没有指定名称的样式,将添加该样式。如果该样式表中已经有指定名称的样式,将替换该样式。如果 styleObject
参数为 null
,则删除指定名称的样式。
Flash Player 将创建传递给此方法的样式对象的一个副本。
要获取所支持样式的列表,请参阅 StyleSheet 类说明中的表。
参数
styleName:String — 一个字符串,用于指定要添加到样式表中的样式的名称。
| |
styleObject:Object — 一个说明样式的对象,或 null 。
|
transform | () | 方法 |
public function transform(formatObject:Object):flash.text:TextFormat
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
扩展 CSS 分析功能。高级开发人员可通过扩展 StyleSheet 类覆盖此方法。
参数
formatObject:Object — 一个说明样式的对象(包含作为对象属性的样式规则),或 null 。
|
flash.text:TextFormat — 一个包含 CSS 规则向文本格式属性映射的结果的 TextFormat 对象。
|
相关 API 元素
示例 ( 如何使用本示例 )
transform()
方法将 CSS 文件中的某个样式应用于文本字段的 TextFormat 对象。
CSS 样式通常用于设置 HTML 内容的格式。但是,通过使用 StyleSheet 对象的 transform()
方法,可以将特定 CSS 样式分配给 TextFormat 对象,然后将其应用于任何文本字段。
我们使用 URLRequest
和 URLLoader
对象来加载 CSS 文件; 为 Event.COMPLETE
事件添加一个事件侦听器,在接收所有数据并将其放在 loader
URLLoader 对象的 data 属性中后,将会发生该事件。然后,loaderCompleteHandler()
方法分析从文件加载的数据中的 CSS,并使用这些样式填充 sheet
StyleSheet 对象。样式表的 getStyle()
方法将检索 HTML 段落样式,然后使用样式表的 transform()
方法将这些样式分配给 cssFormat
TextFormat 对象。最后,将 inputField
文本字段的默认文本格式设置为新的 cssFormat
文本格式。
package { import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldType; import flash.events.IOErrorEvent; import flash.events.Event; public class StyleSheet_transformExample extends Sprite { private var loader:URLLoader = new URLLoader(); private var inputField:TextField = new TextField(); private var sheet:StyleSheet = new StyleSheet(); public function StyleSheet_transformExample() { inputField.x = 10; inputField.y = 10; inputField.background = true; inputField.width = 300; inputField.height = 200; inputField.wordWrap = true; inputField.multiline = true; inputField.type = TextFieldType.INPUT; addChild(inputField); var req:URLRequest = new URLRequest("test.css"); loader.load(req); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); } public function errorHandler(e:IOErrorEvent):void { inputField.htmlText = "Couldn't load the style sheet file."; } public function loaderCompleteHandler(event:Event):void { var cssFormat:TextFormat = new TextFormat(); sheet.parseCSS(loader.data); var style:Object = sheet.getStyle("p"); cssFormat = sheet.transform(style); inputField.defaultTextFormat = cssFormat; } } }
package { import flash.display.Sprite; import flash.text.StyleSheet; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class StyleSheetExample extends Sprite { public function StyleSheetExample() { var style:StyleSheet = new StyleSheet(); var heading:Object = new Object(); heading.fontWeight = "bold"; heading.color = "#FF0000"; var body:Object = new Object(); body.fontStyle = "italic"; style.setStyle(".heading", heading); style.setStyle("body", body); var label:TextField = new TextField(); label.styleSheet = style; label.htmlText = "<body><span class='heading'>Hello </span>World...</body>"; addChild(label); } } }
Tue Jun 12 2018, 11:04 AM Z