![]() |
[flash 8] Skinning components
Друзья, прошу помощи... Суть проблемы: нужно в процесссе выполнения ролика изменять цветовую схему стандартного компонента ScrollPane.
Согласно описанию в хэлпе (Linking skin color to styles) создаю внутри компонента мувиклипы, регистрирую их в качестве свойств mx.skins.ColoredSkinElement.setColorStyle (this, "symbolArrowUpColor");, далее назначаю им цвета _global.style.setStyle("symbolArrowUpColor", 0xD9D9D9); Отсюда несколько вопросов: 1. Почему не получается установить стиль для конкретного экземпляра компонента _root.my_component.setStyle("symbolArrowUpColor", 0xD9D9D9); 2. При установке цвета для множества элементов компонента, т.е. вызове многократно _global.style.setStyle("элемент который нужно перекрашивать 1", 0xD9D9D9); _global.style.setStyle("элемент который нужно перекрашивать N", 0xD9D9D9); и т.д. отрисовка компонента начинает безбожно тормозить. И об этом сказано в хэлпе If you want to change multiple properties, or change properties for multiple component instances, you can create a custom style. A component instance that uses a custom style for multiple properties will render faster than a component instance with several setStyle() calls. Однако использовать custom style не получается: import mx.styles.CSSStyleDeclaration; var new_style:Object = new CSSStyleDeclaration(); _global.styles.myStyle = new_style; new_style.setStyle("borderStyle", "none") new_style.setStyle("элемент который нужно перекрашивать 1", 0xD9D9D9); my_component.setStyle("styleName", "myStyle"); Работает только ("borderStyle", "none"), а цвет моего зарегестрированного элемента компонента изменить не удается. Прошу помощи! |
Коллеги, уделите внимание пожалуйста!
|
Неужели никто не сталкивался?
|
Проверь идентификаторы. Скорее всего засада именно там. На крайняк проверь в 7-ке/6-ке. А ещё проще - воспроизведи пример из хелпа. Если работает, потихоньку подключай своё.
|
вот пример стопроцентно работающего кода по назначению стилей:
Код:
import mx.styles.StyleManager; |
MaxLife , спасибо большое! Проблема решилась регистрацией добавленных мною в компонент скинов (мувиклипов) методом mx.styles.StyleManager.registerColorStyle('имя созданного внутри компонента скина').
По правде говоря из хэлпа не особенно понял что именно делает сей метод mx.styles.StyleManager.registerColorStyle(), не мог бы ты пояснить немного? |
Если я правильно помню, он вносит имя компонента в коллекцию элементов скинов, используя которую потом цветовыми скинами и управляет. Коллекция водится где-то в _global. Если интересует более точно, смотри код класса StyleManager.as в каталоге Flash.
|
| Часовой пояс GMT +4, время: 13:56. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.