![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 3
|
Цель: сделать примитивный конструктор, перемещая детали строим произвольный дом...
Как я это вижу: я нарисовал все детали(кирпичи, несколько дверей, окно и т.д) в виде mc. Мне нужно, чтобы при нажатие на одну из таких деталей, она бы копировалась на рабочую область и было бы активна, то бишь ее можно было перемещать мышью в области постройки...И это действие происходило бы многократно и хорошо бы при приближение происходила бы привязка-одна к другой, в зависимости от стороны...Просто хотел поинтересоваться у опытных людей, как это можно сделать, какие функции можно использовать при этом, так как сам не знаю совершенно...Горю) |
|
|||||
|
Модрон-ветеринар
|
Если конструктор 2d, то в целом особых сложностей не вижу. Это сделать можно.
Единственное - сложновато, но вполне возможно сделать "притягвание" с последующим точным позиционированием детали. Можно у каждой детали сделать на сторонах некие невидимые мувики-стыковочные элементы, и при движении детали проверять hitTest стыковочного элемпента на такие же элементы потенциальных соседей. Как только эти стыковочный элемент войдет в контакт с соседями, делать проверку на взаимостыкуемость, причем не только с данной соседкой, но и со всеми соседями. Если стыковать можно - то позиционировать в точные координаты и прекращать движение. Для осуществления проверки нужно создать набор массивов для каждой детали, в которых бы хранились данные о стыкуемости каждой из сторон с разными другими деталями (их сторонами). Если не осиливаете - вам в Вакансии. Последний раз редактировалось mooncar; 14.12.2009 в 23:53. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
По-моему проще продумать конфигурацию деталей таким образом, чтобы все они ровно вписывались в одну сетку, например 10х10 пикселей, окно - 100 на 80, кирпич - 20 на 10 и так далее (детали должны быть прямоугольными). Хранить данные о вставленных элементах в двухмерном массиве (или в одномерном, с несложным последующим пересчетом). При движении объекта проверять, занята ли клетка другим объектом или же нет, и пристыковывать по сетке, рассчитывая координаты, исходя из положения в массиве.
__________________
hauts.ru |
|
|||||
|
Модрон-ветеринар
|
Ну, если делать примитивный конструктор, то можно и не учитывать взаимостыкуемость и конечно, можно проще. Например, то, что оконный блок нельзя лепить один к другому без дополнительной рамы/арки, можно в таком случае и не учитывать. Но притягивание все-таки по хит-тесту делать придется, хотя бы по хиттесту центра элемента на координаты, близкие к периметру уже посаженных элементов.
Нельзя забывать и о том, что должна быть возможность поворачивать деталь, поэтому для точного позиционирования желательна анимация, разворот предварительной в ближайшее правильное положение, иначе будет неказисто выглядеть. Одним словом, осталось начать и сделать. ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|