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

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

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

Регистрация: Aug 2003
Сообщений: 204
По умолчанию Крупный драг и ограничение координат

в общем делаю сейчас карту территориальную, столкнулся с двумя проблемами:
1) Карта большая и тягается драг мувиком, но драг по умолчанию привязывает центр мува к мышке, как сделать так чтоб при тягании я мог брать мышкой карту в той точке в которой хочу и тянуть с неё куда хочу ?
2) как ограничить координаты что бы мувик с картой не могли вытащить в экран при драге

Старый 10.10.2006, 19:46
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 DJ_Baton:
1. Может я ошибаюсь, но такой пример может быть вполне в справке Флеша. А вообще ведь никто не запрещает вам узнать координаты, в которых мышь щёлкнула по мувиклипу. Не используйте Drag, используйте событие, вызываемое при движении мыши для обновления координат мувиклипа.
На этом принципе основан один из методов реализации пользовательских курсоров:
Код:
// Для тестирования этого кода необходимо,
// чтобы в Библиотеке был символ с Linkage идентификатором "pointer_id".
this.attachMovie("pointer_id", "pointer_mc", this.getNextHighestDepth());
Mouse.hide();
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
  pointer_mc._x = _xmouse;
  pointer_mc._y = _ymouse;
  updateAfterEvent();
};
Mouse.addListener(mouseListener);
2. Поскольку мувик и карта являются частью флешки, флешка - частью окна, окно - частью изображения на экране, выходит, что флешка и так у вас на экране. Следовательно, чтобы при драге мувиклип с картой не могли вытащить придраге в экран, нужно устранить сам корень проблемы, а именно - не выводить карту и мувиклип.

PS:
Учитесь задавать вопросы...
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого


Последний раз редактировалось Хемуль; 10.10.2006 в 19:51.
Старый 10.10.2006, 20:03
Kyber Anton вне форума Посмотреть профиль Отправить личное сообщение для Kyber Anton Посетить домашнюю страницу Kyber Anton Найти все сообщения от Kyber Anton
  № 3  
Ответить с цитированием
Kyber Anton
 
Аватар для Kyber Anton

Регистрация: Oct 2005
Адрес: Воронеж-Москва
Сообщений: 671
Отправить сообщение для Kyber Anton с помощью ICQ
Во время нажатия мышки на клип, нужно сохранить разность координат клипа и указателя, а потом, до тех пор, пока кнопка не будет отжата, обновлять координаты клипа как (координаты мыши+сохранённая разность). Ничего трудного не вижу. Стандартный драг - зло.
__________________
(А)

Старый 10.10.2006, 21:57
D12 вне форума Посмотреть профиль Отправить личное сообщение для D12 Найти все сообщения от D12
  № 4  
Ответить с цитированием
D12
меценат
 
Аватар для D12

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
Код:
this.karta.onPress = function() {
startDrag(this);
}
_root.onMouseUp = function() {
	_root.stopDrag();
};
или так =)

Код:
ramcaXleft = 100;
ramcaXright = 450;
this.ramca.onEnterFrame = function() {
	if (this._x<=ramcaXleft) {//условие проверки границы координаты по левому краю
		this._x = ramcaXleft;
	}
	if (this._x>=ramcaXright) {//условие проверки границы координаты по правому краю
		this._x = ramcaXright;
	}
};
this.ramca.onMouseDown = function() {
	//условие хватания  
	if ((_root._xmouse>=(this._x-(this._width/2))) && (_root._xmouse<=(this._x+(this._width/2))) && (_root._ymouse>=(this._y-(this._height/2))) && (_root._ymouse<=(this._y+(this._height/2)))) {
		startDrag(this);
	}
};
//
_root.onMouseUp = function() {
	_root.stopDrag();
};

Старо как мир ... еще кординаты какието отлавливать
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники


Последний раз редактировалось D12; 10.10.2006 в 22:29.
Старый 11.10.2006, 06:16
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 5  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
Можете скинуть исходник плиз ?

Старый 11.10.2006, 10:43
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
2 D12:
Оба варианта, прям скажем, не фонтан... по крайней мере второму пожеланию автора они никак не удовлетворяют - такую карту, как ты предложил, можно вытащить за пределы зоны просмотра, а это как раз и нужно избежать.

2 DJ_Baton:
Первый параметр startDrag() как раз и показывает, а нужно ли привязывать центр перетаскиваемого клипа к мыше или нет.
Но у использования startDrag() есть свои недостатки, поэтому чаще предпочтительнее сделать свой аналог этого метода. Т.е. как уже сказали выше: по onPress регистрировать координаты мыши, включать onEnterFrame, в нем проверять смещение мыши и соответсвенно делать перерасчет координат. По onReleas'у соответсвенно убивать onEnterFrame.
(Вместо onEnterFrame можно использовать любую функцию которая будет циклически проверять смещение мыши, onMouseMove удобнее тем, что функция не будет включаться если юзер не двигает мышой)
__________________
Hell is the possibility of sanity

Старый 11.10.2006, 11:35
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 7  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
Вот выложил исходник, кто разбирается помогите плиз -
http://moderndonbass.com/Flash/map.zip
а то я не очень шарю в AS так только азы...

Старый 11.10.2006, 16:38
valvika вне форума Посмотреть профиль Отправить личное сообщение для valvika Посетить домашнюю страницу valvika Найти все сообщения от valvika
  № 8  
Ответить с цитированием
valvika

Регистрация: May 2004
Адрес: West_UA , Rivne.
Сообщений: 533
Отправить сообщение для valvika с помощью ICQ Отправить сообщение для valvika с помощью Skype™
Цитата:
Сообщение от DJ_Baton
...а то я не очень шарю в AS так только азы...
смотрим http://mainmaps.com/000/mapwithpanzoomandselection.swf
если нравится, то качаем исходник, разбираемся, вносим свои изменения/дополнения и т.д.
http://mainmaps.com/000/mapwithpanzoomandselection.rar
Я не советую надеяться, что вам кто-то даст полностью готовый исходный код. Я делаю карты постоянно более 1,5 лет и то, чтобы запустить вашу карту мне нужно дня три.
Важные замечания:
1.Сделайте поднайм Флеш-кодера. Карты-не самое сложное, но и не самые простые проекты.
2.Ваша графика не будет работать гладко при перетаскивании и масштабировании. С ней еще много работы ( чисто с графикой ). Посте добавления имен улиц и обьектов на карту - тормоза станут просто ужасающими.
3.Полностью поддерживаю тех, кто предлагает отказать от ДраГа.


Последний раз редактировалось valvika; 11.10.2006 в 16:51.
Старый 11.10.2006, 18:19
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 9  
Ответить с цитированием
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
большое спасибо, интересный исходник, качаю

Старый 11.10.2006, 20:08
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 10  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Цитата:
Сообщение от valvika
Посте добавления имен улиц и обьектов на карту - тормоза станут просто ужасающими.
Но вы ведь при движении/масштабировании карты уменьшаете качество флешки. ^_^ Это может в каком-то роде решить проблему.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого

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

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

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


 


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


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