Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.02.2013, 22:36
ASDAlien вне форума Посмотреть профиль Отправить личное сообщение для ASDAlien Найти все сообщения от ASDAlien
  № 1  
Ответить с цитированием
ASDAlien

Регистрация: Dec 2010
Сообщений: 10
По умолчанию fps limit

привет, в общем во флэшке стоит 30 фпс, а класс который отображает фпс и использование памяти иногда показывает 31-32, скажите это класс глючит или флэш не совсем точно ограничивает, и есть ли какой-нибудь способ сделать не выше 30 ?

Старый 08.02.2013, 07:14
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
и есть ли какой-нибудь способ сделать не выше 30 ?
поставить 28, например )
Цитата:
а класс который отображает фпс и использование памяти иногда показывает 31-32
Речь о Stats? Советую посмотреть его исходник, чтобы понять как он расчитывает fps. Там расчеты на основе таймера, и всему виной длинные числа. Погрешность в 1 - 2 кадра вполне нормальна.

Вот stage.frameRate покажет 30.

Старый 08.02.2013, 12:53
ASDAlien вне форума Посмотреть профиль Отправить личное сообщение для ASDAlien Найти все сообщения от ASDAlien
  № 3  
Ответить с цитированием
ASDAlien

Регистрация: Dec 2010
Сообщений: 10
да, речь о статс, а сделать 28 не вариант) мне нужно чтобы действие флэшки происходило с одинаковой скоростью на всех браузерах, а оно почему-то визуально намного быстрее в хроме идет, не знаю вот как убрать это)

Старый 08.02.2013, 13:00
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
ASDAlien,
Делайте игру и расчёты на основе таймера.
__________________
Дети не должны знать о своих родителях

Старый 08.02.2013, 13:29
ASDAlien вне форума Посмотреть профиль Отправить личное сообщение для ASDAlien Найти все сообщения от ASDAlien
  № 5  
Ответить с цитированием
ASDAlien

Регистрация: Dec 2010
Сообщений: 10
изначально на таймере и делал, пробовал и так и так, но с фпс почему-то лучше работает

Старый 08.02.2013, 14:20
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 6  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Расчёт игры может идти на основе кадров, или на основе таймера. В последнем случае, скорость течения игры не будет привязана к fps.
__________________
Дети не должны знать о своих родителях

Старый 08.02.2013, 14:30
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
В последнем случае, скорость течения игры не будет привязана к fps.
Будет. Все это фигня. Это так же будет тормозить вместе с плеером.
Есть фишка в проверке через getTimer() сколько времени прошло с момента последней перерисовке, и на основе формул расчитывать где должен быть конкретный объект в это время. Но от тормозов это совсем не избавит. Даже если объекты будут появляться в нужных местах, вся анимация будет дерганой.

Цитата:
изначально на таймере и делал, пробовал и так и так, но с фпс почему-то лучше работает
Если это было по TimerEvent.TIMER, то в обработчике нужно было вызывать e.updateAfterEvent() для принудительной перерисовки экрана.

Старый 08.02.2013, 16:14
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 8  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Расчет ФПС происходит примерно раз в секунду.
Каждый новый кадр переменная, считающая количество кадров, инкрементируется. После того, как остаток от деления значения этой переменной на 60 будет давать 0, считаем пройденное с последнего "щелчка" время и делим прошедшее число кадров на это время.
То есть если у вас 30 фпс, то так и покажет. Иногда показывает чуть больше, это тоже бывает. Всему виной "икания" компьютера, когда новый кадр влетает в несовсем положенное ему время.

Счетчик кадров имеет примерно такой вид:
Код AS3:
var frameCount:int = 0;
var totalTime:Number = 0;
addEventListener(Event.ENTER_FRAME, function(event:EnterFrameEvent):void
{
    totalTime += event.passedTime;
    if (++frameCount % 60 == 0)
    {
        trace("fps: " + frameCount / totalTime);
        frameCount = totalTime = 0;
    }
});
Это пример реализации с помощью Starling, на чистом AS3 вместо event.passedTime обычно используют функцию вычисления пройденного с последнего кадра времени:
Код AS3:
function calculateElapsed():void
{
   currentTime = getTimer();
   elapsed = currentTime - previousTime;
   previousTime = currentTime;
}
// все переменные инициализируются внутри класса и имеют тип Number
Если вы загружаете приложение вконтакт, то во всех браузерах, кроме Хрома, на "староватых" компах оно будет подтормаживать. Не забудьте поставить в настройках приложения wmode - direct
________________________
Ах да, и в чем вы кстати работаете? Flash Pro или Flash Builder / Flashdevelop?

Потому что Flash Pro довольно четко ставит FPS и рьяно пытается держать этот постоянный FPS заданного значения


Последний раз редактировалось KumoKairo; 08.02.2013 в 17:50.
Старый 08.02.2013, 16:47
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 9  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
event:EnterFrameEvent ?
Сорри, про старлинг не сразу понял.

Анонимные функции — зло.
__________________
hauts.ru

Старый 08.02.2013, 16:52
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 10  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Hauts, насчет анонимных функций спорить не стану, это же просто пример реализации.
Не стоит каждую строчку кода воспринимать в лоб

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
fps
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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