|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Производительность 2D приложений под Android на AIR
Наблюдаю очень низкую производительность на HTC Desire S ARM7. При перемещении и повороте 500 спрайтов выдает 5-10 фпс. Нормально ли это? Если нет то как можно улучшить производительность?
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. |
|
|||||
А чем не устраивает 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 |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Цитата:
Последний раз редактировалось PlutDem; 24.02.2012 в 21:43. |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Это не поможет. Если бы были сложные векторные объекты, то это дало бы ощутимый прирост, а тут... сотня жалких шейпов, их растрирование только еще больше понизит производительность.
|
|
|||||
Я не пойму. Вы задаете в коде frameRate = 30 - получаете 30 FPS.
Что не устраивает? Добавлено через 9 минут Проверил ваш код на Гэлекси II ФПС начал падать только после 400. И не ниже 25. Но плавность движения все равно остается нормальной. Последний раз редактировалось Astraport; 24.02.2012 в 21:47. |
|
|||||
Lorem ipsum
|
Цитата:
Рекомендую попробовать.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Виноват, некорректно представил проблему. При 500 спрайтах фпс где около 5-10. Если их растрировать и включить GPU, то фпс будет уже около 20-22, но увы не 30.
|
|
|||||
Попробуйте вместо Sprite - Shape, если получится, должно дать прирост производительности примерно на 50%.
Добавлено через 7 минут Попробовал для каждого спрайта. var matrix:Matrix = new Matrix(); cirks[i].cacheAsBitmapMatrix = matrix; cirks[i].cacheAsBitmap = true; Может нужно как-то по другому делать? |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Тест синтетический, в реальном приложении будут использоваться спрайты.
|
Часовой пояс GMT +4, время: 04:45. |
|
« Предыдущая тема | Следующая тема » |
|
|