Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   HitTest & DropTarget...? (http://www.flasher.ru/forum/showthread.php?t=41285)

Mad_Cat 26.12.2002 17:38

HitTest & DropTarget...?
 
У меня, пожалуй, далеко не новый вопрос:
Как наилучшим образом реализовать проверку на столкновение? Я почитал то, что нашёл по поиску, но это меня лишь запутало в том, чем же лучше пользоваться.
И где можно найти описание этих дроптаргета и хиттеста: в АС словаре - нифига нету (или я не нашёл, по крайней мере).
Чуть не забыл, мне нужно просто для шариков (различного размера), которые создаются duplicateMC.

ЗЫ. за такую тему Max N Chubin_ точно нарисует палец вниз :rolleyes:

Max N Chubin_ 26.12.2002 18:58

любой каприз за ваши деньги!
 
;)
Цитата:

И где можно найти описание этих дроптаргета и хиттеста
к Новому Году в рамках программы "Каждому слепому ребенку книжку в подарок" высылаю мануал по Action Script в формате книги PDF. Б Е С П Л А Т Н О!
вот тебе URL:
http://www.autotaganka.ru/asd.zip

с Новым Годом!

а вообще говоря выкладывай исходник с попытками и дед Мороз тебе мделает подарок ;)
если ты был хорошим мальчиком!

Mad_Cat 26.12.2002 20:05

Re: любой каприз за ваши деньги!
 
Спасибо, дядя кул программер!
А вот исходник я тебе не вышлю - CLASSIFIED (если знаешь, что это значит), так сказать...

Mad_Cat 26.12.2002 20:09

btw
 
Можно было бы просто сказать, что это в MC есть, т.к. то, что ты мне прислал, к твоему сведению, ни чем не отличается от AS Dictionary! ;)

Max N Chubin_ 26.12.2002 20:22

ну вот...
 
1 - я тебе ничего не присылал. Я дал ссылку и сказал что это.
Цитата:

Спасибо, дядя кул программер! что ты мне прислал, к твоему сведению, ни чем не отличается от AS Dictionary!
2 - ура, он глянул в мануал!

а шо такое "CLASSIFIED" - понятия не имею!
может это када создание сайта начинается с написания формы для ввода пароля? ;)

nagash 26.12.2002 23:06

вот не поленился... (незнаю только зачем) открыл значится хелп который с флешем даётся... и что же мы там видим?
MovieClip.hitTest

Availability


Flash Player 5.

Usage


myMovieClip.hitTest(x, y, shapeFlag)
myMovieClip.hitTest(target)
Parameters


x The x coordinate of the hit area on the Stage.

y The y coordinate of the hit area on the Stage.

The x and y coordinates are defined in the global coordinate space.

target The target path of the hit area that may intersect or overlap with the instance specified by MovieClip. The target usually represents a button or text-entry field.

shapeFlag A Boolean value specifying whether to evaluate the entire shape of the specified instance (true), or just the bounding box (false). This parameter can only be specified if the hit area is identified using x and y coordinate parameters.

Returns


Nothing.

Description


Method; evaluates the instance specified by MovieClip to see if it overlaps or intersects with the hit area identified by the target or x and y coordinate parameters.

Usage 1: Compares the x and y coordinates to the shape or bounding box of the specified instance, according to the shapeFlag setting. If shapeFlag is set to true, only the area actually occupied by the instance on the Stage is evaluated, and if x and y overlap at any point, a value of true is returned. This is useful for determining if the movie clip is within a specified hit or hotspot area.

Usage 2: Evaluates the bounding boxes of the target and specified instance, and returns true if they overlap or intersect at any point.

Example


The following example uses hitTest with the x_mouse and y_mouse properties to determine whether the mouse is over the target's bounding box:

if (hitTest( _root._xmouse, _root._ymouse, false));
The following example uses hitTest to determine if the movie clip ball overlaps or intersects with the movie clip square:

if(_root.ball, hittest(_root.square)){
trace("ball intersects square");
}

а потом решил а почему бы ещё не посмотреть... и что же я там ещё нашёл?
MovieClip._droptarget

Availability


Flash Player 4.

Usage


myMovieClip._droptarget
Description


Property (read-only); returns the absolute path in slash syntax notation of the movie clip instance on which the MovieClip was dropped. The _droptarget property always returns a path that starts with a slash (/). To compare the _droptarget property of an instance to a reference, use the eval function to convert the returned value from slash syntax to a dot syntax reference.

Example


The following example evaluates the _droptarget property of the garbage movie clip instance and uses eval to convert it from slash syntax to a dot syntax reference. The garbage reference is then compared to the reference to the trash movie clip instance. If the two references are equivalent, the visibility of garbage is set to false. If they are not equivalent, the garbage instance is reset to its original position.

if (eval(garbage._droptarget) == _root.trash) {
garbage._visible = false;
} else {
garbage._x = x_pos;
garbage._y = y_pos;
}
The variables x_pos and y_pos are set on Frame 1 of the movie with the following script:

x_pos = garbage._x;
y_pos = garbage._y;

Max N Chubin_ 26.12.2002 23:24

короче...
 
в двух словах - _droptarget тут не к месту...

Mad_Cat 27.12.2002 11:40

Это я уже понял, а что же тогда с глюками хиттеста, про которые вы тут как-то говорили? Что он последний дупликат не видит и четвёртый с конца?
И что лучше в моём случае (мне просто круги нужны):
1) Можно проверять на разность расстояния между центрами шаров и суммой их радиусов;
2) Можно через этот хиттест;
А как ещё можно? И что будет выгоднее?

Max N Chubin_ 27.12.2002 12:01

м-да...
 
комментарий по поводу
Цитата:

И что лучше в моём случае (мне просто круги нужны):
ты попробуй и то и другое...

hitTest имеет 2 вида:
1) пересечение прямоугольных областей вокруг объекта
2) перечесение контура объекта с точкой

в связи с этим есть смысл использовать hitTest если шары небольшого размера (раз они маленькие их может быть много)
а в случае шаров большого размера я бы попробовал метод расчета через координаты центра + радиус-азимут в сторону другого объекта...

вообще говоря самое оптимальное по моему это hitTest во второй форме, но с упредительным расчетом столкновения в следующей точке.
Объясню: когда шарик движется по экрану он движется дискретно, т.е. с каким то шагом. Так вот чтобы не было такого что шарик при столкновении погружается в объект-препятствие до самого центра или глубже(из-за большого шага) или вообще пролетает сквозь обект, нужно расчитывать координату шара следующую за текущей и проверять в ней и нескольких промежуточных точках столкновение с объектами, а затем корректировать координату шара.
Короче это быстрее нарисовать, чем объяснить.
а если бы ты сделал примерчик для своей задачки (раз уж исходник супер секретен), то было бы ваще хорошо!

Mad_Cat 28.12.2002 19:13

THX
 
Спасибо. Дальше, я думаю, разбирусь. Мне просто хотелось узнать, что лучше, чтобы зря не делать долго, а потом убедиться в том, что вышло несколько фигово.
А с шагами - там всё тоже вроде бы понятно.
Мне собственно надо абсолютно неупругое соударение, т.е. чтобы шарики прилипали друг к другу, поэтому даже если один из них и проникнет немного внутрь другого, то это даже лучше. А пролететь насквозь - врядли, т.к. скоростей настолько больших они вроде бы не будут развивать.
Что касается конура, то это тоже то, что мне нужно, т.к. шарики, прилипая друг к другу, не будут уже шариками :D


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

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