Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   hitTest к многим обьектам не прямоугольной формы (http://www.flasher.ru/forum/showthread.php?t=84135)

fromotherplanet 24.08.2006 11:08

hitTest к многим обьектам не прямоугольной формы
 
Такая проблема: обьекты неправильной формы (не прямоугольные) создаються duplicateMovieClip бесконечно, и другие обьекты, с которыми надо сравнивать те обьекты тоже неправильной вормы и тоже создаються duplicateMovieClip бесконечно. Т.Е. есть мувик а, который постоянно дублируется, и мувик б, который так же всё време дублируеться, и а, и б - не правильной формы. Как проверить копии мувика а ,на чтото типа hitTest к копиям б?

Snakesdesign 24.08.2006 11:30

сделай 2 контейнера. В одном - все а, в другом все б. хиттесть эти 2 контейнера, как тока пересеклись, перебором узнавай какие именно. тока если очень много объектов, тормозить станет.... Хотя... Ищи в поиске по слову "коллизии" кажется, там был пример точно то что нужно.

fromotherplanet 24.08.2006 11:44

обьединять не хочется, да не получится все обьекты не зависят друг от друга(и конейнеры тоже проверяться будут по прямоугольникам), а перебором уж точно не получится их имена от например 1 до бесконечности, етож dplicatemovieclip, конечно клипы удаляются при определенных условиях (если покидают экран), но некоторые до этих условий "не доходят".

Snakesdesign 24.08.2006 11:46

до бесконечности вряд ли.. тормозы бы были:) почему некоторые "не доходят"?

fromotherplanet 24.08.2006 11:50

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

fromotherplanet 24.08.2006 12:04

Вложений: 1
я скорее всего буду вписывать в клип б(с которым всё намного сложнее чем с а), чтоб у всех обьектов б, был hittest на обьекты а, но как все обьекты а назвать одним "обращением"?
может можно обращаться ко всем клипам с одинаковой частью имяни одной командой? и ещё эта проблема с неправильной формой не понимаю как решается. нашёл флешку в которой это решино, но декомпелировать, и посмотреть как, не удалось.

iNils 24.08.2006 12:16

У BitmapData более продвинутый hitTest в плане объектов с неправильной формой (и даже с альфой). Но это работает только начиная с 8-ки.

fromotherplanet 24.08.2006 12:21

Жалко, у меня 7, а не можешь по подробнее описать? может куплю 8. А с исходником от 7 он будет нормально работать? Все команды от 7 работают?

fromotherplanet 24.08.2006 13:41

Ну так может кто-нибудь знает как обратится к мувикам с одинаковой частью имени? И как сделать hittest, как в test.swf(который в test.zip, н а 2 поста выше...)?

iNils 24.08.2006 14:06

http://livedocs.macromedia.com/flash...=00001958.html

fromotherplanet 24.08.2006 14:23

это про BitmapData? Спасибо, почитаю.

Kyber Anton 24.08.2006 14:54

..."как обращаться к клипам с одинаковой частью имени"...
допустим, клипы зовут _root.b1 , _root.b2 , ... e.t.c
Код:

namefirst = "b"
for(var i=1;i<=maxclip;++i){
nameofclip = namefirst+i;
_root[nameofclip] //вот это обращение к мувику.
}


fromotherplanet 24.08.2006 15:00

Спасибо попробую, а не будет тормозить с большим количеством мувиков?

fromotherplanet 24.08.2006 15:40

нет, это не получается. скорее всего, дело в том, что сначала не одного мувика с таким именем нет.
вот, как я писал: может не правильно? В мувик
Код:

onClipEvent (enterFrame) {
namefirst = "luch"
for(var i=1;i<=maxclip;i++){
nameofclip = namefirst+i;
_root.test=this.hitTest(_root[nameofclip])
}}


fromotherplanet 24.08.2006 16:00

Нельзя ли как нибудь сделать так, чтабы мувики при создании , добавляли свои имена, куда-нибудь, а потом драгие мувики делали на эти имена hittest? если можно, то как?

CCCPirate 24.08.2006 16:49

Цитата:

Сообщение от fromotherplanet
Нельзя ли как нибудь сделать так, чтабы мувики при создании , добавляли свои имена, куда-нибудь, а потом драгие мувики делали на эти имена hittest? если можно, то как?

Код:

for (var mov in клип_в_котором_мувики) {
        if (this.hitTest(mov)) {
                trace('пересечение'+this._name+' и '+mov._name);
        }
}

вставь такой код в прототип твоих мувиков и усе

кстати если мувики неправильной формы хиттест апроксимирует их квадратом, т е если нужно реалное столкновение надо на мувик ставить точки- детекторы

fromotherplanet 24.08.2006 17:18

не немного не то, все мувики в руте, мувики дулированные с мувика а, при создании записывают куда-то в список свои имена, мувики дублированные с мувика б вибят эти имена и делают на него hitTest,получается что-то типа :
Код:

if(this.hitTest("1 имя в списке") or this.hitTest("2 имя в списке")...this.hitTest("последнее имя в списке")){a=1}
, а при удалении(при вылете за пределы экрана) удаляют своё имя из этого списка. вот как мне надо.
Такое возможно?Как?

fromotherplanet 24.08.2006 17:49

нашёл похожую проблему, поиск юзал не в ту сторону: юзал на hittest, а там русскими буквами, попросил там помоч. Чувствую, я эту флэшку не доделую, слишком много "запорок"...но кто поможет, с хиттестом буду очень благодарен...

CCCPirate 24.08.2006 18:05

Ну так и сделай for (var имя in _root) и он автоматом переберет все объекты в руте.

Зачем для них массив имен создавать?

fromotherplanet 24.08.2006 18:10

я пробовал, во первых- тормозит, во вторых- перебирает, даже те, что не надо...:(

CCCPirate 24.08.2006 18:22

значит для тех что надо создай отдельный клип и перебирай объекты только в нем. зачем держать все мувики в руте?

fromotherplanet 24.08.2006 18:31

а будет перебирать все обьекты,которые существуют с данный момент, в этом мувике?

CCCPirate 24.08.2006 18:37

а ка ты думал?

будет перебирать

короче : делай класс клипов которые будешь аттачить в определенный клип и делай им функцию на проверку столкновений между объектами в том же клипе - запускай проверку на он ентер фрем или на сет интервал как хош

fromotherplanet 24.08.2006 18:56

Спасибо попробую, просто щас исходник не со мной...
ещё одна проблема, может знаешь, можно ли хиттестить к одной линии, и если она под наклоном, не к прямоугольнику, а только к линии, и если, труе центр обьекта встаёт в ближайшую точу этой линии и движется к концу этой линии... И чтоб у этой линии если менялся угол, всё равно движется? примерно так. если точнее, мне надо сделать управляемый "похищающий" луч для НЛО =) , которым можно притягивать обьекты, и человечков...На самом деле луч- вытянутый треугольник, а та линия-идёт по центру этого луча..Не знаешь какого-нибудь решения?

fromotherplanet 24.08.2006 19:04

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

CCCPirate 24.08.2006 19:06

наклонная линия - будет апроксимироваться прямоугольником

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

fromotherplanet 25.08.2006 10:19

А в 8 флэше можно сделать без этих точек?

iNils 25.08.2006 11:28

Вложений: 1
Вот пример на 8-ке, с упоминаемой мною выше возможностью хиттеста с альфа каналом.

fromotherplanet 25.08.2006 11:37

Обязательно посмотрю, когда восьмой флэш куплю...

fromotherplanet 25.08.2006 12:14

С похищающим лучём ничего и никак не получается:( , создал новую тем, о нем..

fromotherplanet 25.08.2006 12:36

Как сделать так, чтоб мувики(которые дублируются с клипа в руте) дублировались в какой-нибудь другой мувик?

iNils 25.08.2006 13:40

Так можно сделать только в AS3. Поэтому надо использовать attachMovie

fromotherplanet 25.08.2006 13:53

:(... Если всё будет ОК завтра, иду за восьмым флэшем...:)

fromotherplanet 25.08.2006 16:57

а чем различаются attachMovie и duplicateMovieClip?

etc 25.08.2006 17:46

fromotherplanet, первый достаёт мувик из либы, второй дублирует существующий.

fromotherplanet 25.08.2006 18:29

а как тогда можно использовать attachMovie вместо duplicateMovieClip

etc 25.08.2006 18:33

Точно так же, только доставать мувик из либы, а не копировать существующий.

fromotherplanet 25.08.2006 18:42

А имена им даются так-же, как и при duplicateMovieClip?

etc 25.08.2006 18:49

http://livedocs.macromedia.com/flash.../00001724.html
http://livedocs.macromedia.com/flash.../00002440.html

fromotherplanet 25.08.2006 18:52

Спасибо!


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

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