Показать сообщение отдельно
Старый 26.09.2011, 17:33
flax4Noob вне форума Посмотреть профиль Отправить личное сообщение для flax4Noob Найти все сообщения от flax4Noob
  № 5  
Ответить с цитированием
flax4Noob

Регистрация: Jan 2011
Сообщений: 70
А как-то можно сделать чтобы событие не генерилось пока я его не обработаю? Флешка успешно "дохнет" где-то через минуту. Хотя там всего-то 200 клеточек и в одной из них стоит нолик с анимацией =/ Однака тормоза такие, что жуть. На всякий случай кусочки кода.

Код AS3:
function animateAll(e:Event):void{
			var i:uint;
			var j:uint;
			for ( i=0; i < Width; i++) {
				for ( j=0; j < Height; j++) {
					cells[i][j].doAnimation();
				}
			}
 
		}
В каждой клетке может быть несколько Анимационных объектов, поэтому там тоже цикл.

Код AS3:
public function doAnimation():void{
 
			//-- цикл по всем объектам.
			for (var index:* in zObjects) {
				//-- это чо-та не работает, поэтому я тупо убрал не-анимационный мусор пока что для теста.
				//if (zObjects[index] is AnimatedObject){
					zObjects[index].draw();
				//}	
			}
 
		}
И код для единственного объекта на этом поле:

Код AS3:
public function draw():void{
 
			var lt:uint = getTimer();
			var delta:uint = lt-lastUpdate;
			if(delta>timePerFrame){
				var rest:uint=delta % timePerFrame; //--остаток от деления, мы его сохраняем.
				var framesPass:uint=(delta-rest)/timePerFrame; //-- сколько кадров надо было отрисовать за это время.
				lastUpdate = lt-rest;//--остаток, который не посчитали учитываем при подсчете в следующий раз.
 
				if (framesPass>0){
 
					frame = frame+framesPass;
					while  (frame>framesCount){
						frame = frame-framesCount
					}
 
 
					var n:Graphics = this.graphics;
					// рисуем круг.
					n.beginFill(0x0000EE,1);
					n.lineStyle(1, 0x111111);
					n.drawCircle(0, 0, 5);
					//-- рисуем линию, которая "бегает" вниз. Вполне смотрибельно для теста.
					n.lineStyle(1, 0x00EEEE);
					n.moveTo(-5,frame-5)
					n.lineTo(5,frame-5);
 
				}
			}
 
		}
Вроде как все нормуль, кружок, линия бегает вниз. Анимация... но секунд через 40 все плавно переходит в "слоу-мошн" и в дельнейшем на клики флешка реагирует очень вяло.

Добавлено через 5 минут
Цитата:
Сообщение от flax4Noob Посмотреть сообщение
Код AS3:
 
					frame = frame+framesPass;
					while  (frame>framesCount){
						frame = frame-framesCount
					}
Не ржать Забыл я про "%" в суете этой с анимацией...

Добавлено через 20 минут
Все пучком, забыл graphics очистить в анимации перед перерисовкой круга и линии. Прошу пардона. Спешим-с.... =/

Всем спасибо.