анимация измерителя мощности - PullRequest
0 голосов
/ 02 августа 2011

В настоящее время я работаю над индикатором мощности во флэш-игре для игры в рыбалку, в которой пользовательские вводы мыши определяют вертикальную мощность датчика, имеется прямоугольник контейнера 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;
    }

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

Если вы ограничите количество пикселей, которые пользователь должен переместить мышью, чтобы заполнить измеритель мощности диапазоном [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.
0 голосов
/ 02 августа 2011

Как насчет _diff = value/10;?

Я не могу дать вам лучший совет, потому что я не совсем уверен, что делает ваш код.Например: где loop называется?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...