PDA

Просмотр полной версии : Трекинг шрифта DS Digital


ded100let
12.01.2012, 01:29
Приветствую всех! Для одной простой игры пишу отображение набранных очков. Отображение хочу сделать в виде цифровых часов (LCD/LED).

Есть три слоя: фон, слой с тусклыми цифрами и слой с яркими цифрами. Слой с тусклыми отображает только нули типа 00,00, а слой с яркими цифрами, отображающий очки, помещается поверх тусклых цифр. Создается эффект свечения :). Реализовал практически всё, но теперь проблемы с отступами между цифр. Если яркими цифрами вывести 1,00, то 1 слегка уходит влево от расположенного снизу нуля. Вот результат:
http://img835.**************/img835/3589/imgsx.png

Проблема в отступе между "1" и "0" и он больше, чем между "0" и "0". Если ввести одинаковые символы в оба слоя, то наложение происходит на ура!
http://img838.**************/img838/6821/img2si.png

Пытался поиграть с kerning, letterSpacing - без результатов. Другие шрифты более лояльны в этом плане, но этот подходит больше по внешнему виду.

Что бы вы сделали тут?

КорДум
12.01.2012, 01:32
Сделайте клип с цифрами в кадрах и проблемы исчезнут. Ну и шрифт импортировать не надо будет.

Добавлено через 2 минуты
Или фабрику цифр на замену клипов, если не используете FlashIDE.

ded100let
12.01.2012, 02:03
КорДум, хотелось бы сделать динамично всё. Так-как подобных полей для отображения будет несколько и везде разный цвет/единицы измерения. Если выход не будет найдет, то буду вынужден убрать тусклый слой.

КорДум
12.01.2012, 02:11
Тогда есть вариант такой: Вы же знаете, сколько по ширине один символ (который не 1)? Вы можете высчитать, чем должна быть кратна ширина текстового поля (плюс 4, вроде, пикселя слева и справа минус ширина запятой). СОбственно, она будет кратна ширине неединичного символа. Так, наверно я Вас запутал.
var widthWord:int = 10; // условно, это ширина текста "0" (TextField#textWidth)
_tf.width = countNumbers * widthWord + 4 + 4 + 5; // 5 - ширина запятой
// countNumbers — количество цифр
Сколько символов тексте с цифрами Вы тоже знаете.

Котяра
12.01.2012, 02:13
А если брать по одной цифре? Они выравниваются по левому краю? Совпадают?

ded100let
12.01.2012, 02:16
Если честно, то не особо понимаю о чем Вы... Ширину буквы даже если и узнаю, то что она мне даст? Я использую TextField для отображения текстовой строки и накладываю сверху другой TextField. Сижу пытаюсь разобраться с ElementFormat и всем вытекающим.

Добавлено через 2 минуты
по одной да, даже если забить одинаковые N чисел, то они лежат одна под другой.
http://img832.**************/img832/4923/bildschirmfoto20120111u.png

Добавлено через 4 минуты
А вот если 1 на 0, то отступ остается....
http://img689.**************/img689/4923/bildschirmfoto20120111u.png

ChuwY
12.01.2012, 11:25
Отредактируйте файл шрифта.

ded100let
12.01.2012, 19:49
файл шрифта отредактировал, отступы в редакторе шрифтов у всех цифр одинаковые. После экспорта шрифта подключаю его в swf и выводит тоже самое

TanaTiX
12.01.2012, 19:58
Может есть смысл для каждого символа создавать свое текстовое поле?
При таком положении вещей как сейчас решение видится только в моноширинном шрифте.

ded100let
12.01.2012, 20:22
Разобрался! в файле шрифта не учел ширину символа и "пихал" отступы методом тыка. Теперь у символа "1" отступ справа 59, а слева 397, что в сумме с шириной символа (104) составляет 560. 560 - это величина всех символов (ширина плюс отступы). В итоге получил то, что хотел:
http://img846.**************/img846/5746/bildschirmfoto20120112u.png