![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Nov 2001
Адрес: spb.ru
Сообщений: 177
|
2sergwizard
Я не собираюсь никого срамить просто написал то, что сам проверял. Прошу прощения за задержку. Народ, не трите свои наработки, даже если они, как вам кажется, больше не нужны. Я весь комп перерыл - нихрена... Пришлось заново писать. Такчта вот, применительно к твоей задаче подойдет такое решение: Пускай TxtField - текстовое поле, Picture - мувик, содержащий картинку, которую надо "обтекать". Оба этих мувика лежат в каком-то третьем мувике. Тогда в этом третьем пишем: TxtField.text = "";
// Собственно сам текст
text = "Text text text....";
PicWidth = Picture._width; // Ширина картинки
PicHeight = Picture._height; // Высота картинки
// Стиль первой части текста (отступ равен ширине картинки)
firstblock = new TextFormat();
firstblock.leftMargin = PicWidth;
// Стиль второй части текста (отступ равен нулю, т.е. в полную ширину текстового поля)
// для наглядности - другой цвет
secondblock = new TextFormat();
secondblock.leftMargin = 0;
secondblock.color = 0x0000cc;
Selection.setFocus("TxtField"); // необходимо, чтобы Selection работал именно с этим полем, а не с другим
var char = 0;
// Заполнение текстового поля до высоты картинки
// (пока нижняя граница текста не перевалит за грницу картинки)
TxtField.setNewTextFormat(firstblock);
while ((char < text.length)&&(TxtField.textHeight < PicHeight)) {
Selection.setSelection(TxtField.text.length, TxtField.text.length);
TxtField.replaceSel(text.charAt(char));
// можно было просто сделать TxtField.text += text.charAt(char),
// но НЕЛЬЗЯ, т.к. это "ломает" все форматирование ранее введенного в поле текста
trace ("\"" + text.charAt(char) + "\" - " + TxtField.textHeight);
char ++;
}
// Заполнение поля остальным текстом
TxtField.setNewTextFormat(secondblock);
while (char < text.length) {
Selection.setSelection(TxtField.text.length, TxtField.text.length);
TxtField.replaceSel(text.charAt(char));
trace ("\"" + text.charAt(char) + "\" - " + TxtField.textHeight);
char ++;
}
Вывод: на форматирование строки влияет тоько формат ее первого символа (имеется в виду форматирование типа отступов и т.д., а не цвет или размер шрифта). Игрушка прилагается =P. Жду вопросов. |
|
|||||
|
Регистрация: Nov 2001
Адрес: spb.ru
Сообщений: 177
|
2sergwizard
Я не собираюсь никого срамить просто написал то, что сам проверял. Прошу прощения за задержку. Народ, не трите свои наработки, даже если они, как вам кажется, больше не нужны. Я весь комп перерыл - нихрена... Пришлось заново писать. Такчта вот, применительно к твоей задаче подойдет такое решение: Пускай TxtField - текстовое поле, Picture - мувик, содержащий картинку, которую надо "обтекать". Оба этих мувика лежат в каком-то третьем мувике. Тогда в этом третьем пишем: TxtField.text = "";
// Собственно сам текст
text = "Text text text....";
PicWidth = Picture._width; // Ширина картинки
PicHeight = Picture._height; // Высота картинки
// Стиль первой части текста (отступ равен ширине картинки)
firstblock = new TextFormat();
firstblock.leftMargin = PicWidth;
// Стиль второй части текста (отступ равен нулю, т.е. в полную ширину текстового поля)
// для наглядности - другой цвет
secondblock = new TextFormat();
secondblock.leftMargin = 0;
secondblock.color = 0x0000cc;
Selection.setFocus("TxtField"); // необходимо, чтобы Selection работал именно с этим полем, а не с другим
var char = 0;
// Заполнение текстового поля до высоты картинки
// (пока нижняя граница текста не перевалит за грницу картинки)
TxtField.setNewTextFormat(firstblock);
while ((char < text.length)&&(TxtField.textHeight < PicHeight)) {
Selection.setSelection(TxtField.text.length, TxtField.text.length);
TxtField.replaceSel(text.charAt(char));
// можно было просто сделать TxtField.text += text.charAt(char),
// но НЕЛЬЗЯ, т.к. это "ломает" все форматирование ранее введенного в поле текста
trace ("\"" + text.charAt(char) + "\" - " + TxtField.textHeight);
char ++;
}
// Заполнение поля остальным текстом
TxtField.setNewTextFormat(secondblock);
while (char < text.length) {
Selection.setSelection(TxtField.text.length, TxtField.text.length);
TxtField.replaceSel(text.charAt(char));
trace ("\"" + text.charAt(char) + "\" - " + TxtField.textHeight);
char ++;
}
Вывод: на форматирование строки влияет тоько формат ее первого символа (имеется в виду форматирование типа отступов и т.д., а не цвет или размер шрифта). Игрушка прилагается =P. Жду вопросов. |
|
|||||
|
Регистрация: Nov 2001
Адрес: spb.ru
Сообщений: 177
|
Без прикола, конечно, не обошлось!
Это же надо было эту хрень два раза отсылать... СПАСИБА моеу провайдеру за "СВЕРХСКОРОСТНОЙ" инет. |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
2 Diomas
Решение непростое, но красивое. Рад, что ты его показал. Отдельное спасибо за replaceSel. Интересно увидеть, что новый формат может вступать в силу не только посреди строки, но и посреди слова. Просто, очень часто встречал здесь, на форуме "советчиков", которые советуют, сами не понимая что. Сначала мне показалось, что и ты из таких. Если я прилюдно усомнился в твоих возможностях, то и извинения свои приношу тоже прилюдно. My respect.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
![]() |
Часовой пояс GMT +4, время: 03:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|