在AS3中定义底部的无限向上滚动

时间:2014-04-01 15:31:52

标签: actionscript-3

我正在尝试制作一个带有输入数字的显示器,并在条带上方和下方显示该数字垂直居中,间隔适当。这很有效 - 我的问题是让它在零时达到最低点。我不希望负数或甚至低于零的刻度线。

您可以在此处查看相关文件: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();

}

有没有办法修改它,以便它将其行为改变为接近零,以便正确显示?

1 个答案:

答案 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
}