![]() |
Вопрос по переменным в классах
Вопрос 1 : как неявно обьявить переменную в классе
Вопрос 2 : как связать эти переменные с onClipEvent(load){ } помогите решить эти два вопроса из-за них просто плыву в классах а вообще дело в том что изначально я писал игру в кадрах без классов, все получалось никаких проблем не было, когда выяснялось что нужно (это курсовая) использовать ООП естественно нужно было писать в классах, начал копировать работающие функции из кадров в соответственные классы и все поплыло, постоянно какие то проблемы в основном только с переменными они получаю не те значения которые нужны и я не понимаю как их занести в onClipEvent(load){ } потому что если не занести просто не работает много чего (проверял уже когда в кадрах писал) очень прошу помощи! |
Цитата:
Код AS1/AS2:
Цитата:
|
вот даже к примеру у меня есть ф-ция которая прописана в кадре
Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
Добавлено через 7 минут вот так я перевел эти ф-ции в класс Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
|
Мда. Большая беда.
Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
Теперь насчет кода на клипе. Вы пользуетесь инстанс-нэймами у клипов, и это правильно. Но что вам мешает в том же кадре прописать такой код: Код AS1/AS2:
Кстати, вам initGame-то вообще не нужна. Просто объявили бы все эти переменные в самом начале и все. Еще одно замечание: Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
Код AS1/AS2:
Относительно кнопки, которая ловит нажатие пробела... Убирайте ее и пропишите следующий код в кадре: Код AS1/AS2:
Добавлено через 5 минут Обновил страницу, увидел дополнение к вашему посту. Цитата:
Разделите сущности вашей игры по их смыслу и создайте соответствующие классы. Игрок — класс Cat (насколько я понимаю), нужны игровые звуки — создаете класс GameSounds, у которого будете в нужный момент вызвать метод, например, "playShootSound". Нужен общий класс для того, чтобы создать экземпляры игрока, противников, ландшафта и т.д. и контролировать всю игру — создаете класс GameController. |
Цитата:
Код AS1/AS2:
|
Использование динамических классов почти всегда означает ошибку в логике программы. Динамические классы и создание их полей (переменных) на лету (в рантайме) зачастую грозит неправильной работой всего приложения.
Вы же прекрасно знаете, какие поля класа вам потребуются, зачем вам изменяемый класс-то? Код AS1/AS2:
Цитата:
|
спасибо большое попробую, да я разделил все по классам как вы говорите, но экземпляры создавал в кадре а не в общем классе,
|
В кадре просто точку входа создайте. Первый кадр основной временной шкалы:
Код AS1/AS2:
Примерно так: Код AS1/AS2:
P.S. В некоторых моментах могу ошибаться, возможно те, кто получше меня соображают, как правильнее написать код игры, меня поправят. |
Цитата:
|
А я не понял вашего вопроса.
Смысл следующий: вы можете назначить мувиклипу в кадре onEnterFrame = function()... , а можете и на самом мувиклипе код прописать onClipEvent(enterframe){... . Так вот первый вариант лучше. |
вот обьясните мне почему в этом коде (комментарий читайте ниже)
Код AS1/AS2:
|
Ноль дает в самом начале. Так как вы инициализировали переменную с таким значением.
Ctrl + Shift + F автоформатирование кода. Кстати я бы чуток подправил бы код. Вам nextBullet не нужно скорее всего (достаточно использовать "bullet_"+depth для имени новой пули). Если нужно — тогда ассоциативное название не помешало бы, например, bulletCounter (счетчик пуль). И вынес бы в отдельную переменную минимальную задержку перед следующим выстрелом, например так: Код AS1/AS2:
Добавлено через 4 минуты Да, и изначальное значение для nextBulletTime поставил бы -nextShootDelay , чтобы можно было сразу при старте игры стрелять, а не ждать, пока пауза пройдет. |
всеравно суть та я понял задержки но сделать ее не получается значение nextBulletTime остается одинаковым и не меняется,может цикл другой поставить просто я считал что эта строка
Код AS1/AS2:
|
dimaMJ, не забывайте про запятые и точки, на форуме принято грамотно писать :)
Код AS1/AS2:
|
Цитата:
- Этот оператор в определении класса недопустимо. |
Весь код из моего предыдущего сообщения я прописал в кадре.
|
добавил событие кнопки в кадр и получается такое что при нажатии пробела один раз сначала выводит много нулей, а когда второй раз то вот такое
0 0 0 7167 7185 7185 7185 7185 7185 7185 7185 7185 7185 7185 7185 7185 7185 7186 7186 7186 7186 7186 7186 7186 7186 7186 7186 7186 7186 7186 7186 7186 7187 7187 7187 7187 7187 7187 0 0 0 0 дело в том что у меня при нажатии еще вызывается звук и он как то ужасно искажается от этого |
Если вы тестируете во флэше (в среде разработки), то зайдите в меню плеера (при тестировании) "Control" и щелкните "Disable keyboard shortcuts". Что-то мне подсказывает, что у вас там несколько кадров, а по нажатию на пробел (при отладке), у вас включается воспроизведение.
Хотя я не уверен. |
сделал ничего не изменилось странно как то при зажатии пробела паузы нет
|
dimaMJ, не забывайте про запятые, точки и большие буквы в начале предложений. Серьезно, правила для всех, не дожидайтесь замечаний от модераторов.
Выкладывайте исходник тестовый, посмотрю, как время будет. |
Вложений: 1
хорошо, вот
ну что? |
Ребята ну мне нужна помощь, что там?
|
Не открывается там.
|
что не открывается, у меня все открывается
|
dimaMJ, вероятно, ваш файл FLA сохранен из версии Adobe Flash CS6 в соответствующем формате по умолчанию. Не все флешеры могут открыть такой исходник, эта программа еще достаточно нова и не всем доступна. Пересохраните исходник в как можно более ранней версии.
И еще - предложения пишите с заглавных букв, а заканчивайте точкой или другими знаками препинания, у нас действуют правила грамматики. Это правило форума. |
Вложений: 1
Вроде перезаписал в версию CS5, вот.
|
| Часовой пояс GMT +4, время: 05:30. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.