![]() |
|
||||||||||
|
|
|
|||||
|
Guest
Сообщений: n/a
|
У меня, пожалуй, далеко не новый вопрос:
Как наилучшим образом реализовать проверку на столкновение? Я почитал то, что нашёл по поиску, но это меня лишь запутало в том, чем же лучше пользоваться. И где можно найти описание этих дроптаргета и хиттеста: в АС словаре - нифига нету (или я не нашёл, по крайней мере). Чуть не забыл, мне нужно просто для шариков (различного размера), которые создаются duplicateMC. ЗЫ. за такую тему Max N Chubin_ точно нарисует палец вниз ![]() |
|
|||||
Цитата:
вот тебе URL: http://www.autotaganka.ru/asd.zip с Новым Годом! а вообще говоря выкладывай исходник с попытками и дед Мороз тебе мделает подарок если ты был хорошим мальчиком!
__________________
Max. |
|
|||||
|
Guest
Сообщений: n/a
|
Спасибо, дядя кул программер!
А вот исходник я тебе не вышлю - CLASSIFIED (если знаешь, что это значит), так сказать... |
|
|||||
|
Guest
Сообщений: n/a
|
Можно было бы просто сказать, что это в MC есть, т.к. то, что ты мне прислал, к твоему сведению, ни чем не отличается от AS Dictionary!
![]() |
|
|||||
|
1 - я тебе ничего не присылал. Я дал ссылку и сказал что это.
Цитата:
а шо такое "CLASSIFIED" - понятия не имею! может это када создание сайта начинается с написания формы для ввода пароля? ![]()
__________________
Max. |
|
|||||
|
Ветеран форума
|
вот не поленился... (незнаю только зачем) открыл значится хелп который с флешем даётся... и что же мы там видим?
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; Последний раз редактировалось nagash; 26.12.2002 в 23:08. |
|
|||||
|
в двух словах - _droptarget тут не к месту...
__________________
Max. |
|
|||||
|
Guest
Сообщений: n/a
|
Это я уже понял, а что же тогда с глюками хиттеста, про которые вы тут как-то говорили? Что он последний дупликат не видит и четвёртый с конца?
И что лучше в моём случае (мне просто круги нужны): 1) Можно проверять на разность расстояния между центрами шаров и суммой их радиусов; 2) Можно через этот хиттест; А как ещё можно? И что будет выгоднее? |
|
|||||
|
комментарий по поводу
Цитата:
hitTest имеет 2 вида: 1) пересечение прямоугольных областей вокруг объекта 2) перечесение контура объекта с точкой в связи с этим есть смысл использовать hitTest если шары небольшого размера (раз они маленькие их может быть много) а в случае шаров большого размера я бы попробовал метод расчета через координаты центра + радиус-азимут в сторону другого объекта... вообще говоря самое оптимальное по моему это hitTest во второй форме, но с упредительным расчетом столкновения в следующей точке. Объясню: когда шарик движется по экрану он движется дискретно, т.е. с каким то шагом. Так вот чтобы не было такого что шарик при столкновении погружается в объект-препятствие до самого центра или глубже(из-за большого шага) или вообще пролетает сквозь обект, нужно расчитывать координату шара следующую за текущей и проверять в ней и нескольких промежуточных точках столкновение с объектами, а затем корректировать координату шара. Короче это быстрее нарисовать, чем объяснить. а если бы ты сделал примерчик для своей задачки (раз уж исходник супер секретен), то было бы ваще хорошо!
__________________
Max. |
|
|||||
|
Guest
Сообщений: n/a
|
Спасибо. Дальше, я думаю, разбирусь. Мне просто хотелось узнать, что лучше, чтобы зря не делать долго, а потом убедиться в том, что вышло несколько фигово.
А с шагами - там всё тоже вроде бы понятно. Мне собственно надо абсолютно неупругое соударение, т.е. чтобы шарики прилипали друг к другу, поэтому даже если один из них и проникнет немного внутрь другого, то это даже лучше. А пролететь насквозь - врядли, т.к. скоростей настолько больших они вроде бы не будут развивать. Что касается конура, то это тоже то, что мне нужно, т.к. шарики, прилипая друг к другу, не будут уже шариками ![]() |
![]() |
Часовой пояс GMT +4, время: 03:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|