Форум 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)
-   -   Препятствия на дистанции А-Б (http://www.flasher.ru/forum/showthread.php?t=113378)

Maxi_Hunter 26.06.2008 18:00

Препятствия на дистанции А-Б
 
Уважаемые товарищи!
Я хотел бы поинтересоваться вот о чем :)
Имеется дистанция от точки А(х,у) до точки Б(х,у), которое постоянно меняется. В момент времени нужно знать есть ли на этой дистанции препятствия. Препятствия - мувиклипы с произвольными именами... Конечно можно брать и именовать их в виде obstecle_XX (где XX - номер от 0 до n) и потом проверять циклом for, но я думаю это будет очень ресурсоемко :)
Кто нибудь может помочь решить данную задачу?
Просто я не слишком владею классами во флэш, поэтому, если можно по подробнее)))

Alex_beginner 26.06.2008 18:29

Здравствуйте Maxi Hunter!

Цитата:

потом проверять циклом for, но я думаю это будет очень ресурсоемко
Почему Вы так решили?! При ограниченном количестве клипов-препятствий и использовании метода hitTest() класса MovieClip не думаю, что это отнимет много ресурсов.

wvxvw 26.06.2008 19:44

http://flasher.ru/forum/attachment.p...4&d=1211402647
делал немного для другой цели, но можно попробовать адаптировать.

Maxi_Hunter 26.06.2008 22:26

wvxvw, к сожалению у меня, почему проект не открылся... говорит "Unexpected file format"...
Alex_beginner, вероятно :) можно конечно попробовать, но в будущем хотелось бы и узнавать точку первого пересечения, но это мне пока кажется чемто невыполнимым :) подчеркиваю слово кажется, ибо невыполнимых задач нет :)

wvxvw 27.06.2008 03:49

А чем вы .AS файлы, простите, открываете? Ну, на худой конец, можно блокнотом попробывать =) А вообще, проект, если память не изменяет для ФД был... Если хотите скомпилировать из флеша - создайте файл в директории classes. В нем, в библиотеке 2 клипа:
linkage: bullet, class: view.Bullet
linkage: enemy, class: view.Enemy
на основном таймлайне
Код:

Main.main();

Maxi_Hunter 27.06.2008 09:48

Вот что у меня получилось...но почему-то скрипт виснет намертво при выполнении функции... Я допускаю, что в каком-то месте написал чушь и хотел бы узнать где :)
Код:

onClipEvent (enterFrame) {
        if (fire == 1) {
                for (i=1; i=200; i++) {
                        this._y -= Math.cos((this._rotation*Math.PI)/180)*5;
                        this._x += Math.sin((this._rotation*Math.PI)/180)*5;
                        for (k=1; k=50; k++) {
                                var global_obstacle:MovieClip;
                                global_obstacle._name = "obstacle_"+k;
                                if (global_obstacle.hitTest(global_obstacle._name)) {
                                        this.gotoAndPlay(2);
                                        trace("OK");
                                        is_break = 1;
                                        break;
                                }
                        }
                        if (is_break == 1) {
                                break;
                        }
                }
        }


etc 27.06.2008 10:43

Вы написали бесконечный цикл, условиие i = 200 всегда истина.

Maxi_Hunter 27.06.2008 11:38

тогда я чего-то не понимаю в работе цикла for :) ибо при условии:
Код:

for (i=1; i>200; i++) {
...
trace(i);
...
}

вообще ничего не происходит и не выполняется функция trace(i);
Заменил кусок в коде, ибо думаю, что так правильнее :)
Код:

if (this.hitTest(_root["obstacle_"+k])) {
                                        this.gotoAndPlay(2);
                                        trace("OK");
                                        is_break = 1;
                                        break;
}


Maxi_Hunter 27.06.2008 11:41

С циклом разобрался, мой косяк :)

Maxi_Hunter 27.06.2008 15:56

реализовал через хитТест :) вроде ничего не тормозит. Единственный недостаток -то что ограничивается количество этих препятствий)


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

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