Показать сообщение отдельно
Старый 04.06.2011, 21:22   #3
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Правильная загрузка

Можно заставить исходный код работать корректно, если поменять скобки местами в fillRect:
fillrect(7, 7, (progress * gauge_w) / 100, gauge_h);
Допустим что ширина экрана = 240
Тогда gauge_w = 226
В вашем изначальном коде формула задана как progress * (gauge_w / 100).

При выполнении с progress = 100 выполняются следующие операции:
n = gauge_w = 226
n = n / 100 = 2 (переменная целочисленная - дробная часть отброшена)
n = n * progress = 200
ширина = 200 (должно было быть 226)

Если поменять порядок скобок на упомянутый мной, то действия будут изменены на:
n = progress = 100
n = n * gauge_w = 22 600 (к счастью, максимальное значение целочисленной 2 147 483 64
n = n / 100 = 226 (успех!)

В случае, когда производится большое количество прорисовок экрана, использование целочисленных может оказатся выгоднее чем использование несомненно хорошего, но медлительного класса Real из MP.
Надеюсь эта информация оказалась полезной.
Хорошего дня.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Trazzy (05.06.2011)