Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проверка на столкновение с объектами определенного класса (http://www.flasher.ru/forum/showthread.php?t=131006)

Xero201 10.10.2009 17:30

Проверка на столкновение с объектами определенного класса
 
Ребята, подскажите пожалуйста как сделать следующую штуку:
В основном классе (Document class) создаются обекты класса A, и В (из одного пакета test). Каждый раз после перемещения объекта класса A, нужно проверить, столкнулся ли он с каким-нибудь объектом из B, или нет.
Хотелось бы, чтоб выглядело примерно так:
Код AS3:

package test{
        public class A{
                public function A(){
                        // код
                        this.addEventListener(MouseEvent.MOUSE_UP,stopDragElement);
                }
        private function stopDragElement(e:Event):void{
                this.stopDrag();
                if(this.hitTestObject(любой объект b принадлежащий B)
                        trace("Столкновение вот с этим объектом"+b);
                }
        }
}

:rolleyes:

alecsisk 10.10.2009 18:16

Вложений: 1
Вот почти то, что вы хотели :). Только столкновение проверяется в родительском классе.

Xero201 10.10.2009 19:50

Спасибо, alecsisk, пойдет и так.
Но вот еще вопрос:
Можно ли как-нибудь узнать все объекты, с которыми столкнулся а?
Например:
Код:

МассивХранящийОбъекты =  а.ВыдатьВсеОбектыСкоторымиОнСтолкнулся();
Ведь тогда можно будет перебирать не объекты типа В, а объекты, участвующие в столкновении и уже из них брать подходящие (и делать это где угодно, а не только в родителе)

alecsisk 10.10.2009 20:11

удалите bArray из кода и те места где он используется. Замените в классе Main:
Код AS3:

private function onMoveA (e:Event):void {
        var myArray:Array = [];
 
        for (var i:uint = 0; i < this.numChildren; i++) {
                var mc:DisplayObject = this.getChildAt(i);
                if (!(mc is A) && isCollision(a, mc)) myArray.push(mc);
        }
 
        trace(myArray);
}


Xero201 10.10.2009 22:02

Не, хочется наоборот: перебрать столкнувшиеся объекты и выбрать нужные, а не перебрать все, и выбрать те что и столкнулись и нужные)


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

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