Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.10.2010, 14:11
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Тонкая настройка компонента List

Решил упростить себе жизнь и взял стандартный компонент List.
Как настраивать гарнитуру и размер шрифта?

Судя по описанию, через метод setStyle(), но что-то не вижу стиля для шрифта (распечатал через getStyleDefinition)

Код:
upArrowUpSkin : ScrollArrowUp_upSkin
repeatDelay : 500
upArrowOverSkin : ScrollArrowUp_overSkin
downArrowUpSkin : ScrollArrowDown_upSkin
upArrowDownSkin : ScrollArrowUp_downSkin
downArrowOverSkin : ScrollArrowDown_overSkin
focusRectPadding : null
downArrowDownSkin : ScrollArrowDown_downSkin
trackUpSkin : ScrollTrack_skin
downArrowDisabledSkin : ScrollArrowDown_disabledSkin
trackOverSkin : ScrollTrack_skin
skin : List_skin
cellRenderer : [class CellRenderer]
upArrowDisabledSkin : ScrollArrowUp_disabledSkin
thumbDisabledSkin : ScrollThumb_upSkin
thumbUpSkin : ScrollThumb_upSkin
trackDisabledSkin : ScrollTrack_skin
contentPadding : 0
focusRectSkin : null
thumbDownSkin : ScrollThumb_downSkin
trackDownSkin : ScrollTrack_skin
thumbOverSkin : ScrollThumb_overSkin
disabledAlpha : 0.5
thumbIcon : ScrollBar_thumbIcon
repeatInterval : 35
Пример взял из хелпа:

Код AS3:
package classes 
{
    import flash.display.Sprite
    import flash.events.*;
    import fl.data.DataProvider;
    import fl.controls.List;
    import flash.text.*;
 
    public class UserList extends Sprite
    {
        private var availableItems:List;
 
        public function UserList() {
            createComponents();
            setupComponents();
        }
 
        private function setupComponents():void {
            var dp:Array = new Array();
            var i:uint;
            var count:uint = availableItems.rowCount * 2;
            for (i = 0; i < count; i++) {
                dp.push({label:"Item " + i});
            }
            availableItems.dataProvider = new DataProvider(dp);
            availableItems.addEventListener(Event.CHANGE, updateLists);
            availableItems.addEventListener(Event.CHANGE, showStyleDefinition);
 
        }
 
        private function updateLists(e:Event):void {
            trace(availableItems.selectedItem.label);
        }
 
        private function createComponents():void {
            availableItems = new List();
            availableItems.setSize(300, 300);
            availableItems.move(100, 100);
            addChild(availableItems);
        }
 
        private function showStyleDefinition(e:Event):void {
            var componentClass:Class = List;
            var styles:Object = componentClass["getStyleDefinition"].call(availableItems);
            var styleData:DataProvider = new DataProvider();
            for(var i:* in styles) {
            	trace(i + " : " + styles[i]);
            }
        }
    }
}


Последний раз редактировалось mikhailk; 21.10.2010 в 14:17.
Старый 21.10.2010, 14:29
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 2  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Код AS3:
setStyle("textFormat", txtFormat);

Старый 21.10.2010, 14:33
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
я это попробовал первым делом
чего-то не получилось

нет, не работает:
Код AS3:
        private function createComponents():void {
            availableItems = new List();
            availableItems.setSize(300, 300);
            availableItems.move(100, 100);
 
            var textFormat:TextFormat = new TextFormat();
            textFormat.size = 30;
            availableItems.setStyle("textFormat", textFormat);
 
            addChild(availableItems);
        }


Последний раз редактировалось mikhailk; 21.10.2010 в 14:36.
Старый 21.10.2010, 14:42
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 4  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Хех. Это флэшовые компоненты - привыкай.
Нужно задать свой рендерер:
Код AS3:
list.setStyle("cellRenderer", myRenderer);
В этом рендерере переопределить data (или listData), где задавать текстовый формат - но уже для рендерера, а не для листа.

Старый 21.10.2010, 14:49
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 5  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
ок, я что-то такое и подозревал...

кстати, нашел аварийный способ
StyleManager.setStyle("textFormat", textFormat);

Лупит по всем компонентам сразу.


Опубликую правильное решение, может кому пригодится.

1. Переопределяем свой рендерер:

Код AS3:
package classes 
{
    import fl.controls.listClasses.CellRenderer;
    import flash.text.TextFormat;
    public class CustomCellRenderer extends CellRenderer {
        public function CustomCellRenderer() {
            var format:TextFormat = new TextFormat("Arial", 14);
            setStyle("textFormat", format);
        }
    }
}
2. Задаем имя класса рендерера через setStyle:

Код AS3:
   myList.setStyle("cellRenderer", CustomCellRenderer);


Последний раз редактировалось mikhailk; 21.10.2010 в 15:03.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.