Форум 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)
-   -   DragOver: стопор объекта при трэйсе (http://www.flasher.ru/forum/showthread.php?t=93410)

BM Senya 20.03.2007 19:10

DragOver: стопор объекта при трэйсе
 
Беру объект навожу на другой объект и при пересечении обоих первый в пределах второго стопорится так, что его уже не забрать и не сдвинуть обратно. Подскажите где дописывать в Drag' е или хиттэсте. Заранее большая благодарность Вам за помощь.

Терминатор 20.03.2007 19:34

Цитата:

Сообщение от BM Senya
Беру объект навожу на другой объект и при пересечении обоих первый в пределах второго стопорится так, что его уже не забрать и не сдвинуть обратно. Подскажите где дописывать в Drag' е или хиттэсте. Заранее большая благодарность Вам за помощь.

Я во флеше новичок, но сталкивался с тойже проблемой.
Допустим у нас есть обект "А" и объект "B". Объкт "А" при пересечении объекта "B" должен останавливаться, а при уходе от обекта "A" продолжать путь... В коде это должно выгледеть так:
Код:

if(A.hitTest(B)) //проверяем столкновение объектов "А" и "В".
{........;} // пишешь действие, (остановку обекта "А")
else { ......;} // если действие напроисходит, тоесть обект "А" вышел из обекта "В" то пусть продолжает путь.

Если сам, что напутал:umnik2: , извини.... Но помойму все правельно

CorC 21.03.2007 11:28

Цитата:

Сообщение от BM Senya
Беру объект навожу на другой объект и при пересечении обоих первый в пределах второго стопорится так, что его уже не забрать и не сдвинуть обратно. Подскажите где дописывать в Drag' е или хиттэсте. Заранее большая благодарность Вам за помощь.

а разве drag и hitTest как то связаны?
если проблема в коде то я не вижу кода

BM Senya 21.03.2007 13:16

В чём и проблемма, я не знаю кода. Думал что для этого и нужно связать Drag hitTest а для фиксации объекта в определённом месте рабочего поля
нужно задавать координаты. Но как даже представления не имею!

CorC 21.03.2007 13:22

заранее массивчик организуй для координат фиксации и как только
обьект будет близко к точке из массива сразу ставить на место
и отменять драг, даже хиттеста не надо

BM Senya 21.03.2007 14:43

А в коде можете выразить, если Вам не трудно.

etc 21.03.2007 14:56

BM Senya, а вы сами учить язык не собираетесь?

BM Senya 21.03.2007 15:37

Да, но мне очень необходимо это сегодня сделать.а с вашей помощью я его выучу быстрее. Очень Вас прошу напишите код. Я думаю для Вас это пара минут.Просто допишите нужное, прошу Вас
Код:

b1.onPress = function() {
        this.startDrag();
};
b1.onRelease = function() {
        this.stopDrag();
        if (this.hitTest(c1)) {
                var my_color:Color = new Color(c1);
var myTransform:Object = my_color.getTransform();
myTransform = { ra: 80, ba: 80, aa: 60};
my_color.setTransform(myTransform);
  }
};

Заранее благодарю за помощь.

etc 21.03.2007 15:53

Цитата:

Сообщение от BM Senya
Да, но мне очень необходимо это сегодня сделать.

Что это может быть такое, когда нужно сегодня, а вы ничего не знаете? Ждите, когда напишут и потратят свое время на это.

BM Senya 21.03.2007 16:34

А если Вам скину исходник, Вы сможете подправить?

CorC 21.03.2007 16:55

давно пора было
а то заново никто не напишет

BM Senya 27.03.2007 15:14

Вернусь всё же к этой теме. Ну не могу понять как застопорить при наведении обьект в кокой-то либо точке. Прошу подскожите. Что куда нужно вписывать. У меня не прикрепляется файл поэтому вставил код
Код:

mc1.onPress = function() {
        this.startDrag();
};
mc1.onRelease = function() {
        this.stopDrag();
        if (this.hitTest(c1)) {
                var my_color:Color = new Color(c1);
var myTransform:Object = my_color.getTransform();
myTransform = { ra: 80, ba: 80, aa: 60};
my_color.setTransform(myTransform);
  }
};

mc1 это обект который должен застопорится при пересечении с объектом С1 и в его пределах.

CorC 27.03.2007 16:21

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

mc1.onEnterFrame=function(){
if(this.hitTest(c1)){this.stopDrag()}
}


BM Senya 28.03.2007 14:52

CorC, Вы меня не много не так поняли. Мне сложно объяснить, но это должно выглядеть примерно так. Берём к примеру мувик (круг допустим) и наводим к другому кругу, и как только он соприкасается с ним автоматически (при отпускании (onRelease)) заскакивает в него(ровно в середину круга), и его нельзя уже взять, перетащить и т.д. Надеюсь я хоть как-то доступно объяснил.)))

CorC 28.03.2007 15:02

ну дак а в чем проблема тогда?
Код:

mc1.onRelease = function() {
        this.stopDrag();
        if (this.hitTest(c1)) {
                this._x=c1._x+(c1._width-this._width)/2;
                this._y=c1._y+(c1._height-this._height)/2;
        }
};


BM Senya 28.03.2007 16:31

Спасибо огромное! А вот если таких mc несколько, и для каждого свой круг, как должен выглядеть код, чтоб при сопрекосновении всех кругов происходил трэйс (к примеру переход на другой кадр)

BM Senya 30.03.2007 11:02

Прошу Вас помогите наконец разобраться с этой проблеммой!

CorC 30.03.2007 11:05

1. апать нехорошо
2. пиши счетчик и при каждом хиттесте инкрементируй его
потом когда оно будет достаточно иди куда надо...

BM Senya 30.03.2007 11:09

Плиз CorC напиши код я не чё не понял!!!))))

CorC 30.03.2007 11:16

Код:

var Count=10;
for(var i=0;i<Count;i++){
        _root["mc"+i].onRelease = function() {
                this.stopDrag();
                if (this.hitTest(c1)) {
                        if(!--Count){
                                _root.gotoAndPlay("win");
                        }
                        this._x=c1._x+(c1._width-this._width)/2;
                        this._y=c1._y+(c1._height-this._height)/2;
                }
        }
};

10 объектов mc0, mc1 ... mc9 всех покласть с с1 и будет счастье!

BM Senya 30.03.2007 11:19

Огромная благодарность!! Выручаешь!!!


Блин, я тебя запарил!)) Чёто у меня не работает! Можешь исход кинуть, а то у меня ошибку выдаёт не могу прикрепить ни чё!!!!Блииин!!!:confused:

У меня просто много мувиков "с" с1,с2 и т.д. и я не пойму для каждого что ли писать?

CorC 30.03.2007 11:43

сохраняй для каждого мувика свой "c"
примерно как тут http://flasher.ru/forum/showpost.php...83&postcount=4
потом вызывай в хиттесте не "с1" а "p" как в примере

вы со своей задачей уже месяц нас мучаете?
может пора начать скрипт изучать и алгоритмы?
готовые работы делаются в разделе "вакансии"
потому исходник делать не буду
и так разжевал как для младенца...

BM Senya 30.03.2007 13:46

Ну прошу Вас скиньте исходник, :umnik2:
и где раздел "вакансии"?

BM Senya 30.03.2007 15:16

Прошу Вас CorC? если Вам не трудно плизз скиньте исходник!

CorC 30.03.2007 15:27

http://flasher.ru/forum/forumdisplay.php?f=75
если освобожусь седня наваяю
вы бы и сами смогли бы
тем более что обо всем уже написано

BM Senya 30.03.2007 15:49

Я не пойму куда вставлять startDrag в коде, который Вы написали в 20-ом посте этой темы. При тэсте ошыбки выбивает.

CorC 30.03.2007 16:07

Вложений: 1
больше ничего тут не спрашивайте...
на все по теме было отвечено раз 20

BM Senya 30.03.2007 16:30

Огромнейшее спасибо! Всё CorC последнее, и я больше не гружу тупостью и незнанием. Куда для каждого mc вставить вот это:
Код:

var my_color:Color = new Color(c);
var myTransform:Object = my_color.getTransform();
myTransform = { ra: 80, ba: 80, aa: 60};
my_color.setTransform(myTransform);

Чтоб при наведении dragstop для ткаждого кружка:
И ВСЁ!

CorC 30.03.2007 16:38

Код:

                if (this.hitTest(c)) {
                        if (!(--Count)) {
                                trace("win");
                        }
                        this._x = c._x+(c._width-this._width)/2;
                        this._y = c._y+(c._height-this._height)/2;
                        var my_color:Color = new Color(c);
                        var myTransform:Object = my_color.getTransform();
                        myTransform = {ra:80, ba:80, aa:60};
                        my_color.setTransform(myTransform);
                        this.onPress=null; //что б нельзя обратно вытащить было
                }


BM Senya 30.03.2007 16:46

Я так делал не выходит!!!!

а не. я ошибку сделал. всё разобрался наконец. фуух всех уже нагрузил.)))
Огромная благодарность to:CorC и другим флешерам за участие.

BM Senya 02.04.2007 12:49

CorC, извините, это сново я.
При повторном хит тесте засчитывается за пересечение
получается trace раньше чем надо
нельзя квадрат затаскивая в круг (в вашем исходнике) как-нибудь блокировать,
чтоб встал и всё нельзя его больше брать

CorC 02.04.2007 12:53

предпоследняя строка в последнем моем коде разве этого не делает?
там даже коментарий я специально оставил, потому что
я этот вопрос предусмотрел...

BM Senya 02.04.2007 12:58

Да точно
туплю я)))


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

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