|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
override как правильно переопределять метод?
Доброго!
Дошло дело до различного поведения hero, строить километровые зависимости if else не хочется. Как красивый вариант дуаю подойдёт переопределение методов. Так вот, как правильно всё это дело построить? вот поведение по умолчанию, отрывок из класса, используется Nape private function preListenerCatAndMouse(cb:PreCallback):PreFlag { if (cb.int1.castBody.velocity.y > 0) { cb.int1.castBody.velocity.y *= -1; } else cb.int1.castBody.velocity.y -= 50; cb.int2.castBody.userData.collisionBoolean = true; if (!unlockedJumpBoolean) { stage.dispatchEvent(new UserEvent(UserEvent.UNLOCKED_JUMP, true, false)) unlockedJumpBoolean = true; } return PreFlag.IGNORE_ONCE; } Добавлено через 21 минуту А вообще можно-то переопределить метод, который вызывает слушатель? |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
приватные методы недоступны наследнику.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
это я уже выяснил, щас стоит protected
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Надо определить доступ как protected, тогда возможен override.
Однако вот это Цитата:
Добавлено через 3 минуты но, думаю, Вы имели ввиду всё-таки РАЗНЫХ наследников Hero.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
у меня hero, в игре получает разные способности на некоторое время и его поведение и управление соответственно изменяется. Как такое правильно и красиво организовать?
|
|
|||||
сделай просто свитч
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
Цитата:
Пока только вижу и двигаюсь к варианту, внутри класса написать приватные классы (можно конечно и отдельные, но не вижу смысла делать 5-7 классов в 10 строчек кода). В них же (приватных) и переопределять метод(ы). А в основном классе просто навещать слушателей событий, которые будут вызывать необходимый приватный класс |
|
|||||
Зачем тебе в нейпе подсовывать какое-то другое имя метода? Там при регистрации столкновения в метод-обработчик передается InteractionCallback вот так:
private function onCollision(collision:InteractionCallback):void { // ты можешь просто проверить тип события здесь if (collision.event == CbEvent.ONGOING) { // ... } else if (collision.event == CbEvent.BEGIN) { // ... } } У тебя какая-то сплошная каша и в коде и в вопросе. По-моему то, что ты хочешь сделать (если я правильно это понял), реализуется именно проверкой условия. Не нужно никаких методо переопределять. Переопределение требуется, допустим, если у тебя есть 2 разных класса персонажей, которые ведут себя по разному. Скажем, один идет, а другой идет, и после каждого шага подпрыгивает. Так ты в базом классе пишешь метод ходьбы. а в том классе, где требуется еще и подпрыгивание, пишешь переопределение Вот как-то так.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
caseyryan
хм, я не совсем понял ваш пример, как он мне поможет. Я использую только PreCallback, остальные не нужны Что я хочу сделать, есть персонаж, ведёт себя заранее опрелённым образом и обрабатывается определённое взаимодействие с Nape, пусть обрабатываются столкновения определённым образом. Дальше происходит событие и он теперь столкновение вообще не учитывает. Дальше происходит новое событие, столкновения снова учитываются, но уже другая реакция. При этом это не однократно, а в течении определённого времени. Простой пример, перс не может проходить сквозь стены, берёт очивку и в течении 10 секунд может |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
это классическая задача для использования stateMachine, под AS вроде есть готовы либы, но лучше написать самому чтобы лучше разобраться. переопределение методов не совсем тот случай. игровые ситуации бывают оч сложные
первое из гугла по теме http://www.gamedev.ru/code/articles/..._state_machine |
Часовой пояс GMT +4, время: 16:49. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|