![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 122
|
move clip, в нем содержутся еще клипы.
при нажатии и перетаскивании они должны вертикально перемещаться. здесь никаких проблем. но при нажатии и отпускании (без перетаскивания) должен происходить уже другой код. но однаременно не работает. что посоветуете? |
|
|||||
|
Модрон-ветеринар
|
Допустим, таскаем (или не таскаем) мувик mc. Тогда:
var y0:Number ; mc.onPress = function () { this.startDrag(); // + ваши параметры таскания y0 = this._y ; }; mc.onRelease = function () { this.stopDrag(); if (y0 - this._y == 0) { someFunc(); } }; function someFunc() { trace('Не было перемещения'); } Для нескольких мувиков с произвольными именами, содержащимися внутри мувика-контейнера cont_mc: var y0:Number ; for (i in cont_mc) { var mc:MovieClip = cont_mc[i]; mc.onPress = mcOnPress; mc.onRelease = mcOnRelease; } function mcOnPress() { this.startDrag();// + ваши параметры таскания y0 = this._y ; } function mcOnRelease() { this.stopDrag(); if (y0 - this._y == 0) { someFunc(this); } } function someFunc(mc:MovieClip) { trace('Трогали ' + mc + ' но перемещения не было'); }
__________________
Идите первым! Последний раз редактировалось mooncar; 19.09.2010 в 17:34. |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 122
|
я не совсем понял что значит это:
|
|
|||||
|
Модрон-ветеринар
|
Это значит, что мы перебираем циклом все мувики внутри контейнера cont_mc, они перебираются автоматически без указания имени. Удобно, если в контейнере кроме них ничего нет, и на все нужно повесить какие-то обработчики или задать свойства.
Такая запись позволяет не думать об именах и количестве, чистое удобство. Эквивалентно простому циклу, например, если имена мувиков конкретно mc1, mc2..., а количество, например, 10:
__________________
Идите первым! |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 122
|
onClipEvent (enterFrame) { var y0:Number; for (i = 1; i <= 12; i++) { var mc:MovieClip = this['ch' + i]; mc.onPress = mcOnPress; mc.onRelease = mcOnRelease; } function mcOnPress() { this.startDrag(false,this._x,168.05,this._x,-2500); y0 = this._y; } function mcOnRelease() { this.stopDrag(); if (y0 - this._y == 0) { someFunc(this); } } function someFunc(mc:MovieClip) { trace('Трогали ' + mc + ' но перемещения не было'); } } |
|
|||||
|
Модрон-ветеринар
|
Запись кода на объекте - это уже нонсенс, в результате пути не те.
Многократное назначение функций с помощью onClipEvent (enterFrame). Ужас. Смотрите пример.
__________________
Идите первым! Последний раз редактировалось mooncar; 19.09.2010 в 20:01. |
|
|||||
|
Модрон-ветеринар
|
Вот еще что. Строку замените на такую:
Иначе после нажатия на мувике и отпускание мыши вне мувика не остановит драг.
__________________
Идите первым! |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 122
|
нашол одну проблему. пользователь может потащить выше чем можно, клип останиться на месте, а даже если он двигал мышью все равно сработает someFunc(), чего бы не хотелось. как исправить этот косяк?
|
|
|||||
|
Модрон-ветеринар
|
Не заметил. Нету такого, если правильно задать пределы. startDrag работает точно по заданным пределам.
Укажите условия, при которых "пользователь может потащить выше чем можно".
__________________
Идите первым! |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 122
|
я наверное неточно выразился.
если дотощить клип до самого верха, и начать тащить еще выше(а он разумеется дальше не поедет) то 'Трогали mc но перемещения не было' все равно вылезет. Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|