PDA

Просмотр полной версии : Скорость флэш-ролика!


softcat
22.01.2003, 15:23
Суть вопроса вот в чем:
есть ролик, который предполагается открывать на разных машинах с разными мощностями. То, что на моем пне 4 мелькает со ультразвуковой скоростью на машине секретарши еле ползает.
Существует ли возможность встаивания во флеш-ролик скрипта, который позволял бы, в зависимости от мощности машины, проигрывать этот ролик с той или иной частотой кадров?
Мне кажется, вопрос довольно актуальный, особенно если флеш со звуком, который синхронно должен идти вместе с анимацией.

uri-uri
23.01.2003, 05:39
Делаешь у клипа максимальную частоту кадров, например 120.
-------------------------------------- Далее речь идет об AS
С помощью таймера вычисляешь реальную. После этого, в зависимости от реальной частоты устанавливаешь коэффициент повышения скорости програмной анимации.
Всё это делаешь при событии онлоад.
И твоя лампочка будет мигать дважды в секунду при любой скорости реального проигрывания клипа. При повышенных требованиях к стабильности - проделываешь вычисление реальной частоты периодически, опять-же используя таймер.
Но это помогает только при программной анимации. При покадровой-только дискретно можно перепрыгивать через один, через 2, через 3 кадра, или как-то комбинировать (напр. через 1, на следущий, через 1, на след...), чтобы увеличить кол-во пропускаемых кадров не в 2, а в 1,5 раза. Плавности это не добавляет. Так-что ИМХУ - лучше делать программную анимацию. И тестировать на самой слабой машине.
Удачи!

softcat
23.01.2003, 14:04
Я программировать не умею :(
Я только дизайнер, поэтому могу сделать покадровую анимацию и использовать стандартные экшены, свои написать не смогу, вот такая беда...

Max N Chubin_
23.01.2003, 19:26
какой то бред...
читаю не врубаюсь...
ребзя, очнитесь!
если я загружу растр 1600x1200 и буду его скроллировать как фон в игре, то никаие программные таймеры не помогут на медленной машине двигать его быстрее!!!!!
на фига делать 120 FPS, а потом замедлять это на быстых машинах???
ставь 12 FPS и делай все на этом frameRate.
А если тормозить будет на слабой машине, то снизь качество отображения клипа и все чем ты можешь помочь компу.

2 uri-uri:
ты сам то пробовал что говоришь? Где логика?

2 softcat:
единственный способ избежать тормозов, это изначально рисовать очень аккуратную графику, без лишних деталей. отработавшие клипы выгружать или удалять. Поменьше баловаться со свойством клипов _alpha. Как можно меньше распределенного по клипам кода (особенно для события entеrFrame)! Максимально использовать досрочное завершение циклов. При проверке разных значений для одной переменной (особенно в циклах) вместо пары IF поставить один if ELSE. Оптимизировать работу с переменными:
вместо:
for(t=1;t<200;t++){
_root.dot.duplicateMovieClip("newclip"+t,t);
eval("newclip"+t)._alpha=random(100);
eval("newclip"+t)._rotation=random(180);
}

пишем:
for(t=1;t<200;t++){
n="newclip"+t;
_root.dot.duplicateMovieClip(n,t);
_root[n]._alpha=random(100);
_root[n]._rotation=random(180);
}

или даже
for(t=1;t<200;t++){
n="newclip"+t;
_root.dot.duplicateMovieClip(n,t,{_alpha:random(100),_rotation:random(180)});
}

короче головой работаем!