我正在尝试制作一个带有输入数字的显示器,并在条带上方和下方显示该数字垂直居中,间隔适当。这很有效 - 我的问题是让它在零时达到最低点。我不希望负数或甚至低于零的刻度线。
您可以在此处查看相关文件:http://www.fastswf.com/r58wGg0 在该文件中,左边是最终版本的样子(蒙版 - 给人一种无限移动的幻觉),右边是未屏蔽的,显示了动画片段和文本框的实际移动。输入数字基于鼠标位置,因此请慢慢移动鼠标以查看操作。
这是我的代码。
var labelSpacing = 500;
var tickSpacing = 18;
function updatePosition(currentValue){
tape.y = ((currentValue/100)%5)*tickSpacing;
current.y = (((currentValue/100)%5)*tickSpacing)+170.85;
plus1.y = (((currentValue/100)%5)*tickSpacing)+82.85;
minus1.y = (((currentValue/100)%5)*tickSpacing)+259.9;
current.text = (Math.floor(currentValue/labelSpacing)*labelSpacing).toString();
plus1.text = (Math.floor(currentValue/labelSpacing)*labelSpacing+labelSpacing).toString();
minus1.text = (Math.floor(currentValue/labelSpacing)*labelSpacing-labelSpacing).toString();
}
有没有办法修改它,以便它将其行为改变为接近零,以便正确显示?
答案 0 :(得分:0)
嗯,通常这些指标允许显示低于零的值。但是,出于您的目的,您可以在计算中使用有限的currentValue
,但如果您需要根据实际currentValue
显示其他内容,请保留旧值。
function updatePosition(currentValue:Number):void {
var cappedValue:Number=currentValue;
cappedValue=Math.max(cappedValue,1.0*labelSpacing);
// experiment with this constant ^^^ to achieve desired result in production
tape.y = ((cappedValue/100)%5)*tickSpacing;
// and use cappedValue in place of currentValue in calculations
// rest of code
}