Вверх ↑
Этот топик читают: Гость
Ответов: 177
Рейтинг: 24
#1: 2014-05-15 15:45:49 ЛС | профиль | цитата
На поле несколько картинок и мне их нужно цеплять мышкой и двигать по полю. Подскажите, как можно этого добиться??? При этом нужно чтобы при перемещении, картинки не заходили одна за другую. То есть, чтобы при столкновении останавливались и не залазили одна на другую. Буду благодарна за помощь!

code_33604.txt


карма: 1

0
файлы: 1code_33604.txt [6.4KB] [128]
Ответов: 1536
Рейтинг: 176
#2: 2014-05-15 16:00:18 ЛС | профиль | цитата
Количество картинок должно быть разным или постоянным? То есть, их возможно будет удалять или подгружать.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 177
Рейтинг: 24
#3: 2014-05-15 16:02:45 ЛС | профиль | цитата
ser_davkin писал(а):
Количество картинок должно быть разным или постоянным?


Сменятся будут сами картинки, а размер и количество их всегда одинаковое!
карма: 1

0
Ответов: 1536
Рейтинг: 176
#4: 2014-05-15 16:12:57 ЛС | профиль | цитата
Add(Image,9953033,245,154)
{
Left=75
Top=70
Width=90
Height=100
ViewStyle=3
Picture=[ZIPCA01000078DA73F23DC5C800064E40AC01C47C50CCC820C0C00CA43B80F242DC100C07350C0C0F8092F240E6FF7AFC30D8CD47F35E358C77AFDA5BB3C40DC23672BBA4FB4517267BAF3A573540F00D4B3058D65B33CC6A7FFA65556F4D10CF47F1B2EA1DB70041086F6FB98FAAA9597DFC46C55EA0EECBAA7FBC3629F66AEE2D87D9A0AD286AF4C74B5F70A36284D924591F5584ED2098A33B51D636DC36D85F345713DDAD399A973465FC675AF98BFAA0C8DDAB06B9A0D28A8FB74052D6FF9226C2477BCB733527C9EEB29B2899ABDB6B286A14177E59B5172AEB0DF4CF6DA702491F45104F5BF1B2E61D275EDE6C5D102FC8ED2D4B80609F26CCFC5C4D7DDE552CC57E107E085A98F96806BB110A6700F0D9D726]
Point(doLeft)
Point(doTop)
Point(Handle)
Point(onMouseMove)
Point(doBringToFront)
Point(onMouseDown)
link(onMouseMove,13383908:doMove,[(298,167)(298,209)(240,209)(240,230)])
link(onMouseDown,9953033:doBringToFront,[(289,174)(289,199)(233,199)(233,188)])
}
Add(MoveWindow,13383908,252,224)
{
link(Handle,9953033:Handle,[])
}

Перемещать-то их можно, но вот с коллизией сложнее.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
файлы: 1code_33605.txt [860B] [98]
Ответов: 177
Рейтинг: 24
#5: 2014-05-15 16:18:46 ЛС | профиль | цитата
ser_davkin писал(а):
code_33605.txt
Перемещать-то их можно, но вот с коллизией сложнее.


И на этом спасибо. Мне казалось перемещение это сложно, а оказалось до обидного просто! ))
А вот столкновение, я пыталась сделать при помощи игровых спрайтов, но там всё так мудрено и сложно...
В общем, спасибо. ))
карма: 1

0
Ответов: 2292
Рейтинг: 678
#6: 2014-05-15 19:38:50 ЛС | профиль | цитата
[offtop]
ser_davkin писал(а):
с коллизией сложнее.
А что вы скажите на такое: в один элемент добавить пару строк и можно обрабатывать коллизию не только прямоугольников, но и любых 2D фигур [/offtop]
карма: 11

0
Ответов: 1536
Рейтинг: 176
#7: 2014-05-15 20:38:34 ЛС | профиль | цитата
[offtop]sla8a, полагаю, вопрос адресован к Гуру.[/offtop]
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 8930
Рейтинг: 823
#8: 2014-05-19 23:51:06 ЛС | профиль | цитата
sla8a, с нетерпением ждём
А пока пришлось на арифметике сделать Правда недостаток есть, при быстром движении мышкой не успевает отработать, наверное таймер MouseMove большой интервал имеет
карма: 19

0
файлы: 1contact.rar [3.5KB] [103]
Ответов: 2292
Рейтинг: 678
#9: 2014-05-20 02:33:26 ЛС | профиль | цитата
Леонид, [flood]
Леонид писал(а):
с нетерпением ждём
Вы не верите что это возможно? Постараюсь на этой недели все "причесать" и выложить.
То что вы пытались сделать на стандартных элементах (61 штука) и у вас не получилось. При использовании всего 3 новых элементов (без подключения каких либо dll и с кодом не более строк 150) схема в 42 элемент прекрасно обрабатывает коллизию двух Image.
Статистика писал(а):
All: 42, sdk: 42, MultiElements: 0, Core: 10, links: 0, points: 152
При чем тягать можно любой из двух Image и не один не залезет на другой. Недостатков при быстром движении мыши нет.
Для сравнения такая же схема но уже с 5 Image (размеры каждого разные), при том же функционале создается на 62 элементах.
Статистика писал(а):
All: 62, sdk: 62, MultiElements: 0, Core: 16, links: 0, points: 240
Из арифметики только + и -.
Теперь к самому интересному, почему же эти элементы до сих пор не были выложены. А все потому, что я не понимаю можно ли вообще использовать для определения коллизии, то что использую в элементах (напомню что программированию я нигде не обучался). С одной стороны все работает и достаточно просто, а с другой, мне нигде не попадалось даже намека на использования этого способа для определения коллизии. Вот меня все время и мучает вопрос: "А не херню ли я сделал?". Одно радует, если это даже и "херня", то работает.

Вот нашел тему (это она) где мне так и сказали: "оставь надежду". А у меня без движка и без какой либо арифметики, машинки (см. архив в 6 посте) прекрасно сталкиваются.
[/flood]
карма: 11

0
Ответов: 8930
Рейтинг: 823
#10: 2014-05-20 10:33:16 ЛС | профиль | цитата
sla8a, какой же это флуд, всё в теме Я-то тоже не программист и поэтому верую А не получилось из-за не додуманой логики: надо считать не существующее положение, а предпологаемое, тогда и ошибки не будет, сейчас попробую
------------ Дoбавленo в 10.33:
Выложил в предыдущем посте архивом (при правке форум в скрол запихивает).
карма: 19

0
Ответов: 13
Рейтинг: 0
#11: 2014-06-30 15:59:40 ЛС | профиль | цитата
Может кто подскажет.
Правый прямоугольник подставляется к левому. Но это когда изначально задано определённое количество прямоугольников.
А как создавать эти самые прямоугольники, при выборе строки в таблице? Либо при клике на строке, либо перетаскиванием.
code_33915.txt
карма: 0

0
файлы: 1code_33915.txt [6.2KB] [181]
Ответов: 824
Рейтинг: 138
#12: 2014-06-30 16:39:17 ЛС | профиль | цитата
PEH писал(а):
А как создавать эти самые прямоугольники, при выборе строки в таблице? Либо при клике на строке, либо перетаскиванием.
Вам нужно использовать динамическую панель ChildPanelEx, метод ##add
карма: 1

0
Ответов: 2292
Рейтинг: 678
#13: 2014-06-30 20:44:28 ЛС | профиль | цитата
sashaoli писал(а):
Вам нужно использовать динамическую панель ChildPanelEx, метод ##add
Небольшая поправка: не нужно, а можно. Так как можно еще и рисовать эти прямоугольники, а их данные хранить в списке, массиве или базе данных. Перетаскивание и "прилипание" таких (нарисованных) прямоугольников, тоже возможно. И плюсы (при большом количестве), в меньшем использовании ресурсов.
карма: 11

0
Ответов: 824
Рейтинг: 138
#14: 2014-06-30 21:21:59 ЛС | профиль | цитата
[flood]
sla8a писал(а):
Небольшая поправка: не нужно, а можно. Так как можно еще и рисовать эти прямоугольники, а их данные хранить в списке, массиве или базе данных. Перетаскивание и "прилипание" таких (нарисованных) прямоугольников, тоже возможно. И плюсы (при большом количестве), в меньшем использовании ресурсов.
А вот, я, с этим спорить не буду.... Но, к сожалению, кроме как вырисовывать фигурки в контейнере другого способа незнаю [/flood]
карма: 1

0
Ответов: 2292
Рейтинг: 678
#15: 2014-06-30 22:50:27 ЛС | профиль | цитата
sashaoli, [flood]Большое количество интерфейсных элементов[/flood]
карма: 11

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)