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

SashaBorandi 12.03.2009 18:40

Помогите с алгоритмом "Столкновение объектов"..
 
Ребята...

У меня с помощью функции случайное число:
Код AS3:

private function RandomBetween(lower:Number, high:Number):Number {
        return (lower + Math.floor(Math.random() * (high - lower + 1)));
}

генерируется координаты X и Y клипов (MovieClip).. Но иногда они накладываются друг на друга, как это избежать? Как я понимаю нужно проверять "Столкновение", но не знаю как этот алгоритм должен работать?

kackbip 12.03.2009 19:00

для прямоугольных проканает
DisplayObject.hitTestObject(obj:DisplayObject):Boolean

SashaBorandi 12.03.2009 21:09

Да но у меня постоянно False!

Как я понял это потому что у моих MovieClip, ширина и высота равна нулю..

Вот кусок года...

Код AS3:

private function createMenuLayer(iDepth:Number, menu:Array) {
        var mcMenuLayer:MovieClip = new MovieClip();
        mcMenuLayer.iDepth = iDepth;
        for (var i = 0; i < menu.length; ++i) {
                var menuWidth =  -  iDepth / 2 + Math.random() * iDepth;
                var menuHeight =  -  iDepth / 2 + Math.random() * iDepth;
                var menuLayer:MovieClip = addMenusItem(mcMenuLayer,menu[i].name,menu[i].title,menu[i].target);
                menuLayer.name = 'menuButton'+i;
                menuLayer.x = menuWidth * 500;
                menuLayer.y = menuHeight * 500;
 
                for (var m = 0; m < i; ++m) {
                        var iObject = mcMenuLayer.getChildByName('menuButton'+i);
                        var mObject = mcMenuLayer.getChildByName('menuButton'+m);
                        trace(iObject.hitTestObject(mObject));
                }
                //if (menuLayer.hitTestObject();)
        }
        return this.addChild(mcMenuLayer);
}
 
private function addMenusItem(mcMenuLayer:MovieClip, nameMenu:String, titleMenu:String, targetMenu:String) {
        var mcMenuButton:MenuButton = new MenuButton(titleMenu);
        return mcMenuLayer.addChild(mcMenuButton);
}



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

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