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

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

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

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Производительность 2D приложений под Android на AIR

Наблюдаю очень низкую производительность на HTC Desire S ARM7. При перемещении и повороте 500 спрайтов выдает 5-10 фпс. Нормально ли это? Если нет то как можно улучшить производительность?
Код AS3:
package 
{
	import flash.desktop.NativeApplication;
	import flash.display.Shape;
	import flash.events.Event;
	import flash.geom.Matrix;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.text.TextField;
	import flash.ui.Multitouch;
	import flash.ui.MultitouchInputMode;
	import flash.utils.*;
 
	[SWF(width = "480", height = "800", backgroundColor = "#ffffff")]
	/**
	 * ...
	 * @author PlutDem
	 */
	public class Main extends Sprite 
	{
		public var lastfrTime:Number;
		public var cirks:Array = new Array;
		public var textf:TextField = new TextField;
		public function Main():void 
		{	
			addChild(textf);
			for (var i:int; i < 500; i++){
				cirks[i] = new Sprite;
 
				cirks[i].graphics.lineStyle(1);
				cirks[i].graphics.beginFill(0xdddddd,1);
				cirks[i].graphics.drawRect(30, 0, 10, 50);
				addChild(cirks[i]);
				cirks[i].x = i;
				cirks[i].y = i;
			}
 
			addEventListener(Event.ENTER_FRAME, ojbup);
			addEventListener(Event.ENTER_FRAME, frlistener);
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			stage.addEventListener(Event.DEACTIVATE, deactivate);
 
			Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
 
			stage.frameRate = 30;
		}
 
		public function ojbup(e:Event):void {
 
			for (var i:int; i < 500; i++){
 
				cirks[i].x += 1;
				cirks[i].y += 1;
				cirks[i].rotation += 5;
			}
 
		}
		public function frlistener(e:Event):void {
			var now:Number = getTimer();
			var elapsed:Number = now - lastfrTime;
			var frPerSecond:Number = Math.round(1000/elapsed);
			lastfrTime = now;
			textf.text = ""+frPerSecond;
 
 
 
		}
 
		private function deactivate(e:Event):void 
		{
			// auto-close
			NativeApplication.nativeApplication.exit();
		}
 
	}
 
}


Последний раз редактировалось PlutDem; 24.02.2012 в 21:44.
Старый 24.02.2012, 21:07
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 2  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
А чем не устраивает 30 FPS? Для мобил вполне нормально.

http://help.adobe.com/en_US/as3/mobi...ng_content.pdf
http://blog.newmovieclip.com/2010/11...on-on-android/
http://sierakowski.eu/list-of-tips/8...roid-game.html
http://www.indieflashblog.com/unders...or-mobile.html

Старый 24.02.2012, 21:19
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 3  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от Astraport Посмотреть сообщение
Меня не устраивает столь малое количество спрайтов, способное находиться на экране без ущерба производительности (30 фпс). Ожидал, хотя бы 500 спрайтов, но AIR захлебывается уже на 150.


Последний раз редактировалось PlutDem; 24.02.2012 в 21:43.
Старый 24.02.2012, 21:21
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 4  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Растируйте

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

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от Astraport Посмотреть сообщение
Растируйте
Это не поможет. Если бы были сложные векторные объекты, то это дало бы ощутимый прирост, а тут... сотня жалких шейпов, их растрирование только еще больше понизит производительность.

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Я не пойму. Вы задаете в коде frameRate = 30 - получаете 30 FPS.
Что не устраивает?

Добавлено через 9 минут
Проверил ваш код на Гэлекси II
ФПС начал падать только после 400. И не ниже 25. Но плавность движения все равно остается нормальной.


Последний раз редактировалось Astraport; 24.02.2012 в 21:47.
Старый 24.02.2012, 21:50
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 7  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от PlutDem Посмотреть сообщение
...сотня жалких шейпов, их растрирование только еще больше понизит производительность.
Можно узнать, откуда такие идеи?
Рекомендую попробовать.
__________________
Поймай яблоко 2!

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

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от Astraport Посмотреть сообщение
Я не пойму. Вы задаете в коде frameRate = 30 - получаете 30 FPS.
Что не устраивает?
Виноват, некорректно представил проблему. При 500 спрайтах фпс где около 5-10. Если их растрировать и включить GPU, то фпс будет уже около 20-22, но увы не 30.

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Попробуйте вместо Sprite - Shape, если получится, должно дать прирост производительности примерно на 50%.

Добавлено через 7 минут
Попробовал для каждого спрайта.
Код AS3:
var matrix:Matrix = new Matrix(); 
cirks[i].cacheAsBitmapMatrix = matrix; 
cirks[i].cacheAsBitmap = true;
Значительно хуже чем без кэширования. ФПС упало до 5.
Может нужно как-то по другому делать?

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

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от Astraport Посмотреть сообщение
Попробуйте вместо Sprite - Shape, если получится, должно дать прирост производительности примерно на 50%.
Тест синтетический, в реальном приложении будут использоваться спрайты.

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

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

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


 


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


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