Показать сообщение отдельно
Старый 19.05.2010, 19:02
SeaQuest вне форума Посмотреть профиль Отправить личное сообщение для SeaQuest Найти все сообщения от SeaQuest
  № 4  
Ответить с цитированием
SeaQuest
 
Аватар для SeaQuest

Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
Понятно. Пока что нарыл маленькое спасение в виде getTimer(), благодаря которому можно рассчитать разницу задержки. От этого можно плясать, написав свой таймер, который поддерживает паузу. А раз есть таймер с паузой, то можно написать класс менеджер всех таймеров, копирующий работу setInterval и setTimeout, но с возможностью паузы. Это позволит сделать дело практически не меняя код. Но я боюсь как бы не вышло, что я ставлю на паузу, а некоторая часть кода может выполниться не так как-нить. Всё таки 11000 чистых строк кода, а с пробелами и каментами за 15 в голове тяжело держать. Делать по вашему принципу уже поздняк. Вот так вот сначала отсутствие ТЗ, а потом требования, после "это были самые последние требования".
Вообще у разработчиков 3 скрипта хорошая трава. Спасибо хоть за getTimer().

Добавлено через 3 минуты
Кстати, вот этот код с паузой:
Код AS3:
package {
 
	import flash.utils.Timer;
	import flash.utils.getTimer;
 
	public class PerfectTimer {
 
		public var _delay:Number;
		public var _lastTime:Number;
		public var _repeat:Number;
		public var _thisTime:Number = 0;
		public var timer:Timer;
 
		public function PerfectTimer(delay:Number, repeat:uint=0):void {
			_delay = delay;
			_repeat = repeat;
 
			timer = new Timer(delay,repeat);
		}
 
		public function start():void {
			_lastTime = getTimer();
			timer.start();
		}
 
		public function pause():void {
			timer.stop();
			_thisTime = getTimer() - _lastTime;
		}
 
		public function repeat(new_delay:Number):void {
			_lastTime = getTimer();
			timer.delay = new_delay;
		}
 
		public function resume():void {
			if (_thisTime > timer.delay) {
				_thisTime = timer.delay;
			}
			timer.delay -= _thisTime;
			_lastTime = getTimer();
			timer.start();
 
			_thisTime = 0;
		}
	}
}