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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jun 2003
Адрес: Москва
Сообщений: 168
По умолчанию размножение объектов разного типа - тормозит

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

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

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

помогите


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();
}
}
}
}

Старый 15.11.2004, 23:38
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 2  
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
функции конечно не оптимизированы, но, полагаю, что из-за них не должно быть сильных тормозов.
выложи исходник. бум посмотреть.

Старый 16.11.2004, 02:40
artfla$her вне форума Посмотреть профиль Отправить личное сообщение для artfla$her Найти все сообщения от artfla$her
  № 3  
artfla$her
 
Аватар для artfla$her

Регистрация: Apr 2004
Адрес: Петербург
Сообщений: 549
Отправить сообщение для artfla$her с помощью ICQ
Я код не очень разбирал, но... LastBadObj ты где-нить понижаешь? А то цикл-то растет.
__________________
За двумя зайцами погонишься - от егеря по морде получишь

Старый 16.11.2004, 13:36
nadyas вне форума Посмотреть профиль Отправить личное сообщение для nadyas Найти все сообщения от nadyas
  № 4  
nadyas

Регистрация: Jun 2003
Адрес: Москва
Сообщений: 168
По умолчанию да, переменная цикла не понижается

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

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

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

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

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

Старый 17.11.2004, 02:21
artfla$her вне форума Посмотреть профиль Отправить личное сообщение для artfla$her Найти все сообщения от artfla$her
  № 5  
artfla$her
 
Аватар для artfla$her

Регистрация: Apr 2004
Адрес: Петербург
Сообщений: 549
Отправить сообщение для artfla$her с помощью ICQ
ничего не понял... Вариантов уйма просто, не надо цикл хитрить, попробуй просто менять начальное значение цикла, его тоже увеличивать при ремуве объектов... Давай исходник =)
__________________
За двумя зайцами погонишься - от егеря по морде получишь

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

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

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


 


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


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