你里面有一堆这样的代码 其一: @scroll.y -= 168 /(@item_max / @column_max) 理论上说,这个168应是161(168-7) 其二:连续整数除法的取整舍入误差太大了 应该先更新@index,然后让然后你再去直接算新的@scroll.y 其三:滚动条的跟随有问题 还有,你的@scroll.y跟着光标走,这是错的,你去看系统的滚动条,都是跟滚动屏(top_row,或者window_base里的oy)走的,哪有跟光标走的啊…… |
在Window_Selectable中有一些属性与滚动条的计算有关 例如你的窗口能显示5条信息,一共有15条信息,那么不考虑上下箭头的话,滚动条的高度就是5 滚动粒的高度(以及它的位置)和窗口的总状态数有关,窗口最上面显示0-4条,最下面显示10-14条, 一共有11个位置 所以滚动粒的高度就是5/11,这样它的11个位置分别是: 当窗口显示0-4时,滚动粒的顶部为0,占据0到5/11的位置 当窗口显示1-5时,滚动粒的顶部为5/11,占据5/11到10/11的位置 …… 当窗口显示10-14时,滚动粒的顶部为4 6/11,占据4 6/11到5的位置 而窗口总条数由@item_max决定,显示哪些条是由self.top_row(可读写属性)决定的 滚动粒的位置这么计算 其高度= @height / (@item_max - (@height / 32) + 1) 其位置(顶端)= @height * (self.top_row) / (@item_max - (@height / 32) + 1) 这里面32是默认的条目高度 另外滚动条要自己建一个bitmap,不要放在content_bitmap上,不然它会随内容上下滚动。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-30 14:28
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.