Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.07.2013, 13:50
Hamid вне форума Посмотреть профиль Отправить личное сообщение для Hamid Найти все сообщения от Hamid
  № 1  
Ответить с цитированием
Hamid

Регистрация: Aug 2011
Сообщений: 65
Attention Баг в текстовом поле

Всем привет, объясните мне пожалуйста почему так происходит, пока мой мозг не улетел в космос!

Просто запустите код и посмотрите что печатает, а печатает вот что:
test 0 = (x=0, y=-107374182.4, w=11, h=0)
test 1 = (x=2, y=2, w=11, h=15)

Код AS3:
            var tmpText:TextField = new TextField();
            tmpText.width = 0; //Or tmpText.height = 0;
            tmpText.autoSize = TextFieldAutoSize.LEFT;
            tmpText.htmlText = 'What the hell?';
            trace('test 0 = ' + tmpText.getCharBoundaries(0));
            tmpText.x;
            trace('test 1 = ' + tmpText.getCharBoundaries(0));

Старый 12.07.2013, 14:31
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 2  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Наверное тот кто написал TextField
И в следующий раз называйте нормально тему, случай интересный, а тему наверное закроют за неподобающее название.
__________________
Oomph

Старый 12.07.2013, 14:41
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А что тут объяснять-то? По-моему все очевидно.
Текстфилд создается, у него есть определенные свойства по умолчанию. Далее при вызове геттера Х положения всего, входящего в текст филд обновляется. Он понимает, что появился текст и пересчитывает положения и размеры. И не важно присваивается значение Х переменной или геттер просто вызывается

Старый 12.07.2013, 15:44
Hamid вне форума Посмотреть профиль Отправить личное сообщение для Hamid Найти все сообщения от Hamid
  № 4  
Ответить с цитированием
Hamid

Регистрация: Aug 2011
Сообщений: 65
Цитата:
Сообщение от AlexLucas Посмотреть сообщение
Наверное тот кто написал TextField
И в следующий раз называйте нормально тему, случай интересный, а тему наверное закроют за неподобающее название.
Да, с названием темы погорячился Этот баг просто мозг мне вынес.

Старый 12.07.2013, 15:45
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 5  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Если убрать autosize ничего не обновится.
Если задать текстовому полю большую ширину (в случае этого текста это более 4 пикселей), а потом опять сжать его до 0 задаются те же странные значения, видимо где-то пытается экономить т.к. буквы сжимаются до нулевой высоты.
Так что это не по умолчанию, а высчитывается криво наверное. И autosize этому как-то мешает.
Нормально на всё ответить могут только разработчики.
И зачем в геттере-то всё пересчитывать ?
__________________
Oomph

Старый 12.07.2013, 16:17
Hamid вне форума Посмотреть профиль Отправить личное сообщение для Hamid Найти все сообщения от Hamid
  № 6  
Ответить с цитированием
Hamid

Регистрация: Aug 2011
Сообщений: 65
Цитата:
Сообщение от caseyryan Посмотреть сообщение
А что тут объяснять-то? По-моему все очевидно.
Текстфилд создается, у него есть определенные свойства по умолчанию. Далее при вызове геттера Х положения всего, входящего в текст филд обновляется. Он понимает, что появился текст и пересчитывает положения и размеры. И не важно присваивается значение Х переменной или геттер просто вызывается
Да мне тоже так показалось, причем метод get x,y. Заметил еще один баг! Когда выравнивание текста делаю по центру и узнаю координаты одного из символов, то возвращает не правильно, как будто текст еще не выровнялся по центру! Как с этим быть? Может кто такое замечал?

Добавлено через 9 минут
Нашел ошибку! Но не ту про которую пишу в теме, а еще одну getCharBoundaries не правильно работает. По идее он возвращает прямоугольник относительно начала координат текста, но если применить autosize, то криво считает. Допустим у нас текст "тесТ", ищем прямоугольник последней буквы "Т", предположим, что буквы шириной по 10 пикселей, тогда координата последней буквы по х = 30, это так если
Код AS3:
autosize = TextFieldAutoSize.LEFT
Но если сделать
Код AS3:
autosize = TextFieldAutoSize.CENTER
, то он текст перемещается в координаты -20 по х, ну логично, зато теперь х последней буквы не 30, а 10. Т.е. он считает не относительно текста, а х(буквы "Т") = х(относительно начала текст) - х(смещение тектса) и для
Код AS3:
autosize = TextFieldAutoSize.CENTER
то же правило.

И немного вопрос не по теме: форум только у меня раз через 10ый раз грузится или у всех? вроде другие сайты норм.

Добавлено через 13 минут
Цитата:
Сообщение от AlexLucas Посмотреть сообщение
Если убрать autosize ничего не обновится.
Если задать текстовому полю большую ширину (в случае этого текста это более 4 пикселей), а потом опять сжать его до 0 задаются те же странные значения, видимо где-то пытается экономить т.к. буквы сжимаются до нулевой высоты.
Так что это не по умолчанию, а высчитывается криво наверное. И autosize этому как-то мешает.
Нормально на всё ответить могут только разработчики.
И зачем в геттере-то всё пересчитывать ?
"Если убрать autosize ничего не обновится." - это правильно, ибо если нет автовыравнивания, то зачем размеры менять какие заданы, те и остаются. "И autosize этому как-то мешает." - да у метода getCharBoundaries крышу сносит, когда у текста нет размера, видимо проверку забыли поставить, НО я то после задания авторазмера и текст задаю, а он не обновляет размер при этом что ли? По гет методу согласен, это более чем странно.

Старый 12.07.2013, 19:56
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 7  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
почему не использовать обычный
Код AS3:
textField.textWidth
textField.textHeight
?
__________________
return this...

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
bug , TextFieldAutoSize , TextFiled

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.