Показать сообщение отдельно
Старый 01.02.2010, 17:41
CHLameR вне форума Посмотреть профиль Отправить личное сообщение для CHLameR Найти все сообщения от CHLameR
  № 5  
Ответить с цитированием
CHLameR

Регистрация: Jan 2010
Сообщений: 38
Возможно я захотел невозможного. Но все-таки напишу.
В ходе тестов игры была выявлена серьезная пробелма - после последних изменений. Каждый уровень игры постепенно начинал тормозить и до такой степени, что играть становилось невозможно. Причина тормозов выявлена.

Имеется множество блоков с множеством кадров и один вид блоков с 2 кадрами - неразрушаемый. На уровнях блоки рандомно распределяются.
Теперь пишу код столкновений блоков с шариком и результат столкновений.

Кусочек кода о столкновениях:
Код AS1/AS2:
 
//столкновения с объектами из массива.
var i = boxes.length;
	while (i--) {
		var curB = boxes[i];
		if (curB.hitTest(MCball)){
 
		if (Math.abs(MCball._x-4.5+MCball._width-curB._x)<MCball._width){
			Ball_dx=-Math.abs(Ball_dx);
		}
 
		if (Math.abs(MCball._x-4.5-curB._x-curB._width)<MCball._width){
			Ball_dx=Math.abs(Ball_dx);
		}
 
		if (Math.abs(MCball._y-4.5+MCball._height-curB._y)<MCball._height){
			Ball_dy=-Math.abs(Ball_dy);
		}
 
		if (Math.abs(MCball._y-4.5-curB._y-curB._height)<MCball._height){
			Ball_dy=Math.abs(Ball_dy);
		}
 
	//Смотрим, сколько кадров у объекта. Если больше двух - то это обычный блок, 
//за него начисляются очки и он пропадает. Если меньше двух - то это неразраушаемый блок.	
if (curB._totalframes > 2) {
    _global.score+=10;
	curB.removeMovieClip();
	remove = 1;	
	if(remove ==1){
		_global.compteurbriques--;
		remove = 0;}
//Если количество блоков на уровне становится равно количеству неразрушаемых блоков 
//то переходим на другой уровень.
		if (_global.compteurbriques==_global.blockm){
			_global.levelcourant++;
			_root.gotoAndPlay("chargementLevel");
			_global.lives+=1;
			lvlremove += 1;
			}		
	}
В итоге в игру страшные лаги, если на уровне присутствует блок, у которого 2 кадра. Если его нет - нет и лагов. Почему эти лаги возникают нет никаких предположений, но проблема спрятана именно в этих стркоах кода. Может быть тут какая-то нелепая ошибка?

Тормоза в игре усиляются со временем, даже если ни разу не запускать шарик в блоки.


Последний раз редактировалось CHLameR; 01.02.2010 в 17:45.