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

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

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

Регистрация: Jun 2008
Сообщений: 126
По умолчанию Flash тормозит в браузерах?

Flash тормозит в браузерах. Проверял на последних версиях IE, Firefox. Версия FlashPlayer последняя релизная.

Сравните как гладко скользит квадрат в standalone-плеере и как дрожит-подергивается в браузере. Иногда в браузере тоже скользит гладко, нужно подождать секунд 10.

[Вложение #31074 - не найдено]

Код AS3:
package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite 
	{
		private var _bitmap:Bitmap;
 
		public function Main():void 
		{
			_bitmap = new Bitmap(new BitmapData(100, 100, false, 0));
			_bitmap.y = 100;
			addChild(_bitmap);
 
			addEventListener(Event.ENTER_FRAME, enterFrame);
		}
 
		private function enterFrame(e:Event):void 
		{
			_bitmap.x++;
			if (_bitmap.x > 500) _bitmap.x = -100;
		}
	}
}
Проблема в том, что в моей игре этот эффект так сильно бросается в глаза, что кажется, что игра тормозит.
Тестировал на 4-рех компах.
В диспетчере задач процессор нагружен на ~4%, редко поднимается до 20%. В Scout память не растет (занимает ~130Мб), Garbage Collector не запускается.

Движок flashpunk, вся графика рисуется на экран блиттингом.

Задано 60fps.

Что делать?

Старый 01.08.2014, 23:59
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 2  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
У меня не показывает...

А вариант только один - анимировать все движения. Да и то они будут дергаться.

Старый 02.08.2014, 00:05
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
во-первых, никогда не делайте привязку к фреймрейту. Делайте всегда по времени.
во-вторых, поиграйте со скоростью - чем выше скорость тем менее заметны перерисовки.
__________________
Отряд Котовскага

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Присоединяюсь к Котяриной "во-первых". А после этого можно скрасть неравномерность движения с помощью блюр-фильтра или подобной механики. Но это уже от лукавого, по моему мнению.

Я мастрячил года три назад плавный скролл для игрушки типа "Contra", с оригинальными изображениями. То, что я увидел мне настолько не понравилось, что я решил отложить это до лучших времен. Времена наступили, но несколько в другом плане. У флеша появился Stage3D. Но и здесь тебя поджидает масса подвохов. Может лучше на Unity перейти сразу?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 02.08.2014, 00:39
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 5  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Спасибо за помощь, но по времени тот же самый эффект. В standalone гладко, в браузерах дрожит.
Фильтры попробую, если не получится по-другому решить.

empty.swf   (0.7 Кб)


Код AS3:
package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.utils.getTimer;
 
	public class Main extends Sprite 
	{
		private var _bitmap:Bitmap;
		private var _timeInPreviousFrame:Number;
 
		public function Main():void 
		{
			_bitmap = new Bitmap(new BitmapData(100, 100, false, 0));
			_bitmap.y = 100;
			addChild(_bitmap);
 
			addEventListener(Event.ENTER_FRAME, enterFrame);
		}
 
		private function enterFrame(e:Event):void 
		{
			var elapsed:Number = getTimer() - _timeInPreviousFrame;
			_timeInPreviousFrame = getTimer();
 
			_bitmap.x += elapsed / 10;
			if (_bitmap.x > 500) _bitmap.x = -100;
		}
	}
}
Вложения
Тип файла: swf empty.swf (725 байт, 137 просмотров)

Старый 02.08.2014, 00:48
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Попробуй обойтись одним getTimer(). И потестировать это не под хромом (с его PPAPI). Хотя ты и так уже все понял.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 02.08.2014, 01:12
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 7  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
Давно перешел на Starling, плавность идеальная, не хуже чем в Unity.

Старый 02.08.2014, 01:22
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Это проходит со сложностью приложения.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Цитата:
Сообщение от dimarik Посмотреть сообщение
Это проходит со сложностью приложения.
Как именно сложность влияет на плавность анимации?
__________________
Дети не должны знать о своих родителях

Старый 02.08.2014, 23:38
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 10  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Оставил один getTimer(). Тестирую под Firefox и IE. Все равно квадрат дрожит и дергается.
Попробовал задать PixelSnapping.NEVER — не помогает.

empty.swf   (0.7 Кб)


Код AS3:
package 
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.PixelSnapping;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.utils.getTimer;
 
	public class Main extends Sprite 
	{
		private var _bitmap:Bitmap;
		private var _timeInPreviousFrame:Number;
 
		public function Main():void 
		{
			_bitmap = new Bitmap(new BitmapData(100, 100, false, 0), PixelSnapping.NEVER);
			_bitmap.y = 100;
			addChild(_bitmap);
 
			addEventListener(Event.ENTER_FRAME, enterFrame);
		}
 
		private function enterFrame(e:Event):void 
		{
			var getTimerTemp:Number = getTimer();
			var elapsed:Number = getTimerTemp - _timeInPreviousFrame;
			_timeInPreviousFrame = getTimerTemp;
 
			_bitmap.x += elapsed / 10;
			if (_bitmap.x > 500) _bitmap.x = -100;
		}
	}
}

Цитата:
Хотя ты и так уже все понял.
Про что ты?
Вложения
Тип файла: swf empty.swf (735 байт, 100 просмотров)

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

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

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


 


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


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