![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2006
Сообщений: 13
|
Народ! Помогите пжалста, очень прошу... ситуация такая - есть три мувика, они содержат компоненты, кнопки и т.п. то есть что то типа графических окон с элементами управления. надо их таскать по экрану - попробовал через startDrag(this) - работает, то есть мувики таскаются, но компоненты внутри них стали недоступны, ни чекбоксы ни кнопки ни эдиты. Тогда пошёл несколько иным путём (код ниже)
onClipEvent(mouseDown) { xdif = _root._xmouse-this._x; ydif = _root._ymouse-this._y; d = true; } onClipEvent(mouseUp) { d = false; } onClipEvent(mouseMove) { if (d) { mx.behaviors.DepthControl.bringToFront(this); this._x = _root._xmouse-xdif; this._y = _root._ymouse-ydif; } } это уже конечно не драг но работает, компоненты внутри доступны для управления, всё ништяк. только вот проблема - мувики таскаются все вместе! если тащу один - то следом тянется и другой! как сделать так чтобы они независимо друг от друга только таскались? а то какие-то связанные получаются... или через драг - но чтобы компоненты внутри были доступны. заранее сенькс. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 149
|
на всех клипах одновременно срабатывает событие, вот они все вместе и таскаются.
рекомендую изучить способ из макромедиевских классов. например class mx.containers.Window function startDragging(Void) : Void
{
if (this.modalWindow == undefined)
{
var o = this._parent.createChildAtDepth("BoundingBox", DepthManager.kTop, {_visible:false});
this.swapDepths(o);
o.removeMovieClip();
}
regX = _xmouse;
regY = _ymouse;
onMouseMove = dragTracking;
}
function stopDragging(Void) : Void
{
delete onMouseMove;
}
function dragTracking() : Void
{
var newX = _parent._xmouse - regX;
var newY = _parent._ymouse - regY;
var slop = 5;
var scr = mx.managers.SystemManager.screen;
if (newX < scr.x -regX + slop)
newX = scr.x -regX + slop;
if (newX > scr.width + scr.x - (regX + slop))
newX = scr.width + scr.x - (regX + slop);
if (newY < scr.y -regY + slop)
newY = scr.y -regY + slop;
if (newY > scr.height + scr.y - (regY + slop))
newY = scr.height + scr.y - (regY + slop);
move(newX, newY);
updateAfterEvent();
}
для конкретного же случая, следует изменить следующее. Обрабатывать событие не нажатия мыши, а тот-же onPress и делегировать событие уже на обработчик. Естественно, все это было бы на много проще и дешевле по ресурсам реализовать в классах, чтоб не вешать обработчик на каждый перетаскиваемый объект. |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 13
|
гм. если бы ещё инфа по AS путняя была - было бы проще... а вслепую копошиться довольно долго. а почему mouseDown срабатывает на всех 3 мувиках одновременно? ведь мышь то только над одним находится в какой-то момент времени, не может она над всеми тремя мувиками быть одновременно
![]() за код спасибо, покопаю в этом направлении. |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 13
|
Цитата:
тему поместили в конференцию для начинающих хотя ни один профи внятно и доступно так и не ответил. уж снизойдите до нас, грешных, о великие и всемогущие, если это так просто |
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
а почему драгать-то не получилось? я обычно делаю шапку у драгаемого окошка, для которой по onPress начинаю драгать окно, а по onRelease - заканчиваю. И всё работает (окно таскается только за шапку, что, в общем-то, и логично!).
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 13
|
мдяяя... ладно. без путнего мануала всё равно не разобраться. я просто в кодинге ну скажем так - не совсем. как пересекается MovieClip и Window? это ж разные объекты... в нашей провинции книг по AS нету вообще, многие даже понятия не имеют что это такое. вообще конечно бы простой примерчик и по аналогии я бы своял что-нить...
|
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
1. mcWindow - клип твоего окна
2. mcWindow.header - клип шапки твоего окна так понятнее? т.е. событие пишешь для одного клипа, а драг делаешь для другого.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 13
|
урря! вот теперь понятен механизм! правда у меня хедер наверно на всё поле окна будет... но енто мелочи, детали. Спасибо!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|