[Урок] О типе Region
|
|
[DUОS] | Дата: Среда, 01 Февраля 2012, 22:42:15 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Сегодня нас ждёт очень интересный практикум, связанный с типом, которого в триггерах нет. Это тип region. region - тип, который позволяет создавать непрямоугольные области, разбросанные хоть по всей карте. Тип достаточно лёгок в освоении, однако есть несколько вещей, которые требуется запомнить. Функций, связанных с типом region, в common.j немного и надо знать их особенности. Создаётся такой регион через функцию CreateRegion(). Для построения сложного региона используются функции вида RegionAddCell и RegionAddRect. Разберём каждую.
RegionAddCell принимает в качестве параметров уже созданный регион и координаты x и y. Казалось бы, эта функция добавляет точку. Но ничего подобного! Она добавляет в регион прямоугольник размером 32х32 с центром в этой точке. Будьте внимательны и учитывайте это, чтобы избежать ошибок при построении региона. RegionAddRect принимает в качестве параметров уже созданный регион и прямоугольную область, которая в GUI называется Область, а в Jass носит название rect. Здесь никаких ухищрений нет.
Не забудьте, что region как и любой тип, наследующийся от handle, надо обнулять и можно удалять при помощи функции RemoveRegion. Конечно же, можно удалить отдельные Cell'ы или отдельный рект, используя функции RegionClearCell и RegionClearRect соответственно.
Теперь о том, как можно использовать этот тип для оптимизации своего кода в событиях триггеров. TriggerRegisterEnterRegion может отловить вход в регион и сразу же отфильтровать всех ненужных юнитов. TriggerRegisterLeaveRegion может отловить выход из региона и сразу же отфильтровать всех ненужных юнитов.
Ещё одно преимущество регионов над ректами заключается в том, что их событийно можно отловить, используя GetTriggeringRegion().
Этого багажа знаний вам должно хватить для построения нестандартных непрямоугольных областей. Вопросы принимаются в этой теме.
Добавлено (01 Февраль 2012, 22:42:15) --------------------------------------------- Ну давайте обсудим, что ли.
Сообщение отредактировал [DUОS] - Четверг, 02 Февраля 2012, 18:50:11 |
|
|
|
Diabfall | Дата: Среда, 01 Февраля 2012, 22:49:47 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Quote region - тип, который позволяет создавать непрямоугольные области. Можно сделать окружность?
|
|
|
|
[DUОS] | Дата: Среда, 01 Февраля 2012, 22:50:20 | Сообщение # 3 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Diabfall, Да, циклом точек)
|
|
|
|
Diabfall | Дата: Среда, 01 Февраля 2012, 23:05:15 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Немного не понял.) Начнем с простого. Как сделать треугольник или пятиугольник? Если не сложно, сделай пример(код).
Сообщение отредактировал Diabfall - Среда, 01 Февраля 2012, 23:11:53 |
|
|
|
SirNikolas | Дата: Четверг, 02 Февраля 2012, 18:33:52 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (|DUОS|) GetTriggerRegion() Исправь, пожалуйста.
|
|
|
|
[DUОS] | Дата: Четверг, 02 Февраля 2012, 18:50:23 | Сообщение # 6 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (SirNikolas) Исправь, пожалуйста. Сделал.
|
|
|
|
Diabfall | Дата: Четверг, 02 Февраля 2012, 19:40:32 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Quote (Diabfall) Немного не понял.) Начнем с простого. Как сделать треугольник или пятиугольник? Если не сложно, сделай пример(код). Всё сам разобрался... Понравилось, что можно делать такие фигуры как круг.
Жаль вар фаталит при попытке использовать глобальный регион. (vjass)
Сообщение отредактировал Diabfall - Четверг, 02 Февраля 2012, 19:41:06 |
|
|
|
SirNikolas | Дата: Пятница, 03 Февраля 2012, 13:42:51 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Diabfall) Жаль, вар фаталит при попытке использовать глобальный регион. (vjass) Опа!
|
|
|
|