Просмотр полной версии : Через много лет дошло, как сильно увеличивает размер ролика в килобайтах вращение...
Через много лет дошло, как сильно увеличивает размер ролика в килобайтах вращение и скейл. :wacko:
Ролик из 1000 кадров, 1 объект, два кейфрейма - в 1ом и 1000ом, произвожу с ним разные действия.
стоит на месте 1000 кадров 1100 байт
альфа 1000 кадров 1752 байт
перемещение 1000 кадров 3668 байт
scale 1000 кадров 7153 байт
вращение 360 гр. 1000 кадров 13704 байт
Он что, скейл и вращение не может считать по ходу дела, он записывает размер и угол поворота в каждом кадре? Идиотизм.
А как быть, когда каждый байт на счету, а покрутить и поскейлить надо?
Например, в баннерах?
Action-скриптом крутить и скейлить?
А как рассчитать время, чтобы, скажем, за 1000 фреймов или 50 сек объект совершил поворот на 360 градусов?
Если тебе важен размер, то делай скриптом, если тебе важна скорость, то делай моушин твином.
И что значит 50 секунд? ФПС может быть разным. Если фпс 30, то оборот за кадр 360/50*12
cx = 0;
this.onEnterFrame = function () {
this._rotation = (cx++) * (360 / (50 * 30));
};
Важно записать (360 / (50 * 30) именно в скобках, тогда флеш подсчитает это значение только один раз и больше не будет его пересчитывать.
Можно конечно подсчитать и заранее, но тогда при изменнени одного из значений, вам придется считать заново, не лучше ли это поручить флешу?
А как рассчитать время, чтобы, скажем, за 1000 фреймов или 50 сек объект совершил поворот на 360 градусов?
Прочитать про onEnterFrame и setInterval
Дополню себя, можно еще использовать класс Tween, там можно задавать время в секундах.
whiteRed
30.08.2006, 10:38
Важно записать (360 / (50 * 30) именно в скобках, тогда флеш подсчитает это значение только один раз и больше не будет его пересчитывать.
здОрово! не знал:eek:
motor4ik
30.08.2006, 10:43
че серьезно? это всегда так было чтоль? про скобки? я тоже блин не в курсе был...
Можно легко проверить, написав тестовую флешку со скобками и без них и декомпельнув ее, посмотреть результат.
че то я не догоняю! ведь в скобках числа, а не переменные. Флеш че разные значения выдавать будет?
whiteRed
30.08.2006, 13:15
че то я не догоняю! ведь в скобках числа, а не переменные. Флеш че разные значения выдавать будет?
нет, но он может каждый раз считать это выражение заново
нет, но он может каждый раз считать это выражение заново
Так будет, так как в данном случаи это константы.
p = Math.PI;
pi = 10
////
rad1 = grad * (Math.PI / 180); // случай 1
rad2 = grad * (pi / 180); //случай 2
Случай 1. Math.PI - константа, поэтому перевод в радианты будет содержать только одно действие, это умножение grad на 0.0174532925199433
Случай 2. pi - уже переменная, потому будет сначало деление на 180, а потом умножение на 3.141592653589793
Ага. Key.ALT — тоже в число превратится.
whiteRed
30.08.2006, 13:52
2iNils
вопрос не в том
rad1 = grad[1] * (Math.PI / 180);
rad2 = grad[2] * (Math.PI / 180);
rad3 = grad[3] * (Math.PI / 180);
в первой строке полюбому придется считать (Math.PI / 180)
вопрос в том - будет ли это выражение считаться в остальных строчках
(Math.PI/180) преобразуется в число при компиляции.
whiteRed
30.08.2006, 14:00
все, я догнал!:victory:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.