То, что у вас есть, должно работать нормально, но вы можете столкнуться с проблемами на медленных компьютерах, где частота кадров ниже, чем вы ожидаете.
Для плавной анимации вместо этого вы захотите прослушать событие ENTER_FRAME.Ваш метод update () должен принимать в качестве параметра дельту времени с момента последнего кадра.Вы можете использовать это для расчета времени выключения, а не за кадром.
Например:
...
// Called from your original code.
private function update():void
{
xPos += 10;
yPos += 5;
}
...
В этом случае у объекта обновления будут увеличены члены xPos и yPos на 10и 5 соответственно так часто, как вызывается событие TIMER.На медленных компьютерах процессор не сможет поддерживать скорость, а время между обновлениями будет больше и замедлит всю игру, что значительно упростит борьбу.
Обновления также не будут синхронизированы счастота кадров, в результате чего анимации выглядят прерывисто.Это происходит потому, что иногда перед повторной визуализацией холста будет более одного обновления, то есть вместо этого объект изменит свои xPos и yPos на 20 и 10 для этого кадра.
...
// Called from ENTER_FRAME with the time since the last call passed in.
private function update(deltaT:Number):void
{
xPos += 10 * deltaT;
yPos += 5 * deltaT;
}
...
В этом случаеОбновляющий объект будет изменять свои элементы xPos и yPos на 10 и 5 соответственно один раз в секунду (если ваш deltaT в секундах), независимо от того, насколько медленен процессор.Обновления также происходят один раз и только один раз за каждый раз, когда визуализируется холст, поскольку вы используете событие ENTER_FRAME.