PDA

Просмотр полной версии : размножение объектов разного типа - тормозит


nadyas
15.11.2004, 20:05
есть объекты разного характера, они падают, а персонаж их ловит внизу

почему у меня где-то после сотого появившегося и движущегося объекта начинает все притормаживать, объекты едут медленнее, персонаж, который ловит объекты, бегает медленнее, как будто переполнение стека или чего-то подобного???

я думаю что-то с уровнями

помогите


function createBadObj()
{
if (timeSinceLastObj>=10) {
LastBadObj++;
chose=random(4);
if (chose==0) {
attachMovie("obj1", "obj1_"+LastBadObj,LastBadObj);
_root["obj1_"+LastBadObj]._x=Math.random()*690+50;
_root["obj1_"+LastBadObj]._y=-20;
}
else if (choselogo==1) {
attachMovie("obj2", "obj2_"+LastBadObj,LastBadObj);
_root["obj2_"+LastBadObj]._x=Math.random()*690+50;
_root["obj2_"+LastBadObj]._y=-20;
}
else if ... тоже самое еще два раза для двух объектов

timeSinceLastObj=0;
Speed=10;
}
timeSinceLastObj++;
}




function moveBadObj()
{
for (i=1;i<=LastBadObj;i++)
{
x = _root["obj1_"+i]._x;
y = _root["obj1_"+i]._y + Speed;
x1 = _root["obj2_"+i]._x;
y1 = _root["obj2_"+i]._y + Speed;
..... также и для x2,y2,x3,y3 .......

if ((y > 500) or (y1 > 500) or (y2 > 500) or (y3 > 500))
{
_root["obj1_"+i].removeMovieClip();
_root["obj2_"+i].removeMovieClip();
_root["obj3_"+i].removeMovieClip();
_root["obj4_"+i].removeMovieClip();

}
else
{
_root["obj1_"+i]._y = y;
_root["obj2_"+i]._y = y1;
_root["obj3_"+i]._y = y2;
_root["obj4_"+i]._y = y3;

if ( (_root["obj1_"+i].hitTest(_root.mynotebook)) or (_root["obj2_"+i].hitTest(_root.mynotebook)) or (_root["obj3_"+i].hitTest(_root.mynotebook)) or (_root["obj4_"+i].hitTest(_root.mynotebook)) )
{
if (score<=0)
{
score = 0;
_root.score.text = 0;
}
else
{
score -= 1;
_root.score.text = score;
}
_root["obj1_"+i].removeMovieClip();
_root["obj2_"+i].removeMovieClip();
_root["obj3_"+i].removeMovieClip();
_root["obj4_"+i].removeMovieClip();
}
}
}
}

Iv
15.11.2004, 23:38
функции конечно не оптимизированы, но, полагаю, что из-за них не должно быть сильных тормозов.
выложи исходник. бум посмотреть.

artfla$her
16.11.2004, 02:40
Я код не очень разбирал, но... LastBadObj ты где-нить понижаешь? А то цикл-то растет.

nadyas
16.11.2004, 13:36
вот именно, переменная цикла LastBadObj все время растет, потому как объекты приаттачиваются (создаются аттачемМуви) пока не кончатся жизни, а жизнь не зависит от этого цикла, просто когда жизнь закончится - выход из игры

получается что цикл растет безгранично, это наверное плохо

пробовала поставить до числа 100, а потом начинать с 0, или с 20...

но тогда на экране замираются объекты на месте, которые не были пойманы или которые не дошли до конца экрана и не исчезли, а цикл начинается с новой начальной позиции

может как-то обхитрить цикл?
ведь ест же игры, в которых объекты появляются до тех пор, пока не кончится игра, а выход из игры предусмотрен условием, не относящимся к этому циклу?
как реализуют этот механизм?

artfla$her
17.11.2004, 02:21
ничего не понял... Вариантов уйма просто, не надо цикл хитрить, попробуй просто менять начальное значение цикла, его тоже увеличивать при ремуве объектов... Давай исходник =)