PDA

Просмотр полной версии : Цвет текста с прозрачностью? Возможно?


lexa2000lexa
28.07.2010, 16:05
Доброго времени суток.
Возникла вопрос возможно ли сделать цвет текста с прозрачностью, тоесть не сам текстовый елемент сделать прозрачным а задать цвет текста с прозрачностью?

KirAmp
28.07.2010, 16:13
а в чем собственно разница?
p.s. ответ нет, но если опишите подробней чего хотите достичь.... тогда возможно мы вам поможем

lexa2000lexa
28.07.2010, 16:17
мне нужно в тексте спрятать некоторые символы.

Хемуль
28.07.2010, 17:15
2 lexa2000lexa:
От кого? Зачем? о_0

iNils
28.07.2010, 17:38
мне нужно в тексте спрятать некоторые символы.
Сделайте их цветом фона.

lexa2000lexa
28.07.2010, 17:52
Сделайте их цветом фона.
фон не однородный(

Хемуль
28.07.2010, 18:01
2 lexa2000lexa:
если опишите подробней чего хотите достичь.... тогда возможно мы вам поможем

iNils
28.07.2010, 18:02
фон не однородный(
Маску наложите.

lexa2000lexa
28.07.2010, 18:03
to Хемуль
ну куда еще подробней? Нужно некоторые символы в тексте сделать прозрачными, разве это не подробно?
to iNils
а можно поподробней на счет маски?

Хемуль
28.07.2010, 18:04
2 lexa2000lexa:
А с какой целью вы хотите сделать их прозрачными? Что это вам даст? Чего хотите достичь?

lexa2000lexa
28.07.2010, 18:12
to Хемуль
Грубо говоря есть некий текст который береться из вне, и при нажатии на кнопку скажим так из этого текста должны изчезнуть некоторые фразы.
да я забыл сказать текстовое поле создаеться программно, если его создовать вручную тогда можно изменить прозрачность текста.

Хемуль
28.07.2010, 18:49
Грубо говоря есть некий текст который береться из вне, и при нажатии на кнопку скажим так из этого текста должны изчезнуть некоторые фразы.
Интересная задача.
Если бы шрифт был моноширинным... А так...
К тому же в AS2 не так всё хорошо с текстом, как в AS3...

текстовое поле создаеться программно, если его создовать вручную тогда можно изменить прозрачность текста.
В динамическом нельзя задавать прозрачность отдельных символов даже если вручную сделать его.

lexa2000lexa
28.07.2010, 19:04
В динамическом нельзя задавать прозрачность отдельных символов даже если вручную сделать его.
Да это верно, но можно наоборот сделать , всему задать прозрачность а потом некоторые символы вклучить через TextFormat.

Хемуль
28.07.2010, 19:34
2 lexa2000lexa:
Ну, может и можно было бы сделать то, что вы хотите, но в AS3. Отрисовать текст в BitmapData и там играться с альфа-каналом областей, в которых рисуются символы.
А вообще было бы идеально, как я уже писал, если бы у вас был моноширинный шрифт - там бы вы просто заменили необходимые строки пробелами и всё.

lexa2000lexa
28.07.2010, 19:53
AS3 нельзя также как и моноширинный шрифт, такчто приходиться выкручиваться)

KirAmp
28.07.2010, 20:17
lexa2000lexa, можно создать массив текстовых полей, которые будут принимать чары, итого получим, что каждая буква (слово, абзац) имеют свои уникальные параметры

Добавлено через 2 минуты
так же как вариант - можно применять css

Хемуль
28.07.2010, 20:53
можно создать массив текстовых полей, которые будут принимать чары, итого получим, что каждая буква (слово, абзац) имеют свои уникальные параметры
Как создавать? Вручную?

так же как вариант - можно применять css
Через CSS можно менять прозрачность участка текста в текстовом поле?

KirAmp
28.07.2010, 20:59
Как создавать? Вручную?
Вручную, циклом....
Через CSS можно менять прозрачность участка текста в текстовом поле?
мм... вроде бы, мало пользовался цсс

Хемуль
28.07.2010, 21:03
2 KirAmp:
Циклом многострочный текст?

mooncar
28.07.2010, 21:49
Используя свойства и методы TextField и TextFormat задача простыми методами нерешаема, посмотрите в хелпе, если еще надеетесь на что-то. CSS тем более вам не помощник - там нет транспорентных настроек. У TextField можно задать альфу, но свойство относится ко всему полю сразу (и TextFormat на это никак не повлияет, если альфа в 0, то хоть каким цветом делайте символы - ничего не увидите).

Сделайте плашку-фон под текст и не мучайтесь - используйте для задания setTextFormat с индексами начала и конца, задавая символам цвет фона.
Либо воспользуйтесь советом KirAmp о массиве с буквами, хотя это довольно громоздкое решение, но в ваших рамках единственное реальное. Но тогда нужно выстраивать строку из отдельных односимвольных полей.

KirAmp
28.07.2010, 22:38
Хемуль
Реально, я делал как-то raibow-текст, буквы разбигались от мышки, именно так.
Текст был однострочным, но в цикле переносился на разные _y

Хемуль
28.07.2010, 23:13
2 KirAmp:
И кернинг был просто зашибись, наверное. ^_^

lexa2000lexa
29.07.2010, 11:10
Спасибо всем за советы. Все решил от обратного, только при этом остался один недостаток, текстовое поле нужно создовать вручную, и задавать ему прозрачность.

Хемуль
29.07.2010, 12:06
2 lexa2000lexa:
Прозрачность текстового поля или символов в нём?

lexa2000lexa
29.07.2010, 13:01
Я делал цвет в текстовом поле прозрачным, а потом в нем менял цвет нужных символов цветом без прозрачности.

iNils
29.07.2010, 13:14
Про маску. Программно, в цикле, выделяете символы которые хотите скрыть, для каждого символа снимаете снимок в битмапдату, который анализируете и удаляете все кроме выделенной области. Потом все снимки объединяете и получаете результирующую маску.

lexa2000lexa
29.07.2010, 13:20
спасибо , попробу и так сделать.

Mnilionic
30.07.2010, 16:57
а зареплейсить звёздочками или пробелами нужные символы, не подходит?

Хемуль
30.07.2010, 17:03
2 Mnilionic:
Если шрифт не моноширинный, пойдёт некрасивое перескакивание текста по строкам.
Я так понимаю, автору темы это бы не понравилось.

in4core
30.07.2010, 17:35
Наилучший метод :
var str : String = new String(putUText Here);
var arr = [ "s", "&&", "456" ] // массив симоволов для исчезновения.
for (var i=0; i< str.length; i++) {
str = str.split(arr[i]).join('Symbol hidden');
if(arr[i+1] == undefined) { break; }
}
tf.text = str;

Enjoy

Хемуль
30.07.2010, 17:43
2 in4core:
Так а чем он наилучший-то?

in4core
30.07.2010, 18:29
1/ Быстрый 2. Замена символов на выбор 3. Замена символа на текст или другой символ. что еще то надо? )))

rainbowrussia
30.07.2010, 20:37
Что-то вы тут напутали - "str.length" наверное надо заменить на "arr.length", и строка "if(arr[i+1] == undefined) { break; }" становится ненужной.

Хемуль
30.07.2010, 20:51
1/ Быстрый 2. Замена символов на выбор 3. Замена символа на текст или другой символ. что еще то надо? )))
Ну, вообще-то нужно немного другое. Или вы думаете, что тема просто так распухла на 3 страницы, потому что никто не знает, как заменить в строке одну подстроку на другую? ^_^ Нет, автор ставит перед нами задачу посложнее...

rainbowrussia
30.07.2010, 22:19
Предложу пару вариантов.
1) Замена "скрытого" текста на прозрачные <img> нужной ширины (вычисляется через создание поля с заменяемым словом) по числу скрываемых слов (для сохранения переносов).
2) Редактирование шрифта с последующим внедрением. От шрифта остаются только пустые знакоместа исходной ширины, без кривых. С установкой стиля с новым шрифтом у скрываемого текста. Не знаю возможно ли это.