Главная / Action Script 3
Пакетflash.text
Классpublic dynamic class StyleSheet
НаследованиеStyleSheet Inheritance EventDispatcher Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Класс StyleSheet позволяет создать объект StyleSheet, содержащий правила форматирования текста для размера, цвета текста и других стилей. После этого можно применять стили, определенные в таблице стилей, к объекту TextField, содержащему текст в формате HTML или XML. Текст в объекте TextField автоматически форматируется в соответствии со стилями тегов, определенными объектом StyleSheet. Стили текста можно использовать для определения новых тегов форматирования, переопределения встроенных тегов HTML или создания классов стилей, которые можно применять к определенным тегам HTML.

Чтобы применить стили к объекту TextField, назначьте объект StyleSheet его свойству styleSheet.

Примечание. Текстовое поле с таблицей стилей не подлежит редактированию. Другими словами, текстовое поле со свойством type в значении TextFieldType.INPUT применяет объект StyleSheet к тексту по умолчанию для поля, но его содержимое больше не будет доступно для редактирования. Для назначения стилей текстовым полям ввода можно использовать класс 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 Используется только числовая часть значения. Единицы (пикселы, точки) не анализируются. Пикселы эквивалентны точкам.
font-style fontStyle Распознаются значения normal (обычный) и italic (курсив).
font-weight fontWeight Распознаются значения normal (обычный) и italic (полужирный).
kerning kerning Распознаются значения true и false. Кернинг доступен только для встроенных шрифтов. Некоторые шрифты, такие как Courier New, не поддерживают кернинг. Свойство kerning поддерживается только в SWF-файлах, созданных в ОС Windows, а в созданных в ОС Macintosh — нет. Однако эти SWF-файлы могут воспроизводиться с применением кернинга и в версиях проигрывателя Flash Player, не предназначенных не для Windows.
leading leading Пространство, равномерно распределяемое между строками. Это значение задает количество пикселов, добавляемых после каждой строки. Отрицательное значение уплотняет межстрочное пространство. Используется только числовая часть значения. Единицы (пикселы, точки) не анализируются. Пикселы эквивалентны точкам.
letter-spacing letterSpacing Пространство, равномерно распределяемое между символами. Это значение задает количество пикселов, добавляемых после каждого символа. Отрицательное значение уплотняет пространство между символами. Используется только числовая часть значения. Единицы (пикселы, точки) не анализируются. Пикселы эквивалентны точкам.
margin-left marginLeft Используется только числовая часть значения. Единицы (пикселы, точки) не анализируются. Пикселы эквивалентны точкам.
margin-right marginRight Используется только числовая часть значения. Единицы (пикселы, точки) не анализируются. Пикселы эквивалентны точкам.
text-align textAlign Распознаются значения left, center, right и justify.
text-decoration textDecoration Распознаются значения none и underline.
text-indent textIndent Используется только числовая часть значения. Единицы (пикселы, точки) не анализируются. Пикселы эквивалентны точкам.

Посмотреть примеры

См. также

flash.text.TextField


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  styleNames : Array
[только для чтения] Массив, содержащий имена (в виде строк) всех стилей, зарегистрированных в этой таблице стилей.
StyleSheet
Общедоступные методы
 МетодОпределено
  
Создает новый объект StyleSheet.
StyleSheet
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях.
EventDispatcher
  
Удаляет все стили из объекта StyleSheet.
StyleSheet
 Inherited
Передает событие в поток событий.
EventDispatcher
  
Возвращает копию объекта стиля, связанного со стилем с именем styleName.
StyleSheet
 Inherited
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
  
Выполняет синтаксический анализ CSS в параметре CSSText и заполняет таблицу стилей полученными данными.
StyleSheet
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
setStyle(styleName:String, styleObject:Object):void
Добавляет новый стиль с заданным именем в объект StyleSheet.
StyleSheet
 Inherited
Возвращает строковое представление заданного объекта.
Object
  
Расширяет возможности лексического анализа CSS.
StyleSheet
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
Сведения о свойстве
styleNamesсвойство
styleNames:Array  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Массив, содержащий имена (в виде строк) всех стилей, зарегистрированных в этой таблице стилей.



Реализация
    public function get styleNames():Array
Сведения о конструкторе
StyleSheet()Конструктор
public function StyleSheet()

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Создает новый объект StyleSheet.

См. также

Сведения о методе
clear()метод
public function clear():void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Удаляет все стили из объекта StyleSheet.

getStyle()метод 
public function getStyle(styleName:String):Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает копию объекта стиля, связанного со стилем с именем styleName. Если с styleName не связан объект стиля, возвращается значение null.

Параметры

styleName:String — Строка, задающая имя стиля, который нужно получить.

Возвращает
Object — Объект.

См. также


Пример
Как пользоваться примерами
См. примеры метода parseCSS() или parseCSS(), иллюстрирующие использование метода getStyle().
parseCSS()метод 
public function parseCSS(CSSText:String):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Выполняет синтаксический анализ CSS в параметре CSSText и заполняет таблицу стилей полученными данными. Если стиль из CSSText уже занесен в styleSheet, свойства в styleSheet сохраняются, и в styleSheet добавляются или изменяются только те свойства, которые перечислены в CSSText.

Чтобы расширить собственные возможности синтаксического анализа CSS, можно переопределить этот метод путем создания подкласса StyleSheet.

Параметры

CSSText:String — Текст CSS для анализа (строка).


Пример

В следующем примере, когда пользователь щелкает по файлу текста, к содержимому применяются стили CSS, загруженные из файла.

В конструкторе создается многострочное текстовое поле, его содержимое форматируется в виде HTML-строки. (HTML-теги заголовка и диапазона не визуализируются до применения стиля CSS.) Для определения местоположения CSS-файла создается объект URLRequest. В данном примере он CSS-файл находится в том же каталоге, что и SWF-файл. Файл загружается с помощью объекта URLLoader. Для объекта URLLoader с именем loader добавляется два прослушивателя событий. При возникновении ошибки ввода-вывода вызывается метод errorHandler(), отображающий сообщение об ошибке в текстовом поле. Когда все данные будут получены и помещены в свойство data объекта URLLoader с именем loader, вызывается метод loaderCompleteHandler(). Этот метод выделяет стили CSS из данных, загруженных из файла, и заполняет объект StyleSheet с именем sheet определениями стилей.

Когда пользователь щелкает текстовое поле, запускается метод clickHandler(). Инструкция if в методе clickHandler() проверяет, завершена ли загрузка файла, перед применением таблицы стилей к текстовому полю. Чтобы таблица стилей вступила в силу, необходимо повторно назначить содержимое свойству htmlText после того, как текстовому полю будет назначена таблица стилей. Значения свойств 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
Версии среды выполнения:  1.0 9

Добавляет новый стиль с заданным именем в объект StyleSheet. Если названный стиль еще не существует в таблице стилей, он добавляется в нее. Если названный стиль уже существует в таблице стилей, он заменяется новым. Если параметр styleObject имеет значение null, названный стиль удаляется.

Проигрыватель Flash Player создает копию объекта стиля, передаваемого этому методу.

Поддерживаемые стили перечислены в таблице в описании класса StyleSheet.

Параметры

styleName:String — Строка, задающая имя стиля для добавления в таблицу стилей.
 
styleObject:Object — Объект, описывающий стиль, или null.

transform()метод 
public function transform(formatObject:Object):TextFormat

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Расширяет возможности лексического анализа CSS. Опытные разработчики могут переопределить этот метод путем расширения класса StyleSheet.

Параметры

formatObject:Object — Объект, описывающий стиль, содержащий правила стилей в виде свойств объекта, или null.

Возвращает
TextFormat — Объект TextFormat, содержащий результат наложения правил CSS на свойства форматирования текста.

См. также


Пример

В данном примере метод transform() используется для применения стиля из CSS-файла к объекту TextFormat для текстового поля.

Стили CSS обычно используются для форматирования HTML-содержимого. Однако с помощью метода transform() объекта StyleSheet конкретные стили CSS можно назначить объекту TextFormat, а затем применить к любому текстовому полю.

Для загрузки CSS-файла используются объекты URLRequest и URLLoader. Добавляется прослушиватель для события Event.COMPLETE, которое происходит после получения всех данных и их помещения в свойство data объекта URLLoader с именем loader. После этого метод loaderCompleteHandler() выполняет разбор данных, загруженных из CSS- файла и заполняет стилями объект StyleSheet с именем sheet. Метод getStyle() таблицы стилей получает стили абзацев HTML, которые назначаются объекту TextFormat с именем cssFormat с помощью метода transform() таблицы стилей. В завершение, для текстового поля 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;
        }
    }
}
Примеры Как пользоваться примерами
StyleSheetExample.as

В следующем примере создается новая таблица стилей, стилю заголовка присваивается полужирный красный шрифт.
 
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);
        }
    }
}