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

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

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

Регистрация: Apr 2011
Сообщений: 83
По умолчанию Игра начинает тормозить. Помогите разобраться.

Привет. Сделал игру. Точнее делаю. Но вот игра при запуске, начинает есть все ресурсы системы. Если у кого есть желание, посмотрите что там не так. Сам не могу разобраться.

Игра напоминает игру "Жизнь". Нижний квадрат с права "Play" с лева "stop"
Вложения
Тип файла: rar Life.rar (15.6 Кб, 49 просмотров)

Старый 13.02.2012, 20:03
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 2  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Ужасно!

1. переменные и методы должны явно указывать тип данных, в противном случае возвращать войд(:void).
2. при каждой попытке, в коде, изменить делай таймера у вас создаёться новый не удаляя стары, а это очень жрёт оперативную память.
3. Дикий ужас происходит в архитектуре кода, отсутствие инициализации блоков памяти, типов, читабильность на нуле. Повтор однозадачных методов, массовый! Сложно уловить мысль разработчика.

Приведите исходники в порядок!
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

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

Регистрация: Apr 2011
Сообщений: 83
" 2. при каждой попытке, в коде, изменить делай таймера у вас создаёться новый не удаляя стары, а это очень жрёт оперативную память. "
Получается что игра тормозит из за таймера?

Можно более подробней написать. Что поменять, что переделать?


Последний раз редактировалось pivnoibaron; 15.02.2012 в 23:27.
Старый 16.02.2012, 00:05
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 4  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
[quote]public function timePlayGo ( )
{
tmr = new Timer ( 1000, timeGo );
tmr.addEventListener(TimerEvent.TIMER, masiw );
tmr.start();
}[/QUOTE
Вы думаете, что потеряли ссылку на таймер и все он перестал работать?
Ну поменяйте хотябы так:
Код AS3:
public function timePlayGo ( )
{
	if (tmr == null)
	{
		tmr = new Timer ( 1000, timeGo );
		tmr.addEventListener(TimerEvent.TIMER, masiw );	
	}
	else
	{
		tmr.reset();
	}
	tmr.start();
}
А вообще Вам бы книгу какуюнить прочитать.
__________________
http://www.chessmax.ru

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

Регистрация: Apr 2011
Сообщений: 83
Тут наверное не таймер виноват. Пробовал таймер закидывать в конструктор, и без воздействия на него кнопок. Просто сразу запускаю игру с уже готовой комбинацией и сразу запускается таймер. Но все равно игра начинает поглощать ресурсы. Может это из за того что Я создаю при цикле новые квадраты и они суммируютсья и при каждом цикле for они добавляю новые не удаляя старые?
Код AS3:
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 ( );
		}

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

Регистрация: Jan 2012
Сообщений: 17
Каждый раз в таймере Вы ставите ребёнка в очередь: addChild(arayViz[ i ][ j ]); и все они остаются в памяти и продолжают работать. Попробуйте вставить:
Код AS3:
removeChild(arayViz[ i ][ j ]);
arayViz[ i ][ j ]=null;
а после уже снова ставте в очередь.


Последний раз редактировалось udaaff; 18.02.2012 в 16:13.
Старый 18.02.2012, 16:12
pivnoibaron вне форума Посмотреть профиль Отправить личное сообщение для pivnoibaron Найти все сообщения от pivnoibaron
  № 7  
Ответить с цитированием
pivnoibaron
 
Аватар для pivnoibaron

Регистрация: Apr 2011
Сообщений: 83
Цитата:
Сообщение от venziver Посмотреть сообщение
Каждый раз в таймере Вы ставите ребёнка в очередь: addChild(arayViz[ i ][ j ]); и все они остаются в памяти и продолжают работать. Попробуйте вставить:
removeChild(arayViz[ i ][ j ]);
arayViz[ i ][ j ]=null;
а после уже снова ставте в очередь.
Куда их в коде поставить?

Старый 18.02.2012, 23:02
venziver вне форума Посмотреть профиль Отправить личное сообщение для venziver Найти все сообщения от venziver
  № 8  
Ответить с цитированием
venziver

Регистрация: Jan 2012
Сообщений: 17
У вас есть функция:
function masiw (e:TimerEvent ):void
её выполняет таймер с заданной частотой и на экране получается движение. Поэтому в начале этой функции надо сначала удалить в цикле всех детей из очереди:
removeChild(arayViz[ i ][ j ]);
arayViz[ i ][ j ]=null;
а потом в цикле их снова создать и поставить в очередь

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
А еще лучше объекты не пересоздавать. Вам по сути нужно просто менять их состояние, как я понял.
__________________
местонахождение

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

Регистрация: Apr 2011
Сообщений: 83
По умолчанию Игра тянет все ресурсы.

Переделал игру. Но опять начинает тормозить :-( Я кажется что то в ней не понимаю. Кому несложно. Посмотрите пожалуйста и объясните что не так.
Вложения
Тип файла: rar TestGame.rar (13.5 Кб, 26 просмотров)

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

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

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


 


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


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