![]() |
|
||||||||||
|
|||||
|
Подскажите пожайлуста, есть ли возможность изменения цвета выделения текста в текстовом поле?
А то так получается, что если текст на черном фоне белым цветом, то выделения не видно. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
никак
|
|
|||||
|
и на том спасибо
|
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Да легко, делаешь обычное поле с чёрным цветом букв.
Делаешь из него мувик, мувику даёшь advanced color option (-100% + 255) для каждого канала. Это эквивалентно инвертированию изображения. Усё. ![]() Либо скриптом: createTextField("_txt",1,10,10,200,20);
_txt.text = "selected, not selected";
new Color(_txt).setTransform({ra:-100,ga:-100,ga:-100,rb:255,gb:255,bb:255});
Selection.setFocus("_txt");
Selection.setSelection(0,9);
А вообще, есть ещё один дебильный способ сделать выделение любого цвета, не меняя цвет букв в поле (подходит для многоцветных полей): кладём на стаж два текстовых поле одно точно под другим, ассоциируем оба поля с одной переменной (чтобы текст всегда совпадал) нижнему даём трансформацию, чтобы превратить чёрное в нужное нам выделение, верхнему запрещаем выделение (sectable = false). Теперь пользователь, выделяя буквы, будет выделять их на самом деле в нижнем текстовом поле и видеть это выделение, хотя сами буквы будут оставаться аккуратно закрыты буквами вырхнего поля. Это не совсем хорошо, т.к. обычно и сами буквы при выделении меняют цвет на дополнительный, но это легко исправить, отслеживая getSelection() в нижнем поле и меняя цвет нужных букв верхнего поля на правильный дополнительный (а не на просто белый, как по дефолту во флэшовых полях). Этот способ можно запинать даже для инпут полей, сам делал, просто кода для передачи всех событий в нижнее поле нужно больше... И, наконец, способ самый мощный, но самый трудоёмкий - отслеживаем какие именно буквы у нас выделены и их положение в текстовом поле (тут лучше иметь 8 или 9 плеер, чтобы анализировать битмап с отрисованным флэшем селекшоном, т.к. это самый простой способ отыскать физическое положение выделенных букв в поле; в более ранних плеерах это сложнее, но тоже не невозможно ) Теперь, когда координаты выделения известны (прямоугольник или набор прямоугольников) уже рисуем вместо стандартного выделения хоть волны, хоть летающие звёздочки.Прототип селекшона в поле, где выделяемые буквы начинают гореть огнём из нойза я даже начал делать, доведу до ума когда-нибудь, когда будет побольше свободного времени. Такие эффекты, я думаю будут восстребованы на сайтах, где флэшу начинают доверять работу с текстом (чаты, блоги, Валлопы всякие), так что тренируйтесь уже. ![]() О, выдал скока многа букав. Просто не люблю, когда говорят "нельзя" без всяких на то оснований... ![]()
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Dendroid, если тебе угодно — без геморроя нельзя.
У этой задачи нет правильного и легкого решения, поэтому — нельзя. Извращаться с инвертацией и прочими радостями — не экономить на ресурсах и врядли данная задача является основной в проекте. Основания достаточны? Можно придумать сколь угодно извращенный способ, но он врядли будет ходовым. |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Цитата:
Три строчки кода - это уже сложное решение (ну или пусть 50 строчек, как во втором упомянутом мной примере)? Ну, можно завернуть это в класс и вызывать одной строкой, дизайнер и не узнает, что там создаётся поле, а потом инвертируется. Если так рассуждать, получается, что ответ на самый задаваемый здесь последнее время вопрос: "Как избавиться от рамок у флэшки в IE?" долже быть: "Никак"?? Ведь что может быть геморройнее, чем включать флэшку жаваскриптом, заботясь, чтобы работало в максимальном числе браузеров? Нет, я отлично понимаю о чём Вы, и ничего лично против Вас не имею, извините, если задел, но сам подход... такое стремление к изяществу и кристальной чистоте кода, без всяких триков - кому оно надо? P.S.: А Вы видели, как устроены макромедийные компоненты изнутри - никакого изящества, сплошной практицизм, порождающий во множестве различные трики и хаки. ![]()
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А я их и не использую, собственно.
Трики — в AS1 пожалуйста. К тому же, твои способы весьма ограничены и любой цвет задать можно, разве что, с помощью третьего способа, который является самым ресурсоёмким. И дело не в чистоте кода, а в дальнейшей работе с этим проектом. |
|
|||||
|
Регистрация: Feb 2001
Сообщений: 1,893
|
Ничего страшного в "дебильном" способе, который все кому это нужно юзают с 99-ого года (Flash4) - нет, если очень смущает - можно оформить в виде компонента, и никто никогда не узнает как сие чудо работает, ... а с появлением 8-ки, мне кажется можно решить еще проще: замена цвета - теперь это просто
![]() |
|
|||||
|
4AM Games
|
etc я не совсем понимаю, чем мешает этот код проекту? инкапсулируй все нафик, и не вспоминай.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Своей неочевидностью и излишней сложностью для простой смены цвета выделения (возможности выделения любым цветом). Я конечно, понимаю, что во времена Flash 4 нужно было ой как извращаться, чтобы сделать элементарные вещи, но сейчас-то зачем…
Впрочем, если этот геморрой является приоритетным в проекте — пожалуйста, я не против. ![]() Последний раз редактировалось etc; 15.10.2006 в 13:10. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|