| « Отображение произвольного HTML силами TLF | Flash Catalyst и его место в рабочем цикле Flex-проекта » |
Изменение размера шрифта по Ctrl+/-
Существует простой способ менять размер шрифта по всему Flex-приложению сразу. Работает это через стили, не накладывая при этом каких-то ограничений (+ view source).
Для CSS-классов, использующий отличный от базового размер шрифта (напр. заголовок) вместо стиля fontSize указывается fontSizeDelta, напр. 2 или -1:
- <mx:Style>
- .header
- {
- fontSizeDelta: 3;
- }
- </mx:Style>
Сам код изменения размера шрифта:
- private var _fontSize:Number;
- [Bindable("fontSizeChange")]
- public function get fontSize():Number
- {
- return _fontSize;
- }
- public function set fontSize(value:Number):void
- {
- if (_fontSize == value)
- return;
- _fontSize = value;
- applyFontSize(_fontSize);
- dispatchEvent(new Event("fontSizeChange"));
- }
- private function applyFontSize(fontSize:Number):void
- {
- // Loop through all styles and set new "fontSize" value based on new size and "fontSizeDelta" style
- var selectors:Array = StyleManager.selectors;
- for each (var selector:String in selectors)
- {
- var declaration:CSSStyleDeclaration = StyleManager.getStyleDeclaration(selector);
- var delta:Number = declaration.getStyle("fontSizeDelta");
- if (delta)
- {
- declaration.setStyle("fontSize", fontSize + delta);
- StyleManager.setStyleDeclaration(selector, declaration, false);
- }
- }
- // global style is applied to all Flex visual components
- var global:CSSStyleDeclaration = StyleManager.getStyleDeclaration("global");
- if (!global)
- global = new CSSStyleDeclaration("global");
- global.setStyle("fontSize", fontSize);
- // update styles only on last change
- StyleManager.setStyleDeclaration("global", global, true);
- }
- private function addedToStageHandler():void
- {
- stage.addEventListener(KeyboardEvent.KEY_UP, my_keyUpHandler);
- }
- private function my_keyUpHandler(event:KeyboardEvent):void
- {
- if (event.ctrlKey)
- {
- var keyCode:uint = event.keyCode;
- // Ctrl +/up
- if (keyCode == 107 || keyCode == 187 || keyCode == 38)
- fontSize++;
- // Ctrl -/down
- else if (keyCode == 109 || keyCode == 189 || keyCode == 40)
- fontSize--;
- }
- }
Для того, чтобы Ctrl+/- работали сразу после загрузки приложения без необходимости “кликнуть” в него, переведите фокус автоматически:
- <body scroll='no' onLoad="document.getElementById('${application}').focus();">
Трекбек адрес этой записи
URL трекбека (щелкните правой кнопкой мыши и скопируйте ссылку)
Нужная штука, пасиб. Применю у себя.





