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

General303 27.01.2011 14:38

Перемещение объекта нажатием мыши
 
Скажите как можно реализовать перемещение объекта (это муви клип). В моем случае это карта.

lexa2000lexa 27.01.2011 14:44

Читайте про startDrag.

mooncar 27.01.2011 14:45

Есть много способов, в зависимости от того, как вы хотите двигать:
1) таскать мышкой;
2) двигать, нажимая на кнопочки со стрелками;
3) двигать, просто водя мышкой.
- и еще...

Есть много способов решения для каждого случая.
Например с помощью startDrag-stopDrag самый простое решение для (1), но не самое лучшее в большом количестве случаев, а иногда и просто неприменимое.

В общем, мало инфы.

General303 27.01.2011 14:47

В моем случае тоскать мышкой, zoom и кнопочки со стрелочками я уже сделал.
Карта это мувик внутри которого идут объекты (названия точки и.т.д.) Должны перемещаться вместе с картой

Почитав про startDrag. Нашел кое что подходящее.
http://www.flasher.ru/forum/showthre...ight=startDrag
Единственное что не понятно из этого кода как задать функцию движение по Х.
Код AS1/AS2:

var y0:Number;
 
for (i in cont_mc)
{
        var mc:MovieClip = cont_mc[i];
        mc.onPress = mcOnPress;
        mc.onRelease = mc.onReleaseOutside = mcOnRelease;
}
 
 
function mcOnPress()
{
        this.startDrag(false, this._x, 100, this._x, -100);
        y0 = this._y;
};
 
function mcOnRelease()
{
        this.stopDrag();
        if (y0 - this._y == 0)
        {
                someFunc(this);
        }
};
 
function someFunc(mc:MovieClip)
{
        trace('Трогали ' + mc + ' - не было перемещения');
}


Tails 27.01.2011 15:14

синтаксис:
Код AS1/AS2:

startDrag( имя перетаскиваемого объекта, фиксация центра клипа к мыше, l,t,r,b);

пример:
Код AS1/AS2:

startDrag( myClip, true, -50, 0, 50, 0);//по иску

Код AS1/AS2:

startDrag( myClip, true, 0, 0, 550, 400);//по всей области окна

l,t,r,b - это ограничения области перетаскивания.

General303 27.01.2011 15:24

Tails
Получилось только почему то при нажатие объект смещается в лево.

Tails 27.01.2011 15:27

Либо центр объекта привязываеться к мыше (чтоб это убрать, нужно выставить в страрт драге второй параметр false вместо true), либо с кординатами области перетаскивания чевото нетак.

General303 27.01.2011 15:33

Цитата:

Сообщение от Tails (Сообщение 968302)
Либо центр объекта привязываеться к мыше (чтоб это убрать, нужно выставить в страрт драге второй параметр false вместо true), либо с кординатами области перетаскивания чевото нетак.

Код AS1/AS2:

var y0:Number;
 
for (i in cont_mc) {
        var mc:MovieClip = cont_mc[i];
        mc.onPress = mcOnPress;
        mc.onRelease = mc.onReleaseOutside=mcOnRelease;
}
 
 
function mcOnPress() {
        startDrag(cont_mc, true, 0, 0, 500, 400);
        startDrag(cont_mc, false, 0, 0, 500, 400);
}
 
 
function mcOnRelease() {
        this.stopDrag();
        startDrag(cont_mc, true, 0, 0, 500, 400);
        startDrag(cont_mc, false, 0, 0, 500, 400);
        {
                someFunc(this);
        }
};
 
function someFunc(mc:MovieClip) {
        trace('Трогали '+mc+' - не было перемещения');
}

Блин теперь отпускаться не хочет :). После того как мувик схватил он прилипает к курсору и не возможно его положить.

Tails 27.01.2011 15:35

Удалите у себя стоп драг, и добавте в конец кода такую функцию:
Код AS1/AS2:

_root.onMouseUp = function (){
    stopDrag();
}

stopDrag() - глобальный, ему не нужно указывать чего отцеплять.

General303 27.01.2011 15:41

Все спасибо разобрался


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

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