![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 83
|
Привет. Сделал игру. Точнее делаю. Но вот игра при запуске, начинает есть все ресурсы системы. Если у кого есть желание, посмотрите что там не так. Сам не могу разобраться.
Игра напоминает игру "Жизнь". Нижний квадрат с права "Play" с лева "stop" |
|
|||||
|
Ужасно!
1. переменные и методы должны явно указывать тип данных, в противном случае возвращать войд(:void). 2. при каждой попытке, в коде, изменить делай таймера у вас создаёться новый не удаляя стары, а это очень жрёт оперативную память. 3. Дикий ужас происходит в архитектуре кода, отсутствие инициализации блоков памяти, типов, читабильность на нуле. Повтор однозадачных методов, массовый! Сложно уловить мысль разработчика. Приведите исходники в порядок!
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 83
|
" 2. при каждой попытке, в коде, изменить делай таймера у вас создаёться новый не удаляя стары, а это очень жрёт оперативную память. "
Получается что игра тормозит из за таймера? Можно более подробней написать. Что поменять, что переделать? Последний раз редактировалось pivnoibaron; 15.02.2012 в 23:27. |
|
|||||
|
[quote]public function timePlayGo ( )
{ tmr = new Timer ( 1000, timeGo ); tmr.addEventListener(TimerEvent.TIMER, masiw ); tmr.start(); }[/QUOTE Вы думаете, что потеряли ссылку на таймер и все он перестал работать? Ну поменяйте хотябы так: А вообще Вам бы книгу какуюнить прочитать.
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 83
|
Тут наверное не таймер виноват. Пробовал таймер закидывать в конструктор, и без воздействия на него кнопок. Просто сразу запускаю игру с уже готовой комбинацией и сразу запускается таймер. Но все равно игра начинает поглощать ресурсы. Может это из за того что Я создаю при цикле новые квадраты и они суммируютсья и при каждом цикле for они добавляю новые не удаляя старые?
private function masiw (e:TimerEvent ):void //пробегает по массиву arayViz заменяет 1 и 0 на визуальные обекты. { for ( var i:uint = 0; i < arayViz.length; i++ ) { for ( var j:uint = 0; j < arayViz [ i ].length; j++ ) { if ( arayViz [ i ] [ j ] == 0 ) { var newBoxTwo = new Box ( arayGrid, arayViz, masivReload ); // Может обекты Box сумируются и начинают забирать память? newBoxTwo.x = j * 20; newBoxTwo.y = i * 20; newBoxTwo.ii = i; newBoxTwo.jj = j; arayViz [ i ] [ j ] = newBoxTwo; addChild ( arayViz [ i ] [ j ] ); } if ( arayViz [ i ] [ j ] == 1 ) { var newMoveBoxTwo = new MoveBox ( arayGrid, arayViz, masivReload ); newMoveBoxTwo.x = j * 20; newMoveBoxTwo.y = i * 20; newMoveBoxTwo.ii = i; newMoveBoxTwo.jj = j; arayViz [ i ] [ j ] = newMoveBoxTwo; addChild ( arayViz [ i ] [ j ] ); } } } moveBox ( ); } |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 17
|
Каждый раз в таймере Вы ставите ребёнка в очередь: addChild(arayViz[ i ][ j ]); и все они остаются в памяти и продолжают работать. Попробуйте вставить:
а после уже снова ставте в очередь. Последний раз редактировалось udaaff; 18.02.2012 в 16:13. |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 83
|
Куда их в коде поставить?
|
|
|||||
|
Регистрация: Jan 2012
Сообщений: 17
|
У вас есть функция:
function masiw (e:TimerEvent ):void её выполняет таймер с заданной частотой и на экране получается движение. Поэтому в начале этой функции надо сначала удалить в цикле всех детей из очереди: removeChild(arayViz[ i ][ j ]); arayViz[ i ][ j ]=null; а потом в цикле их снова создать и поставить в очередь |
|
|||||
|
А еще лучше объекты не пересоздавать. Вам по сути нужно просто менять их состояние, как я понял.
__________________
местонахождение |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 83
|
Переделал игру. Но опять начинает тормозить :-( Я кажется что то в ней не понимаю. Кому несложно. Посмотрите пожалуйста и объясните что не так.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|