Показать сообщение отдельно
Старый 17.11.2009, 15:28
azazul вне форума Посмотреть профиль Отправить личное сообщение для azazul Найти все сообщения от azazul
  № 16  
Ответить с цитированием
azazul

Регистрация: Nov 2009
Сообщений: 10
Mooncar, огромное спасибо за возню со мной. Просить сделать все за меня не собираюсь, потому как это ущербная практика и я сам в таком случае так ничему и не научусь. Смотреть на мои исходники вам вряд-ли захочется, потому что на сегодняшний день fla-файл весит 38 метров (подлинкованные музыка/звуки/графика/партиклы и все такое) и состоит из сотен страниц кода, в котором разбираться - врагу не пожелаешь.

Managemenu есть свой (что вполне очевидно, пауза-то реализована давно), а само состояние паузы представлено единственной глобально переменной isPaused : Boolean;
Все слушатели мыши/клавиатуры, все обсчеты движения/столкновений/таймеров/счетчиков и вообще всего, чего только можно зависят от значения этой переменной. То есть, когда я в процессе игры тыкаю на ESC, isPaused принимает значение true и все останавливается, а меню "Выйти? ДА/НЕТ" становится видимым и активным (оно все это время лежало прямо посреди игрового экрана, но пока isPaused == false оно прозрачно, а кнопки !visible и !enabled)
Цитата:
Сообщение от mooncar
Вообще никогда не пишите код на мувиках.
Хм. Учился работать с AS по учебникам типа "Macromedia Flash MX. Создание игр с помощью ActionScript". Оттуда собственно и идея создавать за пределами сцены мувиклип с логикой.
Цитата:
Сообщение от mooncar
Мувик null_mc должен находится во всех кадрах уровней
Уровней много, а кадр - один. Генерация/уничтожение объектов окружения/врагов/фона/бонусов и всего такого идет динамически, основываясь на индексе текущего уровня
Цитата:
Сообщение от mooncar
Попробуйте допилить. Запишите все функции в первом кадре, а действия в кадре текущего уровня.
Дело в том, что в кадре текущего уровня есть такая штука как stop(), ибо после него есть еще несколько вспомогательных кадров (анимация завершения уровня, анимация начала уровня, анимация смены левелпака, анимация геймовера). Выходит (если я все правильно понимаю), эти самые действия
Код AS1/AS2:
null_mc.onKillFocus = pauseFunc; // при потере фокуса приостанавливают игру
startShowCount(); //установка функции EnterFrame для _level0
не станут выполняться постоянно, а отработают только один раз, пока головка не наткнется на stop(). Значит надо их сунуть в какой-то onEnterFrame видимо, только в какой...

P.S.: Игра уже на 100% готова (за исключением обсуждаемой фичи), поэтому любые изменения структуры кода отметаются сразу, ибо нету времени потом все эти изменения тестировать на предмет каких-нибудь случайных косяков (не говоря уже о том, что возможно придется половину игры переписать, только для того, чтобы в этом злополучном кадре stop() не стоял)


Последний раз редактировалось azazul; 17.11.2009 в 15:36.