现实问题以及对设计的影响:
1。 表达的数值范围过大时,画面显示精度不足
比如纵向滚动条高度100像素,而实际要表达的数值范围是1至10000,则0.01像素代表数值跨度1。
要知道,显示器最小的显示单位是1像素,如果数值跨度不足100,都不能使像素点移动1个单位,视觉上滚动条没有变化的,即表达的数值和视觉的变化是不匹配的。
==〉功能需求上,滚动条位置的绝对精确是没有意义(过剩设计),设计上不需要数学上的严格计算。
2。浮点数计算有精度失真问题
无论什么开发语言,在浮点数计算方面,都存在精度问题。
==〉滚动条不需要金融软件那样高精度的设计。
3。显示对象的x、y、width、height的数值精度
==〉上述属性是Number类型。Number数值的小数位数可以很多,比如10.123456789。
但是这些属性是用于在屏幕上显示的属性,屏幕的显示最小单位是像素。那么如果width=10.123456789,代表的将是10.123456789宽度的像素。小数点后面过多的位数对于像素而言无法在屏幕上描绘。因此过多的小数点位数没有存在的意义。所以FlashPlayer将保留小数点2位,其余舍弃。
这种特性也造成了计算结果的失真。
设计
1。当按下按钮(上一条/下一条/上一页/下一页 )时,应根据当前代表的数值和每页代表的数值跨度进行数值的精确计算,然后根据数值对滑块的位置进行不精确的计算。
2。当拖动滑块并释放后,应根据滑块位置计算对应的数值。因为滑块的位置时不精确的,因此计算出来的对应的数值也是非精确的。这是可以被接受的。特别是表达的数值范围很大的时候。
3。滑块高度的计算
滑块高度 = 滑竿高度 / 翻页页数 ,然后
滑块高度 = 向下取整(滑块高度) 或 向上取整(滑块高度)