UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

823 lines (712 loc) 33.4 kB
import AntiAliasType from "./AntiAliasType"; import GridFitType from "./GridFitType"; import TextFieldAutoSize from "./TextFieldAutoSize"; import TextFormat from "./TextFormat"; import TextLineMetrics from "./TextLineMetrics"; import TextFieldType from "./TextFieldType"; import InteractiveObject from "./../display/InteractiveObject"; import Rectangle from "./../geom/Rectangle"; declare namespace openfl.text { /** * The TextField class is used to create display objects for text display and * input. <ph outputclass="flexonly">You can use the TextField class to * perform low-level text rendering. However, in Flex, you typically use the * Label, Text, TextArea, and TextInput controls to process text. <ph * outputclass="flashonly">You can give a text field an instance name in the * Property inspector and use the methods and properties of the TextField * class to manipulate it with ActionScript. TextField instance names are * displayed in the Movie Explorer and in the Insert Target Path dialog box in * the Actions panel. * * To create a text field dynamically, use the `TextField()` * constructor. * * The methods of the TextField class let you set, select, and manipulate * text in a dynamic or input text field that you create during authoring or * at runtime. * * ActionScript provides several ways to format your text at runtime. The * TextFormat class lets you set character and paragraph formatting for * TextField objects. You can apply Cascading Style Sheets(CSS) styles to * text fields by using the `TextField.styleSheet` property and the * StyleSheet class. You can use CSS to style built-in HTML tags, define new * formatting tags, or apply styles. You can assign HTML formatted text, which * optionally uses CSS styles, directly to a text field. HTML text that you * assign to a text field can contain embedded media(movie clips, SWF files, * GIF files, PNG files, and JPEG files). The text wraps around the embedded * media in the same way that a web browser wraps text around media embedded * in an HTML document. * * Flash Player supports a subset of HTML tags that you can use to format * text. See the list of supported HTML tags in the description of the * `htmlText` property. * * @:event change Dispatched after a control value is * modified, unlike the * `textInput` event, which is * dispatched before the value is modified. * Unlike the W3C DOM Event Model version of * the `change` event, which * dispatches the event only after the * control loses focus, the ActionScript 3.0 * version of the `change` event * is dispatched any time the control * changes. For example, if a user types text * into a text field, a `change` * event is dispatched after every keystroke. * @:event link Dispatched when a user clicks a hyperlink * in an HTML-enabled text field, where the * URL begins with "event:". The remainder of * the URL after "event:" is placed in the * text property of the LINK event. * * **Note:** The default behavior, * adding the text to the text field, occurs * only when Flash Player generates the * event, which in this case happens when a * user attempts to input text. You cannot * put text into a text field by sending it * `textInput` events. * @:event scroll Dispatched by a TextField object * _after_ the user scrolls. * @:event textInput Flash Player dispatches the * `textInput` event when a user * enters one or more characters of text. * Various text input methods can generate * this event, including standard keyboards, * input method editors(IMEs), voice or * speech recognition systems, and even the * act of pasting plain text with no * formatting or style information. * @:event textInteractionModeChange Flash Player dispatches the * `textInteractionModeChange` * event when a user changes the interaction * mode of a text field. for example on * Android, one can toggle from NORMAL mode * to SELECTION mode using context menu * options */ export class TextField extends InteractiveObject { /** * The type of anti-aliasing used for this text field. Use * `flash.text.AntiAliasType` constants for this property. You can * control this setting only if the font is embedded(with the * `embedFonts` property set to `true`). The default * setting is `flash.text.AntiAliasType.NORMAL`. * * To set values for this property, use the following string values: */ public readonly antiAliasType:AntiAliasType; protected get_antiAliasType ():AntiAliasType; protected set_antiAliasType (value:AntiAliasType):AntiAliasType; /** * Controls automatic sizing and alignment of text fields. Acceptable values * for the `TextFieldAutoSize` constants: * `TextFieldAutoSize.NONE`(the default), * `TextFieldAutoSize.LEFT`, `TextFieldAutoSize.RIGHT`, * and `TextFieldAutoSize.CENTER`. * * If `autoSize` is set to `TextFieldAutoSize.NONE` * (the default) no resizing occurs. * * If `autoSize` is set to `TextFieldAutoSize.LEFT`, * the text is treated as left-justified text, meaning that the left margin * of the text field remains fixed and any resizing of a single line of the * text field is on the right margin. If the text includes a line break(for * example, `"\n"` or `"\r"`), the bottom is also * resized to fit the next line of text. If `wordWrap` is also set * to `true`, only the bottom of the text field is resized and the * right side remains fixed. * * If `autoSize` is set to * `TextFieldAutoSize.RIGHT`, the text is treated as * right-justified text, meaning that the right margin of the text field * remains fixed and any resizing of a single line of the text field is on * the left margin. If the text includes a line break(for example, * `"\n" or "\r")`, the bottom is also resized to fit the next * line of text. If `wordWrap` is also set to `true`, * only the bottom of the text field is resized and the left side remains * fixed. * * If `autoSize` is set to * `TextFieldAutoSize.CENTER`, the text is treated as * center-justified text, meaning that any resizing of a single line of the * text field is equally distributed to both the right and left margins. If * the text includes a line break(for example, `"\n"` or * `"\r"`), the bottom is also resized to fit the next line of * text. If `wordWrap` is also set to `true`, only the * bottom of the text field is resized and the left and right sides remain * fixed. * * @throws ArgumentError The `autoSize` specified is not a member * of flash.text.TextFieldAutoSize. */ public autoSize:TextFieldAutoSize; protected get_autoSize ():TextFieldAutoSize; protected set_autoSize (value:TextFieldAutoSize):TextFieldAutoSize; /** * Specifies whether the text field has a background fill. If * `true`, the text field has a background fill. If * `false`, the text field has no background fill. Use the * `backgroundColor` property to set the background color of a * text field. * * @default false */ public background:boolean; protected get_background ():boolean; protected set_background (value:boolean):boolean; /** * The color of the text field background. The default value is * `0xFFFFFF`(white). This property can be retrieved or set, even * if there currently is no background, but the color is visible only if the * text field has the `background` property set to * `true`. */ public backgroundColor:number; protected get_backgroundColor ():number; protected set_backgroundColor (value:number):number; /** * Specifies whether the text field has a border. If `true`, the * text field has a border. If `false`, the text field has no * border. Use the `borderColor` property to set the border color. * * @default false */ public border:boolean; protected get_border ():boolean; protected set_border (value:boolean):boolean; /** * The color of the text field border. The default value is * `0x000000`(black). This property can be retrieved or set, even * if there currently is no border, but the color is visible only if the text * field has the `border` property set to `true`. */ public borderColor:number; protected get_borderColor ():number; protected set_borderColor (value:number):number; /** * An integer(1-based index) that indicates the bottommost line that is * currently visible in the specified text field. Think of the text field as * a window onto a block of text. The `scrollV` property is the * 1-based index of the topmost visible line in the window. * * All the text between the lines indicated by `scrollV` and * `bottomScrollV` is currently visible in the text field. */ public readonly bottomScrollV:number; protected get_bottomScrollV ():number; /** * The index of the insertion point(caret) position. If no insertion point * is displayed, the value is the position the insertion point would be if * you restored focus to the field(typically where the insertion point last * was, or 0 if the field has not had focus). * * Selection span indexes are zero-based(for example, the first position * is 0, the second position is 1, and so on). */ public readonly caretIndex:number; protected get_caretIndex ():number; protected set_caretIndex (value:number):number; /** * Specifies the format applied to newly inserted text, such as text entered * by a user or text inserted with the `replaceSelectedText()` * method. * * **Note:** When selecting characters to be replaced with * `setSelection()` and `replaceSelectedText()`, the * `defaultTextFormat` will be applied only if the text has been * selected up to and including the last character. Here is an example: * * ``` * var my_txt:TextField new TextField(); * my_txt.text = "Flash Macintosh version"; var my_fmt:TextFormat = new * TextFormat(); my_fmt.color = 0xFF0000; my_txt.defaultTextFormat = my_fmt; * my_txt.setSelection(6,15); // partial text selected - defaultTextFormat * not applied my_txt.setSelection(6,23); // text selected to end - * defaultTextFormat applied my_txt.replaceSelectedText("Windows version"); * ``` * * When you access the `defaultTextFormat` property, the * returned TextFormat object has all of its properties defined. No property * is `null`. * * **Note:** You can't set this property if a style sheet is applied to * the text field. * * @throws Error This method cannot be used on a text field with a style * sheet. */ public defaultTextFormat:TextFormat; protected get_defaultTextFormat ():TextFormat; protected set_defaultTextFormat (value:TextFormat):TextFormat; /** * Specifies whether the text field is a password text field. If the value of * this property is `true`, the text field is treated as a * password text field and hides the input characters using asterisks instead * of the actual characters. If `false`, the text field is not * treated as a password text field. When password mode is enabled, the Cut * and Copy commands and their corresponding keyboard shortcuts will not * function. This security mechanism prevents an unscrupulous user from using * the shortcuts to discover a password on an unattended computer. * * @default false */ public displayAsPassword:boolean; protected get_displayAsPassword ():boolean; protected set_displayAsPassword (value:boolean):boolean; /** * Specifies whether to render by using embedded font outlines. If * `false`, Flash Player renders the text field by using device * fonts. * * If you set the `embedFonts` property to `true` * for a text field, you must specify a font for that text by using the * `font` property of a TextFormat object applied to the text * field. If the specified font is not embedded in the SWF file, the text is * not displayed. * * @default false */ public embedFonts:boolean; protected get_embedFonts ():boolean; protected set_embedFonts (value:boolean):boolean; /** * The type of grid fitting used for this text field. This property applies * only if the `flash.text.AntiAliasType` property of the text * field is set to `flash.text.AntiAliasType.ADVANCED`. * * The type of grid fitting used determines whether Flash Player forces * strong horizontal and vertical lines to fit to a pixel or subpixel grid, * or not at all. * * For the `flash.text.GridFitType` property, you can use the * following string values: * * @default pixel */ public gridFitType:GridFitType; protected get_gridFitType ():GridFitType; protected set_gridFitType (value:GridFitType):GridFitType; /** * Contains the HTML representation of the text field contents. * * Flash Player supports the following HTML tags: * * Flash Player and AIR also support explicit character codes, such as * &#38;(ASCII ampersand) and &#x20AC;(Unicode € symbol). */ public htmlText:string; protected get_htmlText ():string; protected set_htmlText (value:string):string; /** * The number of characters in a text field. A character such as tab * (`\t`) counts as one character. */ public readonly length:number; protected get_length ():number; protected set_length (value:number):number; /** * The maximum number of characters that the text field can contain, as * entered by a user. A script can insert more text than * `maxChars` allows; the `maxChars` property indicates * only how much text a user can enter. If the value of this property is * `0`, a user can enter an unlimited amount of text. * * @default 0 */ public maxChars:number; protected get_maxChars ():number; protected set_maxChars (value:number):number; /** * The maximum value of `scrollH`. */ public readonly maxScrollH:number; protected get_maxScrollH ():number; /** * The maximum value of `scrollV`. */ public readonly maxScrollV:number; protected get_maxScrollV ():number; public mouseWheelEnabled:boolean; protected get_mouseWheelEnabled ():boolean; protected set_mouseWheelEnabled (value:boolean):boolean; /** * Indicates whether field is a multiline text field. If the value is * `true`, the text field is multiline; if the value is * `false`, the text field is a single-line text field. In a field * of type `TextFieldType.INPUT`, the `multiline` value * determines whether the `Enter` key creates a new line(a value * of `false`, and the `Enter` key is ignored). If you * paste text into a `TextField` with a `multiline` * value of `false`, newlines are stripped out of the text. * * @default false */ public multiline:boolean; protected get_multiline ():boolean; protected set_multiline (value:boolean):boolean; /** * Defines the number of text lines in a multiline text field. If * `wordWrap` property is set to `true`, the number of * lines increases when text wraps. */ public readonly numLines:number; protected get_numLines ():number; /** * Indicates the set of characters that a user can enter into the text field. * If the value of the `restrict` property is `null`, * you can enter any character. If the value of the `restrict` * property is an empty string, you cannot enter any character. If the value * of the `restrict` property is a string of characters, you can * enter only characters in the string into the text field. The string is * scanned from left to right. You can specify a range by using the hyphen * (-) character. Only user interaction is restricted; a script can put any * text into the text field. <ph outputclass="flashonly">This property does * not synchronize with the Embed font options in the Property inspector. * * If the string begins with a caret(^) character, all characters are * initially accepted and succeeding characters in the string are excluded * from the set of accepted characters. If the string does not begin with a * caret(^) character, no characters are initially accepted and succeeding * characters in the string are included in the set of accepted * characters. * * The following example allows only uppercase characters, spaces, and * numbers to be entered into a text field: * `my_txt.restrict = "A-Z 0-9";` * * The following example includes all characters, but excludes lowercase * letters: * `my_txt.restrict = "^a-z";` * * You can use a backslash to enter a ^ or - verbatim. The accepted * backslash sequences are \-, \^ or \\. The backslash must be an actual * character in the string, so when specified in ActionScript, a double * backslash must be used. For example, the following code includes only the * dash(-) and caret(^): * `my_txt.restrict = "\\-\\^";` * * The ^ can be used anywhere in the string to toggle between including * characters and excluding characters. The following code includes only * uppercase letters, but excludes the uppercase letter Q: * `my_txt.restrict = "A-Z^Q";` * * You can use the `\u` escape sequence to construct * `restrict` strings. The following code includes only the * characters from ASCII 32(space) to ASCII 126(tilde). * `my_txt.restrict = "\u0020-\u007E";` * * @default null */ public restrict:string; protected get_restrict ():string; protected set_restrict (value:string):string; /** * The current horizontal scrolling position. If the `scrollH` * property is 0, the text is not horizontally scrolled. This property value * is an integer that represents the horizontal position in pixels. * * The units of horizontal scrolling are pixels, whereas the units of * vertical scrolling are lines. Horizontal scrolling is measured in pixels * because most fonts you typically use are proportionally spaced; that is, * the characters can have different widths. Flash Player performs vertical * scrolling by line because users usually want to see a complete line of * text rather than a partial line. Even if a line uses multiple fonts, the * height of the line adjusts to fit the largest font in use. * * **Note: **The `scrollH` property is zero-based, not * 1-based like the `scrollV` vertical scrolling property. */ public scrollH:number; protected get_scrollH ():number; protected set_scrollH (value:number):number; /** * The vertical position of text in a text field. The `scrollV` * property is useful for directing users to a specific paragraph in a long * passage, or creating scrolling text fields. * * The units of vertical scrolling are lines, whereas the units of * horizontal scrolling are pixels. If the first line displayed is the first * line in the text field, scrollV is set to 1(not 0). Horizontal scrolling * is measured in pixels because most fonts are proportionally spaced; that * is, the characters can have different widths. Flash performs vertical * scrolling by line because users usually want to see a complete line of * text rather than a partial line. Even if there are multiple fonts on a * line, the height of the line adjusts to fit the largest font in use. */ public scrollV:number; protected get_scrollV ():number; protected set_scrollV (value:number):number; /** * A Boolean value that indicates whether the text field is selectable. The * value `true` indicates that the text is selectable. The * `selectable` property controls whether a text field is * selectable, not whether a text field is editable. A dynamic text field can * be selectable even if it is not editable. If a dynamic text field is not * selectable, the user cannot select its text. * * If `selectable` is set to `false`, the text in * the text field does not respond to selection commands from the mouse or * keyboard, and the text cannot be copied with the Copy command. If * `selectable` is set to `true`, the text in the text * field can be selected with the mouse or keyboard, and the text can be * copied with the Copy command. You can select text this way even if the * text field is a dynamic text field instead of an input text field. * * @default true */ public selectable:boolean; protected get_selectable ():boolean; protected set_selectable (value:boolean):boolean; /** * The zero-based character index value of the first character in the current * selection. For example, the first character is 0, the second character is * 1, and so on. If no text is selected, this property is the value of * `caretIndex`. */ public readonly selectionBeginIndex:number; protected get_selectionBeginIndex ():number; /** * The zero-based character index value of the last character in the current * selection. For example, the first character is 0, the second character is * 1, and so on. If no text is selected, this property is the value of * `caretIndex`. */ public readonly selectionEndIndex:number; protected get_selectionEndIndex ():number; /** * The sharpness of the glyph edges in this text field. This property applies * only if the `flash.text.AntiAliasType` property of the text * field is set to `flash.text.AntiAliasType.ADVANCED`. The range * for `sharpness` is a number from -400 to 400. If you attempt to * set `sharpness` to a value outside that range, Flash sets the * property to the nearest value in the range(either -400 or 400). * * @default 0 */ public sharpness:number; protected get_sharpness ():number; protected set_sharpness (value:number):number; /** * A string that is the current text in the text field. Lines are separated * by the carriage return character(`'\r'`, ASCII 13). This * property contains unformatted text in the text field, without HTML tags. * * To get the text in HTML form, use the `htmlText` * property. */ public text:string; protected get_text ():string; protected set_text (value:string):string; /** * The color of the text in a text field, in hexadecimal format. The * hexadecimal color system uses six digits to represent color values. Each * digit has 16 possible values or characters. The characters range from 0-9 * and then A-F. For example, black is `0x000000`; white is * `0xFFFFFF`. * * @default 0(0x000000) */ public textColor:number; protected get_textColor ():number; protected set_textColor (value:number):number; /** * The height of the text in pixels. */ public readonly textHeight:number; protected get_textHeight ():number; /** * The width of the text in pixels. */ public readonly textWidth:number; protected get_textWidth ():number; /** * The type of the text field. Either one of the following TextFieldType * constants: `TextFieldType.DYNAMIC`, which specifies a dynamic * text field, which a user cannot edit, or `TextFieldType.INPUT`, * which specifies an input text field, which a user can edit. * * @default dynamic * @throws ArgumentError The `type` specified is not a member of * flash.text.TextFieldType. */ public type:TextFieldType; protected get_type ():TextFieldType; protected set_type (value:TextFieldType):TextFieldType; /** * A Boolean value that indicates whether the text field has word wrap. If * the value of `wordWrap` is `true`, the text field * has word wrap; if the value is `false`, the text field does not * have word wrap. The default value is `false`. */ public wordWrap:boolean; protected get_wordWrap ():boolean; protected set_wordWrap (value:boolean):boolean; /** * Creates a new TextField instance. After you create the TextField instance, * call the `addChild()` or `addChildAt()` method of * the parent DisplayObjectContainer object to add the TextField instance to * the display list. * * The default size for a text field is 100 x 100 pixels. */ public constructor (); /** * Appends the string specified by the `newText` parameter to the * end of the text of the text field. This method is more efficient than an * addition assignment(`+=`) on a `text` property * (such as `someTextField.text += moreText`), particularly for a * text field that contains a significant amount of content. * * @param newText The string to append to the existing text. */ public appendText (text:string):void; /** * Returns a rectangle that is the bounding box of the character. * * @param charIndex The zero-based index value for the character(for * example, the first position is 0, the second position is * 1, and so on). * @return A rectangle with `x` and `y` minimum and * maximum values defining the bounding box of the character. */ public getCharBoundaries (charIndex:number):Rectangle; /** * Returns the zero-based index value of the character at the point specified * by the `x` and `y` parameters. * * @param x The _x_ coordinate of the character. * @param y The _y_ coordinate of the character. * @return The zero-based index value of the character(for example, the * first position is 0, the second position is 1, and so on). Returns * -1 if the point is not over any character. */ public getCharIndexAtPoint (x:number, y:number):number; public getFirstCharInParagraph (charIndex:number):number; /** * Returns the zero-based index value of the line at the point specified by * the `x` and `y` parameters. * * @param x The _x_ coordinate of the line. * @param y The _y_ coordinate of the line. * @return The zero-based index value of the line(for example, the first * line is 0, the second line is 1, and so on). Returns -1 if the * point is not over any line. */ public getLineIndexAtPoint (x:number, y:number):number; public getLineIndexOfChar (charIndex:number):number; public getLineLength (lineIndex:number):number; /** * Returns metrics information about a given text line. * * @param lineIndex The line number for which you want metrics information. * @return A TextLineMetrics object. * @throws RangeError The line number specified is out of range. */ public getLineMetrics (lineIndex:number):TextLineMetrics; /** * Returns the character index of the first character in the line that the * `lineIndex` parameter specifies. * * @param lineIndex The zero-based index value of the line(for example, the * first line is 0, the second line is 1, and so on). * @return The zero-based index value of the first character in the line. * @throws RangeError The line number specified is out of range. */ public getLineOffset (lineIndex:number):number; /** * Returns the text of the line specified by the `lineIndex` * parameter. * * @param lineIndex The zero-based index value of the line(for example, the * first line is 0, the second line is 1, and so on). * @return The text string contained in the specified line. * @throws RangeError The line number specified is out of range. */ public getLineText (lineIndex:number):string; public getParagraphLength (charIndex:number):number; /** * Returns a TextFormat object that contains formatting information for the * range of text that the `beginIndex` and `endIndex` * parameters specify. Only properties that are common to the entire text * specified are set in the resulting TextFormat object. Any property that is * _mixed_, meaning that it has different values at different points in * the text, has a value of `null`. * * If you do not specify values for these parameters, this method is * applied to all the text in the text field. * * The following table describes three possible usages: * * @return The TextFormat object that represents the formatting properties * for the specified text. * @throws RangeError The `beginIndex` or `endIndex` * specified is out of range. */ public getTextFormat (beginIndex?:number, endIndex?:number):TextFormat; public replaceSelectedText (value:string):void; public replaceText (beginIndex:number, endIndex:number, newText:string):void; /** * Sets as selected the text designated by the index values of the first and * last characters, which are specified with the `beginIndex` and * `endIndex` parameters. If the two parameter values are the * same, this method sets the insertion point, as if you set the * `caretIndex` property. * * @param beginIndex The zero-based index value of the first character in the * selection(for example, the first character is 0, the * second character is 1, and so on). * @param endIndex The zero-based index value of the last character in the * selection. */ public setSelection (beginIndex:number, endIndex:number):void; /** * Applies the text formatting that the `format` parameter * specifies to the specified text in a text field. The value of * `format` must be a TextFormat object that specifies the desired * text formatting changes. Only the non-null properties of * `format` are applied to the text field. Any property of * `format` that is set to `null` is not applied. By * default, all of the properties of a newly created TextFormat object are * set to `null`. * * **Note:** This method does not work if a style sheet is applied to * the text field. * * The `setTextFormat()` method changes the text formatting * applied to a range of characters or to the entire body of text in a text * field. To apply the properties of format to all text in the text field, do * not specify values for `beginIndex` and `endIndex`. * To apply the properties of the format to a range of text, specify values * for the `beginIndex` and the `endIndex` parameters. * You can use the `length` property to determine the index * values. * * The two types of formatting information in a TextFormat object are * character level formatting and paragraph level formatting. Each character * in a text field can have its own character formatting settings, such as * font name, font size, bold, and italic. * * For paragraphs, the first character of the paragraph is examined for * the paragraph formatting settings for the entire paragraph. Examples of * paragraph formatting settings are left margin, right margin, and * indentation. * * Any text inserted manually by the user, or replaced by the * `replaceSelectedText()` method, receives the default text field * formatting for new text, and not the formatting specified for the text * insertion point. To set the default formatting for new text, use * `defaultTextFormat`. * * @param format A TextFormat object that contains character and paragraph * formatting information. * @throws Error This method cannot be used on a text field with a style * sheet. * @throws RangeError The `beginIndex` or `endIndex` * specified is out of range. */ public setTextFormat (format:TextFormat, beginIndex?:number, endIndex?:number):void; } } export default openfl.text.TextField;