webern
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору The Unforgiven Xant1k Как уже правильно сказали, переменную "txt" НЕЛЬЗЯ комментировать, т.к. в дальнейшем она используется в скрипте , иначе краш. Скрипт использует переменную "txt" для вывода информации всего в двух разных случаях: 1. Когда трек не воспроизводится, то всегда выводится надпись "Foobar2000 1.1.6 Fleshgrinder", под которую изначально жестко выделено пустое пространство шириной 148 пикселей для вывода текста некой длины. Для краткости назову это пространство "ячейкой". Это задано здесь (строка 81 скрипта): Код: function get_txt_length() { if (!fb.PlaybackLength) { return 148; // "ячейка" в 148 пикселей для надписи "foobar2000 1.1.6 Fleshgrinder" } return Math.floor((TimeFmt(fb.PlaybackLength) + " / " + TimeFmt(fb.PlaybackLength)).length * 5); } | Если же в строке 101 скрипта просто написать var txt = "", то "ячейка" конечно останется той же ширины - ведь Вы всего лишь поместили в переменную txt некое значение, но не изменили ширину "ячейки". 2. Когда трек проигрывается, то эта же переменная "txt" используется для вывода времени проигрывания трека в "ячейке", ширина которой теперь меньше 148-ми пикселей. Т.е. надпись "Foobar2000 1.1.6 Fleshgrinder" просто заменяется на что-то вроде "0:01 / 6:34", и происходит это всё в той же "ячейке". Однако, в отличие от первого случая (жесткие 148 пикселей), здесь при проигрывании трека, ширина "ячейки" вычисляется функцией get_txt_length() под длину строки "0:01 / 6:34", а сама "ячейка" перерисовывается в соответствии с этой шириной. Вычисление новой ширины ячейки происходит здесь (строка 85 скрипта): Код: return Math.floor((TimeFmt(fb.PlaybackLength) + " / " + TimeFmt(fb.PlaybackLength)).length * 5); | Перерисовка "ячейки" осуществляется здесь (строка 143 скрипта): Код: gr.DrawString(txt, g_font, RGB(160, 160, 160), get_txt_length(), 0, ww, wh, StringFormat(align_right, align_top, trim_no, flag_nowrap | flag_noclip)); | Что можно с этим сделать по-простому? Опытным путём выяснить какой максимальной длины может быть "ячейка" с циферками при проигрывании трека (у меня, на вскидку, получилось 66 пикселей), и затем в функции get_txt_length() (строка 81 скрипта) вместо return 148; прописать return 66; (или какое у Вас получится число). Теперь в строке 101 скрипта вместо var txt = "foobar2000 1.1.6 Fleshgrinder"; можно написать var txt = ""; Если что - сообщайте. | Всего записей: 1026 | Зарегистр. 04-11-2004 | Отправлено: 23:58 09-05-2012 | Исправлено: webern, 01:06 10-05-2012 |
|