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

Angelinka 10.06.2009 23:37

hitTest - области его действия
 
Ребят, помогите разобраться с проблемой.
У меня есть карта в игре, на которую можно помещать объекты. Дело в том, что объекты можно помещать не везде. Те участи, где размещатся нельзя я зарисовала и сделал из этого выделения мувик. Ну и написала что если мувик объекта касается мувика запрещенных областей - то объект не размещается.
Дело в том, что hitTest действует по рамке мувика. Можно ли сделать hitTest, который будет работать именно с телом мувика а не с его границами?
Если нет - то как иначе можно осуществить то, что мне нужно?
Заранее большое спасибо!

Stargazer 11.06.2009 00:55

Цитата:

Дело в том, что hitTest действует по рамке мувика.
Разбирайтесь, в чём проблема.
Потому что в действительности hitTest работает либо по содержимому клипа, либо по площади ограничивающей его коробки (в зависимости от параметра).

Angelinka 11.06.2009 01:17

Этот параметр может быть задан только в случае задания параметров x и y.
А мне нужен объект а не координата.

При задании объекта - проверяется факт пересечения ограничивающих рамок объекта target и указанного мувиклипа, возвращая true, если они имеют хотя бы одну общую точку.

Stargazer 11.06.2009 11:40

Любопытно. Сейчас взгляну в справку.

Добавлено через 18 минут
Вы правы.
Можно попробовать выложить фигуру коробками и вместо хит-теста написать функцию, которая будет в цикле проверять hitTest у всех коробок.

Angelinka 11.06.2009 16:56

Да, такая идея у меня уже была. Думала, может есть способ по-проще... Спасибо.

Psycho Tiger 11.06.2009 18:56

bitmap hitTest

на крайний случай, если ещё и важно, в какой точке столкновение, а математикой заниматься лень:
1) определяем границы мувика с хиттестом в цикле - поточечено собираем контур (хотя, тут тоже лучше через битмапу - быстрее)
2) определяем столкновения уже этих точек

LeXa4 12.06.2009 10:35

По-моему границы можно определить только у круга.

Нахождением радиуса...

А у других фигур только по рамке клипа

2xR 21.08.2009 19:55

День добрый! У меня та же проблема, что и у автора. В Аскрипте я несколько дней. :confused: Я написал такой код для управления мувиклипом в кадре:
Код:

onClipEvent (load) {
        var pv = 0;
        var psc = ((Math.PI/2)/90);
}
onClipEvent (keyDown) {
        if (Key.isDown(37)) {
                _rotation -= 5;
                pv = pv+5;
        }
        if (Key.isDown(39)) {
                _rotation += 5;
                pv = pv-5;
        }
        if (Key.isDown(38)) {
                var Xor = _x;
                var Yor = _y;
                _y += 5*-(Math.sin(pv*psc));
                _x += 5*(Math.cos(pv*psc));
        }
        if (Key.isDown(40)) {
                var Xor = _x;
                var Yor = _y;
                _y -= 5*-(Math.sin(pv*psc));
                _x -= 5*(Math.cos(pv*psc));
                Updateafterevent();
        }
}
onClipEvent (enterFrame) {
        if (_root.flor.hitTest(this)) {
                this._x = Xor;
                this._y = Yor;
        }
}

При столкновении с flor, клип ведет себя,
как и задумывалось. Вопрос - как создать "клона" клипа "flor", что бы не писать код столкновения на каждый случай?


Цитата:

Сообщение от Psycho Tiger (Сообщение 827289)
bitmap hitTest

на крайний случай, если ещё и важно, в какой точке столкновение, а математикой заниматься лень:
1) определяем границы мувика с хиттестом в цикле - поточечено собираем контур (хотя, тут тоже лучше через битмапу - быстрее)
2) определяем столкновения уже этих точек


Как можно сделать поточечный контур? :)

Psycho Tiger 23.08.2009 16:10

Так как вы уже не пишут лет 10.
Поточечный контур делается так - берем пиксель где нибудь вверху и опускаем его плавно до момента, когда он соприкоснется с объектом (hitTest иль getPixel).
Получили 1 точку. Двигаемся вправо - получаем вторую. Так получаем верхний контур. Аналогично получаем остальные. Хотя, я уверен, есть более быстрые и простые способы, просто необходимости их изучать пока не было.


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

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