Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag&Drop и клик 
:(
    Опции темы
Error202
  Дата 6.7.2011, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Есть клип, в нем несколько мелких...
Каждый мелкий слушает событие мыши CLICK...
Основной клип-контейнер - по startDrag/stopDrag можно двигать...

Как сделать так, чтобы при перетаскивании клипа-контейнера не отрабатывал клик в дочерних клипах?
PM MAIL WWW   Вверх
VingradFan
Дата 6.7.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



Error202, уважаемый, Вы бы попонятнее выражовывались... Можно только предположить, что Вы имели в виду...

Если надо чтобы контейнер не перетаскивался при клике на детях, то для этого надо слушателя для контейнера добавлять при MouseUp на ребенке, а удалять слушателя контейнера на MouseDown ребенка.

Добавлено @ 19:18
Цитата(Error202 @ 6.7.2011,  16:30)
Как сделать так, чтобы при перетаскивании клипа-контейнера не отрабатывал клик в дочерних клипах?

> при перетаскивании клипа-контейнера
Это возможно при клике по свободному пространству или по ребенку. В первом случае, клик на ребенке по определению не отработается, во втором, он в любом случае отработается... В чем вопрос?

Это сообщение отредактировал(а) VingradFan - 6.7.2011, 19:18


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
bars80080
Дата 6.7.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



есть такая конструкция

Код

private function clickListener(e:MouseEvent):void {
    if(e.eventPhase == EventPhase.AT_TARGET) {
        // выполняется только в случае клика непосредственно по этому элементу
    }
}


а также погуглите насчёт методов

stopPropagation()
и
stopImmediatePropagation()
PM MAIL WWW   Вверх
VingradFan
Дата 6.7.2011, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



bars80080, а можно для меня пояснить, что авор имел в виду?



--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
Error202
Дата 6.7.2011, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Прошу прощения за неточность smile


Есть галерейка картинок, выстроены они в один ряд и находятся в контейнере.... Сам контейнер вылезает за края сцены и перетаскивается вправо/влево мышкой...
Так вот надо, чтобы по клику на картинку в контейнере, открывалась большая картинка, а при перетаскивании контейнера собственно он перетаскивался и дочерние картинки не ловили события клик.

Сейчас он перетаскивается, то при MOUSE_UP на контейнере срабатывает и CLICK у дочерних элементов...

P.S. В контейнере все картинки стоят плотно друг к другу... пустых мест нет

Это сообщение отредактировал(а) Error202 - 6.7.2011, 20:06
PM MAIL WWW   Вверх
VingradFan
Дата 6.7.2011, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



Error202, кинь флешку - мы посмотрим. Убей - не пойму, за что перетаскивается контейнер, если нет пустых мест

Это сообщение отредактировал(а) VingradFan - 6.7.2011, 21:22


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
bars80080
Дата 6.7.2011, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(VingradFan @  6.7.2011,  21:21 Найти цитируемый пост)
Убей - не пойму, за что перетаскивается контейнер, если нет пустых мест

судя по всему, это горизонтальная галерея - полоска, а картинки типа должны поездом двигаться вправо или влево, куда потянут.

если нет пустых мест, значит принцип такой:
клик по картинке - открыть
схватить картинку и потянуть - перемещение всего контейнера с картинками.

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

либо есть какое-то специфическое события "onПотянул"
PM MAIL WWW   Вверх
Error202
Дата 6.7.2011, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Ну вобщем да... только таймер и остается...
Спасибо всем...
PM MAIL WWW   Вверх
VingradFan
Дата 7.7.2011, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



Товарищи, зачем таймер? Зачем все усложнять? Элементарная ведь задача!

Код

import flash.events.*;
ball.addEventListener (MouseEvent.MOUSE_DOWN,mDown);

function mDown (event:Event) {
    ball.addEventListener (MouseEvent.MOUSE_UP,mUp);
    ball.addEventListener (MouseEvent.MOUSE_MOVE,mMove);
}
function mUp (event:Event) {
    trace ("PICTURE OPEN");
    ball.removeEventListener (MouseEvent.MOUSE_MOVE,mMove);
}
function mMove (event:Event) {
    ball.startDrag ();
    ball.removeEventListener(MouseEvent.MOUSE_MOVE,mMove);
    ball.removeEventListener (MouseEvent.MOUSE_UP,mUp);
    ball.addEventListener(MouseEvent.MOUSE_UP,endDrag);
}
function endDrag (event:Event) {
    ball.stopDrag ();
}


1. MOUSE_DOWN = добавили: MOUSE_UP, MOUSE_MOVE
     а. MOUSE_UP = открыли картинку, удалили MOUSE_MOVE
     б. MOUSE_MOVE = начали дрэг, заменили MOUSE_UP на новый
             - новый MOUSE_UP = кончили дрэг







Цитата(bars80080 @ 6.7.2011,  22:26)
либо есть какое-то специфическое события "onПотянул"

Разумеется есть: два вложенных события: MOUSE_DOWN + MOUSE_MOVE

Это сообщение отредактировал(а) VingradFan - 7.7.2011, 09:14

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  gallery.fla 5,56 Kb


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
VingradFan
Дата 8.7.2011, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: 1
Всего: 3



Я тут себе пишу трэклист для плеера. Абсолютно аналогичная ситуация. Придумал элегантное решение.

Для класса - ребенка пишем
Код

        this.addEventListener (MouseEvent.MOUSE_DOWN,pbMouseDown);
        private function pbMouseDown (event:Event):void {
            this.addEventListener (MouseEvent.MOUSE_UP,pbMouseUp);
            this.addEventListener (MouseEvent.MOUSE_MOVE,pbMouseMove);
        }

        private function pbMouseUp (event:Event):void {
            // Клик отработан
        }
        
        private function pbMouseMove (event:Event):void {
            this.removeEventListener (MouseEvent.MOUSE_UP,pbTrackPlay);
        }





Для класса - контейнера пишем

Код

        this.addEventListener (MouseEvent.MOUSE_DOWN,pMouseDown);
        private function pMouseDown (event:Event) {
            this.startDrag ();
            this.addEventListener(MouseEvent.MOUSE_UP,pMouseUp);
        }
        private function pMouseUp (event:Event) {
            this.stopDrag();
        }


Это сообщение отредактировал(а) VingradFan - 8.7.2011, 10:08


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
Error202
Дата 12.7.2011, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



О...! Супер... Спасибо!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.