Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   когда тормозят анимации (http://www.flasher.ru/forum/showthread.php?t=94576)

Юрчик 15.04.2007 23:53

когда тормозят анимации
 
Привет.
Я столкнулся с одной проблемой:
у меня три анимации на одной сцене, когда вывожу две - все ровно,
но если я добавляю третью - анимации начинают притормаживать и воспроизводятся то нормально, то медленно. В итоге получается не очень красивое зрелище. вес файла около 65 kb. количество fps - 120.
Подскажите пожалуйста где можно найти ответ на эту проблему.
Я не программист и анимации делал анимационно. Слышал что можно убирать режим времени, но как и поможет ли это в данной ситуации - не знаю.
Заранее спасибо.

aksios 16.04.2007 00:16

не реальный fps

Kikasso 16.04.2007 00:21

Ставьте 31 кадр в сек. Это волшебное число.

etc 16.04.2007 01:05

Юрчик, а у тебя Oblivion 120 fps показывает?

Юрчик 16.04.2007 13:18

Цитата:

Сообщение от __etc
Юрчик, а у тебя Oblivion 120 fps показывает?

в смысле? я не понял:(

Юрчик 16.04.2007 13:24

поставил 31- чудеса:umnik2: :umnik2: :umnik2:
Все ровно, но почему??? теоретически не не должно быть так:eek:

CorC 16.04.2007 13:33

Вам же написали: "Это волшебное число"
По поиску на эту тему не пробовали искать?

З.Ы.: Oblivion - это ES4 игра такая :)

k0zer 16.04.2007 15:36

Цитата:

Сообщение от CorC
Вам же написали: "Это волшебное число"
По поиску на эту тему не пробовали искать?

Я искал - не нашел. Будь добр, просвети? :))

aksios 16.04.2007 15:47

Цитата:

Сообщение от k0zer
Я искал - не нашел. Будь добр, просвети? :))

Просто человек воспринимает максимум 24 кадра в сек., с учетом тормозов браузера, плеера и т.п. берут частоту 28-32 кадра в сек.;)

k0zer 16.04.2007 16:49

А почему именно 31? )) А не 30?
30 - число круглое, и во многих видео стандартах эта цифра присутствует

etc 16.04.2007 17:03

Причем тут флеш и видео-стандарт?

k0zer 16.04.2007 17:54

подумай

etc 16.04.2007 18:12

Не вижу связи. Флеш это флеш, видео — это видео.

_bkt 16.04.2007 18:21

http://flash-ripper.com/archives/000851.php - статья называется "Волшебная Частота, 21 и 31 FPS"

ARTur2 16.04.2007 19:40

А как быть если магическое число 31 на сработало??? Конкрентно меня интересует, как можно оптимизировать графику в целом(по поиску ничего конкретного не нашёл)?

etc 16.04.2007 19:41

Уменьшить количество прозрачности, узловых точек и вообще уменьшить количество одновременно отображаемых объектов, использовать cacheAsBitmap, а также перевод некоторой векторной графики в растровую.

ARTur2 16.04.2007 19:55

А что такое cacheAsBitmap?Опять же в поиске нашёл, что некорорые советуют его включить, а как и что это никто не говорит...
У меня ещё такой вопрос. Есть клип(вмоём случае это карта города), в клипе несколько слоёв(дороги, дома, леса и т.д.). Все эти "элементы" у меня в виде графики, причём её я обрисовывал сам, и если я правильно понимаю всю суть - это вектор. Можно ли преобразовать её в растр?

etc 16.04.2007 19:59

Про cacheAsBitmap исчерпывающая информация в документации к Flash 8.
По второму вопросу: да, можно либо внешним редактором, либо опять же, включить использование кеширования в битмап (объект будет преобразовываться в битмап налету, только для карты данный момент метод врядли подойдет).

ARTur2 16.04.2007 20:04

хорошо, поробую разобраться. Большое спасибо за совет!

ARTur2 16.04.2007 20:12

Вот пример из хелпа:
Код:

function clickBtn():Void {
        var circleClip:MovieClip;
        for (var i:Number = 0; i<circlesArr.length; i++) {
                circleClip = circlesArr[i];
                circleClip.cacheAsBitmap = !circleClip.cacheAsBitmap;
        }
}

не могли бы Вы объяснить что это за функция... ?

etc 16.04.2007 20:20

В хелпе такого примера нет.
Изучаем: http://livedocs.adobe.com/flash/9.0/main/00001899.html

ARTur2 16.04.2007 20:21

Вроде бы разобрался и в свой код:
Код:

public function Navigator() {
          this.onLoad = function() {
              this.createEmptyMovieClip("picture", this.getNextHighestDepth());
              this.createEmptyMovieClip("viewArea", this.getNextHighestDepth()).createEmptyMovieClip("mask", this.getNextHighestDepth());
              this.createEmptyMovieClip("redRect", this.getNextHighestDepth());
              this.createEmptyMovieClip("clickArea", this.getNextHighestDepth());
              this.picture.attachMovie(this.mc, "my_mc", this.getNextHighestDepth());
              this.viewArea.attachMovie(this.mc, "my_mc", this.getNextHighestDepth());

добавил следущее:
Код:

public function Navigator() {
          var my_mc:MovieClip;          this.onLoad = function() {
              this.createEmptyMovieClip("picture", this.getNextHighestDepth());
              this.createEmptyMovieClip("viewArea", this.getNextHighestDepth()).createEmptyMovieClip("mask", this.getNextHighestDepth());
              this.createEmptyMovieClip("redRect", this.getNextHighestDepth());
              this.createEmptyMovieClip("clickArea", this.getNextHighestDepth());
              this.picture.attachMovie(this.mc, "my_mc", this.getNextHighestDepth());
              this.viewArea.attachMovie(this.mc, "my_mc", this.getNextHighestDepth());
                          my_mc.cacheAsBitmap = !my_mc.cacheAsBitmap;              this.viewArea.setMask(this.mask);

но по-моему ничего не изменилось... тормозов меньше не стало... Может я что-то не правильно делаю?

по поводу примера он у меня тут лежит : boot drive\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\CacheBitmap.

etc 16.04.2007 20:26

Так надо читать справку!

Зачем объявлять onLoad в конструкторе? Вы же не на AS1 пишете, так ведь? Объявите метод onLoad, как полагается. А в конце добавить:
Код:

this.cacheAsBitmap = true;
Только лучше cacheAsBitmap ставить непосредственно на ролик с картой.

ARTur2 16.04.2007 21:27

БОЛЬШОЕ ВАМ СПАСИБО!!!!!!!!!!!!!!!! всё заработало просто идеально!!!! Вы просто спасли меня!!!!

k0zer 18.04.2007 01:40

Цитата:

Сообщение от __etc
Не вижу связи. Флеш это флеш, видео — это видео.

Способ создания иллюзии движения на экране существует только один. Это быстрая смена кадров со смещением изображения на них, так чтобы человек не замечал дискретности движения. Умные дяди (причем умные во множестве областей) не зря придумали число 30, видимо серьезные исследования проводили. И тут не имеет значение видео это или флеш, хотя флеш в большинстве это интерактивные видеоролики. Как тут можно не видеть связи, для меня загадка.

Цитата:

Сообщение от _bkt
http://flash-ripper.com/archives/000851.php - статья называется "Волшебная Частота, 21 и 31 FPS"

Спасибо за статью, правда автор по-моему сам не догоняет смысл чисел. Дурацкий пример привел, его там в комментах поругали.
Ну и очень порадовала фраза:
"Ответ заключается в том, что значение частоты кадров, FPS, хранится в числе с плавающей запятой формата "16/16" (можно также встретить обозначение "16.16"). В таком числе 16 бит отводится под целую часть, и 16 бит -- под дробную."
Вроде ясно становится что человек не понимает то о чем говорит.
Если ошибаюсь - поправьте меня.

etc 18.04.2007 01:43

k0zer, тебя же не смущает то, что при 30 фпс в 3D игры играть невозможно? Здесь нельзя делать обобщений, не кино смотрим. Уж тем более, никогда про 30 не слышал. Слышал про 21, 24, 25, 31, остальное — нет.
Если религия не позволяет, пользуйся 30, не заставляем. Вести разговоры на тему, что 31 есть правильно я не буду, потому что лень и уже говорили на эту тему.

iNils 18.04.2007 02:03

PAL/SECAM - 25 кадров (Европа)
NTSC - 30 кадров (АМЕРИКА/АЗИЯ)
Но каждый кадр формируется из двух полукадров, поэтому часть общего изображения меняется чаще - 50 и 60 полукадров в секунду. Но речь идет о телевиденье, где частота фиксирована. На мониторах все происходит по другому. Поэтому k0zer не понимает о чем говорит. swf хранит в себе информацию о частоте смене кадров, но хранит не фпс, а время отводимое на каждый кадр, то есть фпс 30 записывается как 1000/30 = 33,3(3). Как видим 33,3(3) дробное число и оно записывается в формате 16.16 и дробная часть получается не точной и и при переводе в фпс со временем накапливается ошибка которая дают скачки в плавной анимации. При частоте фпс 21 и 31, это ошибка минимальна и скачок менее заметен.

k0zer 18.04.2007 02:06

>>k0zer, тебя же не смущает то, что при 30 фпс в 3D игры играть невозможно?
30 - NTSC (по-моему), плюс чересстрочная 60 ))

Не смущает, я сам это знаю и даже догадываюсь почему )). Кстати смотря какая игра, если КС то и на 30 не страшно. А если Ку3 то для комфорта мин для 120 )).

Я религиозные войны вести не люблю и не собираюсь. Я даже верю, что 31 это хорошо и всегда ее ставлю последнее время. Но в той статье что дал _bkt по-моему фигня написана, а не обьяснение.
Если не очень лень, был бы признателен получить ссылку на то, где говорили на эту тему.

etc 18.04.2007 02:06

Ах да, NTSC. Ну не в счет, в общем-то.
А ссылочки в поиске надыбать можно, правда-правда.

k0zer 18.04.2007 02:08

Цитата:

Сообщение от iNils
PAL/SECAM - 25 кадров (Европа)
NTSC - 30 кадров (АМЕРИКА/АЗИЯ)
Но каждый кадр формируется из двух полукадров, поэтому часть общего изображения меняется чаще - 50 и 60 полукадров в секунду. Но речь идет о телевиденье, где частота фиксирована. На мониторах все происходит по другому. Поэтому k0zer не понимает о чем говорит. swf хранит в себе информацию о частоте смене кадров, но хранит не фпс, а время отводимое на каждый кадр, то есть фпс 30 записывается как 1000/30 = 33,3(3). Как видим 33,3(3) дробное число и оно записывается в формате 16.16 и дробная часть получается не точной и и при переводе в фпс со временем накапливается ошибка которая дают скачки в плавной анимации. При частоте фпс 21 и 31, это ошибка минимальна и скачок менее заметен.

1000/25 = 40 ровно

k0zer 18.04.2007 02:10

Цитата:

Сообщение от __etc
Ах да, NTSC. Ну не в счет, в общем-то.
А ссылочки в поиске надыбать можно, правда-правда.

Честное слово искал, но безуспешно. Видимо не те ключевые слова.
Я понимаю, что модераторов достают одни и теже вопросы, по-этому предпочитаю поиском пользоваться.

iNils 18.04.2007 02:12

Цитата:

Сообщение от k0zer
1000/25 = 40 ровно

Если смотрел внимательно, то мой коммент в той статье был второй и я именно об этом писал, но как оказалось все на много сложнее.

k0zer 18.04.2007 02:15

Цитата:

Сообщение от iNils
Если смотрел внимательно, то мой коммент в той статье был второй и я именно об этом писал, но как оказалось все на много сложнее.

Не заметил ))
Мне кстати понравилось ещё, цитирую: "преобразовываем в hex со отбрасыванием дробной части, получаем 41.(6)=29h
преобразовываем обратно 29h=41". Зачем преобразовывать в 16рич? у десятич. дробную часть не отбросить? )) В компе все-равно все двоичное, вобщем не понял я. ))
А где-нибудь почитать об этом можно, что намного сложнее?
Ну или если можно здесь высказать.

wvxvw 19.04.2007 03:00

31 кадр\сек - стандарт американского телевидения.

iNils 19.04.2007 03:01

Цитата:

Сообщение от wvxvw
31 кадр\сек - стандарт американского телевидения.

http://www.broadcasting.ru/wiki/index.php?title=NTSC
30!

wvxvw 19.04.2007 03:14

хм.. ну раз википедия говорит 30, значит 30... сорри. пропустил страницу, сейчас перечитал. Я думаю, еще потому что 31 - простое число, и точно не будет дискретности. В смысле, не получится так, что каждый тик (несколько тиков) экрана м видим одну картинку, а за ней другую сразу же. А вместо этого произойдет частичная смена на предыдущем и следующем тике - но это только мои предположения, ни чем не подтвержденные %)

Ash Rivers 04.02.2008 17:09

А вот такой флэш-информер есть:

http://ubp.com.ua/xml/n-inf-b.swf

Представляет из себя зацикленную бегущую строку с заголовками новостей и картинками к ним, подгружаемыми из формируемого PHP-скриптом XML-файла.
Никак не получается побороть "скачки" текстовых и графических блоков.
Пробовал и cacheAsBitmap (хотя подтягиваемые картинки по сути и являются этими самыми Битмапами), и fps ставил как в 31 так и в 21 кадр ... Ставил даже, ради эксперимента, от "1" до "31" кадра. Скорость - меняется, скачки - остаются) =(
Быть может кто-то сталкивался с подобной проблемой при воспроизведении роликов с динамически подгружаемыми данными?..

P.S. По ссылке, напрямую, флэшка может не грузить заголовки/картинки, а вот на главной > http://ubp.com.ua/ < проблема проявляет себя в полной красе ...


[update : 4.02.08 // 18:00]

Методом установки счётчика кадров выяснился интересный факт: установленный fps реально не дотягивает до выдаваемого результата. Совпадение происходит только при установленном 1 и 2 fps %) Далее уже идут расхождения.
Так, при установленном значении в 3 fps выдаёт 2 fps, при 28 fps выдаёт 26 fps, при 31 fps даёт 29 fps и т.д.
Но даже завысив заданное значение fps до "35" и получив на выходе цифру 31-32, прокрутка всёравно продолжает дёргаться =(


Часовой пояс GMT +4, время: 00:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.