我目前正在使用闪光灯中的功率计进行钓鱼游戏,其中用户鼠标输入确定仪表的垂直功率,有一个容器矩形MC,以及一个由1个高度组成的仪表矩形,仪表高度根据mouseStart事件和mouseMove事件计算出的差异进行调整,是否有更好的计算方法?因为目前略有差异会导致仪表出现大幅“跳跃”。
杆的功能。private function touchStarted(evt:MouseEvent):void
{
startY = evt.stageY;
}
private function rotateTurret(evt:MouseEvent):void
{
trace("rot "+rotation);
endY = evt.stageY;
if (startY != 0)
{
difference = startY-endY ;
txt.text = difference.toString();
_powerMeter.increment(difference);
}
}
功率计功能
private function loop(e:Event):void
{
fill.height += _diff;
if (fill.height >= 200 )
fill.height = 200;
if (fill.height < 0)
fill.height = 0;
}
public function increment(value:Number):void
{
_diff = value;
}
答案 0 :(得分:0)
_diff = value/10;
怎么样?
目前我无法给你更好的建议,因为我不完全确定你的代码是做什么的。例如:loop
在哪里调用?
答案 1 :(得分:0)
如果限制用户必须移动鼠标以将功率计填充到[0..1]范围内的像素数,则更容易将功率计与实际鼠标移动分开。
您可以将difference
除以所需的总长度,作为完全填充功率计所需的最大像素数。
更新后的rotateTurret
函数可能如下所示:
if(startY != 0) {
var maxPixelsNeeded:Number = 300.0;
difference = (startY-endY) / maxPixelsNeeded;
// -- same as before
}
您还需要更改循环函数,因为_diff变量现在将在[0..1]范围内,以:
fill.height = _diff * 200; // Where 200 is the max height of the power meter.