Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Имя клипа по координатам (http://www.flasher.ru/forum/showthread.php?t=41166)

Sebis 23.12.2002 02:05

Имя клипа по координатам
 
Всем привет! Можно ли как-то узнать имя клипа по известным координатам?

fiza 23.12.2002 02:39

может _droptarget поможет?
хотя это будет как-то через...

Max N Chubin_ 23.12.2002 13:32

hittest тебе поможет
 
Вложений: 1
втотебе примерчик показывающий как обнаруживать какие клипы находятся в данной координате...
он лишь набросок. но суть я думаю будет ясна...
перебираешь все клипы в нужном объекте и для всех их проверяешь hitTest(x,y,1) где X и Y - нижная координата.

это конечно несколько грубо, ну а оптимизация лежит на тебе...
;)

Sebis 23.12.2002 13:44

И когда ты успел столько написать...
Спасибо, попробую разобраться.

Max N Chubin_ 23.12.2002 13:50

ты не поверишь...
 
на все ушло аж 5 минут...
особенно сложно было вырисовывать примеры клипов!!!
:D :D :D :D
сам код определения там 4 строки!
for (t in _root) {
if (_root[t].hitTest(x, y, 1) and t != "lines") {
trace(_root[t]);
}}
я исключаю клип "lines" потому что он вспомогательный.

AnGL 23.12.2002 15:43

Совершенно неоптимально.
Лучше хранить матрицу координат клипов и по ней определять имя. Многомерный массив...

А.

Max N Chubin_ 23.12.2002 16:00

ну ну...
 
вы собсно товариСЧ о чем говорите? :confused:
какие координаты в массив загнать? :confused:
МНогомерный массив говорите оптимальнее??? :confused:
ну, а если клипы двигаются, добавляются/удаляются, масштабируются... вы наверное в enterFrame будете обновлять многомерный массив? ;) и тут же проверку проводить на ... кстати на что? как вы проверите попадает ли точка с указанными координатами на тело клипа? А заполнять массив как планируете? :D :D :D

предлагаю вам слегка напрячЬся и сделать примерчик! Чтобы осмыслить то, что вы написали... :rolleyes:

AnGL 23.12.2002 16:48

Все зависит от конкретной задачи.
Если MovieClip-ы одинакового размера, то их координатные области известны. Создаем матрицу, накладываем ее на сцену и перемещаем координаты в сцене и поинтер в массиве. Если хотим получить клип в заданной области, берем из массива имя этого клипа :)

Если клипы произвольной формы и размера, опять же используем разбиение экрана на подобласти для их обработки тем же hitTest-ом, чтобы не сканировать все MovieClip-ы...

Чего тут не понятного.

А.

Max N Chubin_ 23.12.2002 17:01

а если на пальцах то...
 
я тебе задал целую кучу вопросов...
ответь на них..
и где пример?
теория это здорово, давай реализацию на многомерных массивах!
простой такой пример!
;)

AnGL 23.12.2002 18:59

Re: а если на пальцах то...
 
Вложений: 1
Цитата:

Оригинал написал(а) Max N Chubin_
я тебе задал целую кучу вопросов...
ответь на них..
и где пример?
теория это здорово, давай реализацию на многомерных массивах!
простой такой пример!
;)

Работа млин...
Держите небольшой примерчик. Если немного усовершенствовать, получится вообще конфетка ;)

А.

PS. Мужички, ну зачем на понт брать, неужели трудно собственной головой подумать, скриптики пописать... Отрываете от работы старого программиста... :rolleyes:

Max N Chubin_ 23.12.2002 19:48

гм...
 
Цитата:

Если немного усовершенствовать, получится вообще конфетка
м-да...
что это?
старый программист говоришь или кондитер?
;) (добрая шутка)
это подойдет пожалуй если делать игрушку Puzzle или Пятнашки...
кто говорил, что объекты одинаковых размеров и очертаний?
кроме этой основной причины по которой твой скрипт ПОЛНОСТЬЮ не подходит есть еще несколько причин, таких как:
- он не позволяет находиться в одной области нескольким объектам (если ты конечно не введешь 3-е измерение);

- он абсолютно статичен!!!

Нет конечно можно ввести функцию апдейта для элементов массива, но тогда теряется вся задумка - "сделал раз, ем и сейчас" не так ли?

Короче как я понял заявление:
Цитата:

Совершенно неоптимально.
тут не к месту... или да?
;)

Цитата дня: Возраст программиста не влияет на его уровень.

AnGL 25.12.2002 12:32

Простите, я не любитель писать длинные петиции, но...

Все же деление экрана на подобласти есть хороший способ оптимизации. Как я уже говорил, все зависит от конкретной задачи. К тому же Вам следовало подумать чуточек глубже.

Причем здесь Puzzle или Пятнашки, возмем усовершенствованный вариант:
- У нас есть подобласти, в каждой из которых известны клипы, т.е. для перебора hitTest-ом остаются только те, которые видны в данной подобласти...

По моему этого достаточно.
С уважением,
А.

Max N Chubin_ 25.12.2002 12:44

в общем ладно...
 
я частично согласен, что оптимизация штука полезная и ваш метод в некоторых случаях будет весьма полезен, однако в данном топике мне кажется это не совсем подходящий способ...

Цезарю - Цезарево, а кесарю - кесарево(сечение)!

AnGL 25.12.2002 13:44

Цитата:

Max N Chubin_
И все же полезный топик получился ;)
А.

Sebis 27.12.2002 21:20

Жаль, что я программист начинающий, я бы с ходу разобрался что к чему, а так я только челюсть подбираю, когда ваши письма читаю. Короче, мне нужно как-то выловить момент окончания игры, когда все пазлы на своих местах. Причем вариантов сборки может быть несколько, но это позже. Первичная задача - при определенной комбинации сообщить игроку, что он отмучался, game over. Мне кажется, что координатная матрица будет в самый раз для моей задачи, но пока еще не могу уложить у себя в мозговой матрице что к чему. Сейчас засяду в ночь, может, к утру что-то и прояснится. Все равно спасибо!

Usnul 28.12.2002 02:28

а почему бы не ломом!
напрямую то биш, тебе надо-то 10х10, ну мож чуть побольше или меньше, но в любом случае, о тормозах и речи быть неможет. так что можно просто проверять for(){}-ом да и немучатся, около ста значений - это не тормоза!

Geniot 28.12.2002 15:37

Про матрицу
 
Я, вот, тут зачитался вашими перепитиями. Хотел бы тоже поделиться своим опытом в работе с массивами, их динамическом обновлении и определении местарасположения муви клипа.
В общем, я сейчас пишу тетрис и там я придумал следующий вариант: все клетки тетриса представляют собой двумерный массив (x,y) - тип boolean. Если в клетке есть кубик truefalsearray[xpositionindex][ypositionindex]=true. При нажатии на клавишу "left","right","rotate" проверяется возможность такого действия обращением к этому массиву. Когда кубик достигает стоп-точки, он копируется в виде составляющих его кубиков-элементов, а сам он удаляется. В общем происходит подмена.
onEnterFrame изменяет только xpositionindex и ypositionindex. Проверка массива идёт только при нажатии на клавиши. Обновление массива происходит только по достижении кубиком стоп-точки.
Фактически месторасположение мс мне нужно, поэтому моё добавление только так, про динамическое обновление и проверку массивов.
Похоже FlashMX отлично с этим спровляется, потому что проверка массива при вращении кубика и его перемещении осуществляется очень быстро и совсем не подтормаживает как тетрис, который можно найти здесь http://194.109.142.146/games/photoblocks/pblocks.swf

Max N Chubin_ 28.12.2002 19:58

красивый тетрис!
 
Вложений: 1
Молоток, приятно сделан тетрис!

Кстати, по поводу пазлов...
тут одна бывшая русская, а теперь немка просила ей помочь сделать пазлик...
дык я ей слабал скелетик минут за 40...
вот он посмотри, мож чего пригодицца...


Часовой пояс GMT +4, время: 04:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.