上一章我们了解了显示列表,还有DisplayObject等显示对象基类,但是我们不能直接用这些基类来构造显示对象, 而必须用继承自这些基类的类来构造显示对象,AS3已经定义好了一些显示类,我们可以根据我们的需要来使用它们,当然如果已有的类不够使,我们也可以自己去定义一些显示类,当然我们构造的显示类最好是继承自相应的子显示类。下面我们来了解一下AS3中的显示子类
这个类直接继承自DisplayObject,这使得这个类既不能包含子显示对象,也不利于鼠标键盘的交互。
这个类只是多了个graphics属性来获取画图的方法,如果只是想创建矢量图形,如矩形、直线、圆等,可以用这个类。
关于Graphics类,参见《ActionScript3(AS3)类库学习之(十一)——Graphics类》
这个类直接继承自DisplayObject,这使得这个类既不能包含子显示对象,也不利于鼠标键盘的交互。
这个类拥有bitmapData属性,用来显示位图,我们可以通过Loader来获取一个位图,或者是直接利用BitmapData类的方法,自己生成位图。
另外我们还可以通过smoothing属性来控制在缩放时是否对位图进行平滑处理。
关于BitmapData类,参见《ActionScript3(AS3)类库学习之(十二)——BitmapData类》
这个类直接继承自DisplayObject,这使得这个类既不能包含子显示对象,也不利于鼠标键盘的交互。
这个类可以用attachCamera()从用户摄像头捕获输入,也可以通过attachNetStream()动态加载视频文件并在 Video 对象中显示视频。
我们可以用videoWidth和videoHeight属性获取视频流的宽度和高度。
我们还可以通过smoothing属性来控制在缩放时是否对视频进行平滑处理。
SimpleButton 类继承自 InteractiveObject 类。这个类是用来做按钮的。
1.用enabled来指定按钮是否处于启用状态。
2.SimpleButton有四个重要的状态,这四个状态可以在创建对象时就设置,或者是创建完后再设置:
upState : DisplayObject
指定用作按钮弹起状态(当指针不在按钮上方时,按钮所处的状态)的显示对象。
overState : DisplayObject
指定用作按钮经过状态(当指针在按钮上方时,按钮所处的状态)的显示对象。
downState : DisplayObject
指定用作按钮“按下”状态(当用户选择 hitTestState 对象时,按钮所处的状态)的显示对象。
hitTestState : DisplayObject
指定用作按钮的点击测试对象的显示对象。一般设置为与 overState 属性相同的显示对象。如果未设置 hitTestState 属性,则 SimpleButton 将处于非活动状态 — 不响应用户输入事件。
3.其他属性
useHandCursor : Boolean
布尔值,当设置为 true 时,表示指针滑过按钮上方时是否显示手形光标。
soundTransform : flash.media.SoundTransform
分配给此按钮的 SoundTransform 对象。
trackAsMenu : Boolean
表示属于 SimpleButton 或 MovieClip 对象的其他显示对象是否可以接收用户输入释放事件。
TextField继承自InteractiveObject,用于创建显示对象以显示和输入文本。
1.设置文本的内容
可以用text或htmlText来设置文本的内容
text
文本字段中当前文本的字符串。设置此值将获得应用了defaultTextFormat的相应的htmlText值
htmlText
文本字段内容的 HTML 表示形式。支持用img 标签包含 JPEG、GIF、PNG 和 SWF 文件。设置此值将获得只包含文本内容的相应的text值
appendText
将 newText 参数指定的字符串追加到文本字段的文本的末尾。此方法要比对 text 属性的加法赋值 (+=)更有效
replaceText(beginIndex:int, endIndex:int, newText:String)
将 beginIndex 和 endIndex 参数指定的字符范围替换为 newText 参数的内容。
2.文本的滚动显示
在许多情况下,文本可能比显示该文本的文本字段长。或者,某个输入字段允许用户输入比字段一次可显示的文本内容更多的文本。这时就需要支持文本的滚动。
mouseWheelEnabled:一个布尔值,表示当用户单击某个文本字段并滚动鼠标滚轮时,Flash Player 是否自动滚动多行文本字段。 maxScrollH:[只读] scrollH 的最大值。 maxScrollV:[只读] scrollV 的最大值。 scrollH:当前水平滚动位置。 scrollV:文本在文本字段中的垂直位置。 bottomScrollV:[只读] 一个整数(从 1 开始的索引),表示指定文本字段中当前可以看到的最后一行。 当前可以看到文本字段中 scrollV 和 bottomScrollV 表示的行之间的所有文本。
3.选择和操作文本
selectable:表示文本字段是否可选。 alwaysShowSelection:如果设置为 true,则不管文本字段有没有焦点,都将突出显示文本字段中的所选内容。否则没有焦点时,将不会突出显示文本字段中的所选内容 setSelection(beginIndex:int, endIndex:int) 将第一个字符和最后一个字符的索引值(使用 beginIndex 和 endIndex 参数指定)之间的文本设置为所选内容。 selectionBeginIndex:[只读] 当前所选内容中第一个字符从零开始的字符索引值。 selectionEndIndex:[只读] 当前所选内容中最后一个字符从零开始的字符索引值。 replaceSelectedText(value:String):使用 value 参数的内容替换当前所选内容。 caretIndex:[只读] 插入点(尖号)位置的索引。
4.控制文本输入
TextField默认是无法输入文本的,想要输入文本,需要把type设置为TextFieldType.INPUT。
displayAsPassword
指定文本字段是否以密码的形式显示,即显示为*。
restrict
用来限制用户的输入,直接通过text或htmlText进行的设置不受限制。
如果 restrict 属性的值为 null,则可以输入任何字符。如果 restrict 属性的值为空字符串,则不能输入任何字符。如果 restrict 属性的值为一串字符,则只能在文本字段中输入该字符串中的字符。可以使用连字符 (-) 指定一个范围。
如果字符串以尖号 (^) 开头,则先接受所有字符,然后从接受字符集中排除字符串中 ^ 之后的字符。如果字符串不以尖号 (^) 开头,则最初不接受任何字符,然后将字符串中的字符包括在接受字符集中。
maxChars
文本字段中最多可包含的字符数(即用户输入的字符数)。
5.控制文本的外观
antiAliasType:用于此文本字段的消除锯齿类型。
autoSize:控制文本字段的对齐。值可以为TextFieldAutoSize.NONE(默认值)、TextFieldAutoSize.LEFT、TextFieldAutoSize.RIGHT 和 TextFieldAutoSize.CENTER。
background:指定文本字段是否具有背景填充。
backgroundColor:文本字段背景的颜色。
border:指定文本字段是否具有边框。
borderColor:文本字段边框的颜色。
condenseWhite:是否删除具有 HTML 文本的文本字段中的额外空白(空格、换行符等等)。
multiline:表示字段是否为多行文本字段。
wordWrap:表示文本字段是否自动换行。
sharpness:此文本字段中字型边缘的清晰度。
textColor:文本字段中文本的颜色(采用十六进制格式)。
thickness:此文本字段中字型边缘的粗细。
6.控制文本的格式
TextField支持用styleSheet将样式表附加到文本字段来控制文本格式,还支持使用TextFormat来控制文本格式。
TextFormat的默认值如下:
align = "left" |
blockIndent = 0 整个文本块的缩进 |
bold = false |
bullet = false 表示文本为带项目符号的列表的一部分 |
color = 0x000000 |
font = "Times New Roman"(在 Mac OS X 上,默认字体为 Times) |
indent = 0 |
italic = false |
kerning = false |
leading = 0 表示行与行之间的垂直间距 |
leftMargin = 0 |
letterSpacing = 0 |
rightMargin = 0 |
size = 12 |
tabStops = [] (empty array) |
target = ""(empty string) |
underline = false |
url = ""(empty string) |
defaultTextFormat:指定应用于新插入文本(例如,用户输入的文本或使用 replaceSelectedText() 方法插入的文本)的格式。 getTextFormat(beginIndex:int = -1, endIndex:int = -1):flash.text:TextFormat 返回 TextFormat 对象,其中包含 beginIndex 和 endIndex 参数指定的文本范围的格式信息。 setTextFormat(format:flash.text:TextFormat, beginIndex:int = -1, endIndex:int = -1):void 将 format 参数指定的文本格式应用于文本字段中的指定文本。
7.获取文本信息
getCharBoundaries(charIndex:int):返回一个矩形,该矩形是字符的边框。
getCharIndexAtPoint(x:Number, y:Number):在 x 和 y 参数指定的位置返回从零开始的字符索引值。
getFirstCharInParagraph(charIndex:int):如果给定一个字符索引,则返回同一段落中第一个字符的索引。
getLineIndexAtPoint(x:Number, y:Number):在 x 和 y 参数指定的位置返回从零开始的行索引值。
getLineIndexOfChar(charIndex:int):返回 charIndex 参数指定的字符所在的行的索引值(从零开始)。
getLineLength(lineIndex:int):返回特定文本行中的字符数。
getLineOffset(lineIndex:int):返回 lineIndex 参数指定的行中第一个字符的字符索引。
getLineText(lineIndex:int):返回 lineIndex 参数指定的行的文本。
getParagraphLength(charIndex:int):int
如果给定一个字符索引,则返回包含给定字符的段落的长度。
8.其他
embedFonts:指定是否使用嵌入字体轮廓进行呈现。 gridFitType:用于此文本字段的网格固定类型。 length:[只读] 文本字段中的字符数。 numLines:[只读] 定义多行文本字段中的文本行数。 textInteractionMode:[只读] 交互模式属性,默认值为 TextInteractionMode.NORMAL。 getImageReference(id:String):返回给定 id 或已使用 <img> 标签添加到 HTML 格式文本字段中的图像或 SWF 文件的 DisplayObject 引用。 getLineMetrics(lineIndex:int):返回给定文本行的度量信息。 isFontCompatible(fontName:String, fontStyle:String):[静态] 如果具有指定的 fontName 和 fontStyle(其中的 Font.fontType 为 flash.text.FontType.EMBEDDED)的嵌入字体可用,则将返回 true。 useRichTextClipboard:指定在复制和粘贴文本时是否同时复制和粘贴其格式。 getCharBoundaries(charIndex:int):返回一个矩形,该矩形是字符的边框。 textHeight:[只读] 文本的高度,以像素为单位。 textWidth:[只读] 文本的宽度,以像素为单位。
TextLine继承自DisplayObjectContainer,下面的一些类一起,构成了Flash的文本引擎系统
TextElement/GraphicElement/GroupElement:包含 TextBlock 实例的内容
ElementFormat:指定 TextBlock 实例内容的格式设置属性
TextBlock:用于构建文本段落的工厂
TextLine:依据 TextBlock 创建的文本行
我们不能直接创建TextLine,而是通过TextBlock的createTextLine() 方法来创建TextLine。
Loader继承自DisplayObjectContainer,用于加载 SWF 文件或图像。
这个类很简单,用load加载图像,用loadBytes加载ByteArray 对象中所存储的二进制数据,用close取消加载,用unload和unloadAndStop来卸载。
通过contentLoaderInfo来访问加载信息,通过content来访问加载的内容。
需要注意的就是加载时的安全性问题。
这个类继承自DisplayObjectContainer。大多数的显示对象都可以用Sprite对象来表示。
这个类拥有graphics属性能进行画图,还支持子显示对象,与用户的交互等。
关于Graphics类,参见《ActionScript3(AS3)类库学习之(十一)——Graphics类》
MovieClip继承自Sprite,与Sprite的主要区别是MovieClip对象拥有一个时间轴。
这个类继承自DisplayObjectContainer。一个Flash应用只有一个Stage,所有的显示对象都必须包含在Stage中。
1.全屏显示
flash通过参数来实现全屏显示,如下所示:
<param name="allowFullScreen" value="true" />
<param name="allowFullScreenInteractive" value="true" />
...
<embed src="example.swf" allowFullScreen="true" ... >
allowsFullScreen:[只读] 指定此舞台是否允许使用全屏模式。
allowsFullScreenInteractive:[只读] 指定此舞台是否允许使用全屏文本输入模式
displayState:获取或设置当前的显示状态
StageDisplayState.FULL_SCREEN 设置 AIR 应用程序或 Flash Player 中的内容在用户的整个屏幕上扩展舞台。禁用键盘输入,少数几个非打印键除外。 StageDisplayState.FULL_SCREEN_INTERACTIVE 将应用程序设置成将舞台扩展到用户的整个屏幕(允许键盘输入)。(在 AIR 和 Flash Player 中可用,从 Flash Player 11.3 开始提供。) StageDisplayState.NORMAL 将舞台设置回标准舞台显示模式。
fullScreenWidth:[只读] 返回变为全屏大小时使用的显示器宽度(如果立即进入该状态)。
fullScreenHeight:[只读] 返回变为全屏大小时使用的显示器高度(如果立即进入该状态)。
fullScreenSourceRect:设置 Flash 运行时以将特定的舞台区域放大到全屏模式。必须在放大到全屏前设置。
2.大小和缩放
stageWidth:指定舞台的当前宽度(以像素为单位)。
stageHeight:舞台的当前高度(以像素为单位)。
scaleMode:指定要使用哪种缩放模式的值。
StageScaleMode.EXACT_FIT -- 整个应用程序在指定区域中可见,但不尝试保持原始高宽比。可能会发生扭曲,应用程序可能会拉伸或压缩显示。 StageScaleMode.SHOW_ALL -- 整个应用程序在指定区域中可见,且不发生扭曲,同时保持应用程序的原始高宽比。应用程序的两侧可能会显示边框。 StageScaleMode.NO_BORDER -- 整个应用程序填满指定区域,不发生扭曲,但有可能进行一些裁切,同时保持应用程序的原始高宽比。 StageScaleMode.NO_SCALE -- 整个应用程序的大小固定,因此,即使播放器窗口的大小更改,它也会保持不变。如果播放器窗口比内容小,则可能进行一些裁切。
3.其他
focus:具有键盘焦点的交互式对象;如果没有设置焦点,或者具有焦点的对象属于调用对象无权访问的安全沙箱,则为 null。 frameRate:获取并设置舞台的帧速率。帧速率的有效范围为每秒 0.01 到 1000 个帧。 quality:设置stage画质 stageFocusRect:指定对象在具有焦点时是否显示加亮的边框。 color:SWF 背景颜色。