Форум 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=178594)

Koopa 25.04.2012 09:37

Определение пересечения неименованных экземпляров разных классов
 
Имеются два или более классов. Экземпляры одного из классов должны проходить проверку на пересечение с экземплярами других классов. Все экземпляры не именованы.

Возможно такое в принципе?Если да, то хоть направление дайте.

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

КорДум 25.04.2012 10:04

Оу, мсье знает толк в извращениях.
Ну попробуйте синглтон. Как раз "ко второму объекту подобраться через класс".

Aquahawk 25.04.2012 10:12

Цитата:

Массивы использовать не хочется.
это как?

bublic_bicubic 25.04.2012 11:52

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

Для случая с неопределенным числом классов, можно унаследовать экземпляры от некого общего, который будет сохранять ссылку на себя по группам с именем getQualifiedClassName( this )

к примеру:
Код AS3:

class CheckIntersections extends Object {
 
        static public var groupA:Vector.<Sprite> = new Vector.<Sprite>();
        static public var groupB:Vector.<Sprite> = new Vector.<Sprite>();
 
        static public function check():Boolean {
                // проверяем пересечение между группами
                for ( var i_a:int = 0; i_a < groupA.length; i_a++ ) {
                        for ( var i_b:int = 0; i_b < groupB.length; i_a++ ) {
                                if ( checkTwo( groupA[ i_a ], groupB[ i_a ] ) ) {
                                        return true;
                                }
                        }
                }
                return false;
        }
 
        static public function checkTwo( a:Sprite, b:Sprite ):Boolean {
                // проверка
        }
 
}
 
class SpriteA extends Sprite {
 
        public function SpriteA() {
                super();
                CheckIntersections.groupA.push( this );
        }
 
}
 
class SpriteB extends Sprite {
 
        public function SpriteB() {
                super();
                CheckIntersections.groupB.push( this );
        }
 
}


Koopa 25.04.2012 18:52

Цитата:

Сообщение от Aquahawk (Сообщение 1076926)
это как?

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

Добавлено через 9 часов 10 минут
Вобщем первичное решение такое:
Код в Class1
Код AS3:

for(var i:uint=0;i<this.parent.numChildren;i++){
        if(this.parent.getChildAt(i) is Class2){
                if(this.hitTestObject(this.parent.getChildAt(i))){
                        trace("BIG BADA BOOM");
                        return;
                }
        }
}

Будет пересматриваться и изменяться, наверное.
Всем спасибо за ответы.
//Да,естественно экземпляры обоих классов от одного родителя.


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

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