|
|
|||||
Регистрация: May 2009
Сообщений: 33
|
Оптимизация кода
Всем привет! Делаю снег для приложения, необходимо как можно меньше использовать ресурсов. Может кто подскажет что еще здесь можно оптимизировать.
package com.ximad.braincube.help{ import flash.display.Sprite; import flash.events.Event; import flash.utils.Dictionary; public class Snow extends Sprite { protected var snowflakes:Array; protected var snowflakeProps:Dictionary; protected var max_snowsize:Number = 0.1; protected var snowflakesCnt:Number = 150; protected var owidth:Number=640; protected var oheight:Number=360; protected var dO:Sprite; protected var o:Object; protected var cont:Sprite; protected var xt:Number; protected var yt:Number; public function Snow(){ init(); } protected function init():void{ snowflakes = new Array(); snowflakeProps = new Dictionary(true); cont = new Sprite(); for (var i:int=0; i<snowflakesCnt; i++) { var t:Sprite = new SnowFlake(); t.x = Math.round(-5+Math.random()*(owidth+5)); t.y = Math.round( -5 + Math.random() * (oheight + 5)); t.scaleX = t.scaleY=.5+Math.random()*(max_snowsize*10); o = new Object(); o.k = 1+Math.random()*2; o.wind = -1.5+Math.random()*(2.2); snowflakeProps[t] = o; cont.addChild(t); snowflakes.push(t); } cont.mouseEnabled = false; addChild(cont); addEventListener(Event.ENTER_FRAME, snowFlakeMover); } public function snowFlakeMover(e:Event):void { var i:int = snowflakesCnt; var ow:uint = owidth + 5; var oh:uint = oheight + 5; while(--i>-1){ dO = snowflakes[i] as Sprite; o = snowflakeProps[dO]; xt = dO.x; yt = dO.y; yt += o.k; xt += o.wind; if (yt>oh) { yt = -20; } if (xt>ow) { xt = Math.round(-5+Math.random()*ow); yt = -5; } else if (xt<-5) { xt= Math.round(-5+Math.random()*ow); yt = -5; } dO.y = yt; dO.x = xt; } } } } Последний раз редактировалось BLOOD585; 22.11.2011 в 14:34. |
|
|||||
Регистрация: May 2009
Сообщений: 33
|
Цитата:
На компе нет в принцыпе проблем, но я делаю для телефона, а там эта мелоч добавляет нагрузки. Может еще что то тут можно поджать))) |
|
|||||
Ещё можно вместо массива использовать Vector, говорят что вроде у него быстрее доступ к элементам в нём. А вот у Dictionary с доступом кажется как раз и не очень-то. И вместо спрайта можно и Shape сделать. Но я не смотрел на общий алгоритм снегопада, возможно там в самом коде можно сделать по другому...
Последний раз редактировалось samana; 22.11.2011 в 15:45. |
|
|||||
Нормальный объект снежинка не способна сама создать и хранить k и wind?
Выкиньте словарь в топку. Нормальный объект снежинка не знает как ей двигаться? Метод update с расчетами!
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
на производительность в этом случае больше всего будет влиять способ отрисовки,
а не то каким образом хранятся инстансы снежинок или каким алгоритмом рассчитываются их таректории самый лучший результат даст copyPixels(), используя такой метод отрисовки можно будет нарисовать хоть сотни сенжинок и не упасть ниже 30 фпс даже на телефоне вот демка производительности этого метода http://www.electrotank.com/junk/mike/flash/copyPixel/ моя машина отрисовывает 15000 спрайтов этим методом при фпс выше 20 Добавлено через 9 минут p.s. вот тут серия видеоуроков на эту тему от Lee Brimelow: http://gotoandlearn.com/play.php?id=140
__________________
Хороший отдых - половина работы. Последний раз редактировалось artcraft; 22.11.2011 в 16:33. |
|
|||||
Цитата:
Цитата:
Не хочу казаться голословным, но поверьте - 60 fps на первом iPad достигается только при использовании обычного флешового рендера, copyPixels при тех же нагрузках дает от силы 30 Цитата:
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 22.11.2011 в 17:06. |
|
|||||
Цитата:
вот пара ссылок подтверждающих то что я сказал: http://www.adobe.com/devnet/games/ar...ed-models.html http://www.kirupa.com/forum/showthre...ons-for-Mobile
__________________
Хороший отдых - половина работы. Последний раз редактировалось artcraft; 22.11.2011 в 18:31. |
|
|||||
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
Часовой пояс GMT +4, время: 15:52. |
|
« Предыдущая тема | Следующая тема » |
|
|