Просмотр полной версии : Textfield.autoSize в Flash 8 отсекает последнюю строку.
Аттчу клип в котором есть текстовое поле. Выставляю у текстового поля autoSize = true, далее пишу в него текст, но у текста пропадает последняя строка. Не подскажите в чём может быть дело и как эту проблему решить.
this.target.items.attachMovie(ex_name, name_item, this.target.items.getNextHighestDepth(), {_y: y_pos});
this.target.items[name_item].onRelease = DelegateExt.create(this, select_item, i);
this.target.items[name_item].text_mc.itext.autoSize = true;
this.target.items[name_item].text_mc.itext.text = this.items[i].name;
Текстовое поле уже есть в муви клипе.
Код ничего не говорит.
Приведи пример текста, пример TextFormat и параметров TextField, при которых возникает данный косяк.
Да я впринципе и думал что он ничего не скажет.
Начал копаться в опцях текстового поля. Это происходит из-за отрицательного значения Line Spacing
А задумка такова, что он обязательно должен быть отрицательным.
вот часть из дебага.
thickness = 0,
variable = "txt",
restrict = ,
antiAliasType = "normal",
selectable = false, background = false, sharpness = 0, length = 10,
maxhscroll = 0,
text = "Что-то ещё",
styleSheet = , borderColor = 0, textWidth = 59, scroll = 1,
bottomScroll = 1, wordWrap = true, maxChars = , hscroll = 0,
filters = ] [], html = false,
gridFitType = "pixel",
tabIndex = ,
htmlText = "Что-то ещё",
type = "dynamic",
textHeight = 13,
autoSize = "left",
border = false, password = false, maxscroll = 1, embedFonts = true,
textColor = 10921638, backgroundColor = 16777215, condenseWhite = false, multiline = true,
mouseWheelEnabled = true
>>Да я впринципе и думал что он ничего не скажет.
если ты полагаешь, что эта 'часть из дебага' о чем-то говорит, то увы..
как вариант: добавляй к тесту "\n" и пусть его пропадает..
\n я по некоторым причинам добавлять не хочу. Вообще странный глюк.
Я бы не назвал это глюком.
Dendroid
11.10.2006, 04:54
Это не совсем баг, просто autosize работает очень тупо:
высота поля = (высота строки + межстрочный отступ)*(количество строк)
Поэтому даже при положительном line space высота будет подсчитываться не совсем корректно, она будет больше на межстрочное расстояние (включите бордер у поля, чтобы убедиться). Это заметно, если надо точно позиционировать поля, но никто не жалуется, т.к. все строки на месте. А вот если расстояние между строками отрицательное - получаем высоту поля меньшую ровно на это самое межстрочное расстояние, а ведь рендерер текста выводит только полностью вместившиеся строки. По идее-то правильная формула была бы: высота поля = (высота строки)*(количество строк)+(межстрочный отступ)*(количество строк-1).
Ну так сами и доведём до этой формулы:
_txt.autoSize = "left";
_txt.text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc fermentum. Praesent nonummy libero a ligula. Praesent tempor euismod ante. Nulla magna neque, fermentum et, laoreet sed, fringilla id, libero. Nunc gravida malesuada nibh. Nunc ut odio. In hac habitasse platea dictumst.";
var realHeight = _txt._height-_txt.getTextFormat().leading;
_txt.autoSize = "none";
_txt._height = realHeight;
Этот код отлично у меня работает уже в нескольких компонентах :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.