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

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

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

Регистрация: Nov 2003
Сообщений: 290
По умолчанию [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"), а цвет моего зарегестрированного элемента компонента изменить не удается.

Прошу помощи!

Старый 11.11.2005, 18:59
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 2  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
Коллеги, уделите внимание пожалуйста!

Старый 14.11.2005, 15:19
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 3  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
Неужели никто не сталкивался?

Старый 14.11.2005, 19:11
MaxLife вне форума Посмотреть профиль Отправить личное сообщение для MaxLife Найти все сообщения от MaxLife
  № 4  
Ответить с цитированием
MaxLife

Регистрация: Nov 2003
Сообщений: 128
Проверь идентификаторы. Скорее всего засада именно там. На крайняк проверь в 7-ке/6-ке. А ещё проще - воспроизведи пример из хелпа. Если работает, потихоньку подключай своё.

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

Регистрация: 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';
Соответственно, _root.t1 - компонент.


Последний раз редактировалось MaxLife; 14.11.2005 в 19:19.
Старый 16.11.2005, 00:58
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 6  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
MaxLife , спасибо большое! Проблема решилась регистрацией добавленных мною в компонент скинов (мувиклипов) методом mx.styles.StyleManager.registerColorStyle('имя созданного внутри компонента скина').

По правде говоря из хэлпа не особенно понял что именно делает сей метод mx.styles.StyleManager.registerColorStyle(), не мог бы ты пояснить немного?

Старый 16.11.2005, 18:31
MaxLife вне форума Посмотреть профиль Отправить личное сообщение для MaxLife Найти все сообщения от MaxLife
  № 7  
Ответить с цитированием
MaxLife

Регистрация: Nov 2003
Сообщений: 128
Если я правильно помню, он вносит имя компонента в коллекцию элементов скинов, используя которую потом цветовыми скинами и управляет. Коллекция водится где-то в _global. Если интересует более точно, смотри код класса StyleManager.as в каталоге Flash.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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