Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.02.2006, 13:52
Flak2000 вне форума Посмотреть профиль Отправить личное сообщение для Flak2000 Найти все сообщения от Flak2000
  № 1  
Ответить с цитированием
Flak2000

Регистрация: Feb 2006
Сообщений: 13
Attention Drag мувиков - есть проблемы...

Народ! Помогите пжалста, очень прошу... ситуация такая - есть три мувика, они содержат компоненты, кнопки и т.п. то есть что то типа графических окон с элементами управления. надо их таскать по экрану - попробовал через 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;
}
}
это уже конечно не драг но работает, компоненты внутри доступны для управления, всё ништяк. только вот проблема - мувики таскаются все вместе! если тащу один - то следом тянется и другой! как сделать так чтобы они независимо друг от друга только таскались? а то какие-то связанные получаются... или через драг - но чтобы компоненты внутри были доступны. заранее сенькс.

Старый 24.02.2006, 15:14
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 2  
Ответить с цитированием
meiciuc

Регистрация: Nov 2005
Сообщений: 149
на всех клипах одновременно срабатывает событие, вот они все вместе и таскаются.
Код:
onClipEvent(mouseDown)
рекомендую изучить способ из макромедиевских классов. например 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 и делегировать событие уже на обработчик. Естественно, все это было бы на много проще и дешевле по ресурсам реализовать в классах, чтоб не вешать обработчик на каждый перетаскиваемый объект.

Старый 24.02.2006, 15:42
Flak2000 вне форума Посмотреть профиль Отправить личное сообщение для Flak2000 Найти все сообщения от Flak2000
  № 3  
Ответить с цитированием
Flak2000

Регистрация: Feb 2006
Сообщений: 13
гм. если бы ещё инфа по AS путняя была - было бы проще... а вслепую копошиться довольно долго. а почему mouseDown срабатывает на всех 3 мувиках одновременно? ведь мышь то только над одним находится в какой-то момент времени, не может она над всеми тремя мувиками быть одновременно
за код спасибо, покопаю в этом направлении.

Старый 25.02.2006, 10:19
Flak2000 вне форума Посмотреть профиль Отправить личное сообщение для Flak2000 Найти все сообщения от Flak2000
  № 4  
Ответить с цитированием
Flak2000

Регистрация: Feb 2006
Сообщений: 13
Цитата:
для конкретного же случая, следует изменить следующее. Обрабатывать событие не нажатия мыши, а тот-же onPress и делегировать событие уже на обработчик.
при обработке onPress внутренние компоненты мувика становятся недоступны. Абыдно... как быть?

тему поместили в конференцию для начинающих хотя ни один профи внятно и доступно так и не ответил. уж снизойдите до нас, грешных, о великие и всемогущие, если это так просто

Старый 25.02.2006, 15:55
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 5  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
а почему драгать-то не получилось? я обычно делаю шапку у драгаемого окошка, для которой по onPress начинаю драгать окно, а по onRelease - заканчиваю. И всё работает (окно таскается только за шапку, что, в общем-то, и логично!).
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 27.02.2006, 06:40
Flak2000 вне форума Посмотреть профиль Отправить личное сообщение для Flak2000 Найти все сообщения от Flak2000
  № 6  
Ответить с цитированием
Flak2000

Регистрация: Feb 2006
Сообщений: 13
мдяяя... ладно. без путнего мануала всё равно не разобраться. я просто в кодинге ну скажем так - не совсем. как пересекается MovieClip и Window? это ж разные объекты... в нашей провинции книг по AS нету вообще, многие даже понятия не имеют что это такое. вообще конечно бы простой примерчик и по аналогии я бы своял что-нить...

Старый 27.02.2006, 08:40
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 7  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
1. mcWindow - клип твоего окна
2. mcWindow.header - клип шапки твоего окна
Код:
 mcWindow.header.onPress = function () {mcWindow.startDrag()};
mcWindow.header.onRelease = function () {mcWindow.stopDrag()}
так понятнее? т.е. событие пишешь для одного клипа, а драг делаешь для другого.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 28.02.2006, 08:00
Flak2000 вне форума Посмотреть профиль Отправить личное сообщение для Flak2000 Найти все сообщения от Flak2000
  № 8  
Ответить с цитированием
Flak2000

Регистрация: Feb 2006
Сообщений: 13
урря! вот теперь понятен механизм! правда у меня хедер наверно на всё поле окна будет... но енто мелочи, детали. Спасибо!

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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