![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Друзья, прошу помощи... Суть проблемы: нужно в процесссе выполнения ролика изменять цветовую схему стандартного компонента 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"), а цвет моего зарегестрированного элемента компонента изменить не удается. Прошу помощи! |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Коллеги, уделите внимание пожалуйста!
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Неужели никто не сталкивался?
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 128
|
Проверь идентификаторы. Скорее всего засада именно там. На крайняк проверь в 7-ке/6-ке. А ещё проще - воспроизведи пример из хелпа. Если работает, потихоньку подключай своё.
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 128
|
вот пример стопроцентно работающего кода по назначению стилей:
import mx.styles.StyleManager;
import mx.skins.ColoredSkinElement;
import mx.styles.CSSStyleDeclaration;
mx.styles.StyleManager.registerColorName('skinColor_1', 0xFFFFFF);
mx.styles.StyleManager.registerColorStyle('skinColor1');
mx.styles.StyleManager.registerColorName('skinColor_2', 0xFF0000);
mx.styles.StyleManager.registerColorStyle('skinColor2');
mx.styles.StyleManager.registerColorName('skinColor_3', 0x00FF00);
mx.styles.StyleManager.registerColorStyle('skinColor3');
mx.styles.StyleManager.registerColorName('skinColor_4', 0x0000FF);
mx.styles.StyleManager.registerColorStyle('skinColor4');
_root.t1.setStyle('skinColor1', 'skinColor_1')
_root.t1.setStyle('skinColor2', 'skinColor_2')
_root.t1.setStyle('skinColor3', 'skinColor_1')
_root.t1.setStyle('skinColor4', 'skinColor_1')
_root.cb1['colorName'] = 'skinColor1';
_root.cb2['colorName'] = 'skinColor2';
_root.cb3['colorName'] = 'skinColor3';
_root.cb4['colorName'] = 'skinColor4';
Последний раз редактировалось MaxLife; 14.11.2005 в 19:19. |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
MaxLife , спасибо большое! Проблема решилась регистрацией добавленных мною в компонент скинов (мувиклипов) методом mx.styles.StyleManager.registerColorStyle('имя созданного внутри компонента скина').
По правде говоря из хэлпа не особенно понял что именно делает сей метод mx.styles.StyleManager.registerColorStyle(), не мог бы ты пояснить немного? |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 128
|
Если я правильно помню, он вносит имя компонента в коллекцию элементов скинов, используя которую потом цветовыми скинами и управляет. Коллекция водится где-то в _global. Если интересует более точно, смотри код класса StyleManager.as в каталоге Flash.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|