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

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

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

Регистрация: Dec 2008
Сообщений: 7
По умолчанию Координаты после stopDrag()

Есть класс, являющийся расширением UILoader.
У которого на MOUSE_DOWN идет this.startDrag(), MOUSE_UP - this.stopDrag()

Почему после того как прошла операция stopDrag() координаты this.x и this.y не изменяются и при проверке они равны тем, которые объект получил в момент создания.

Собственно как эту координату получить? Есть какой-то способ или нужно сочинять формулу выщитывающую положение регистратора объекта относительно его ротейшена и положения мышки? *_*

Старый 07.01.2009, 22:06
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 2  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Цитата:
Сообщение от MadSorcerer Посмотреть сообщение
Есть какой-то способ или нужно сочинять формулу выщитывающую положение регистратора объекта относительно его ротейшена и положения мышки? *_*
Вот это загнули

После startDrag() при движении мышки начинают меняться свойства x и y, у того объекта, к которому был применен startDrag().

Сам так делал, но не для UILoader, не думаю, что там по-другому. Он же наследуется от Sprite.

Старый 07.01.2009, 22:23
MadSorcerer вне форума Посмотреть профиль Отправить личное сообщение для MadSorcerer Найти все сообщения от MadSorcerer
  № 3  
Ответить с цитированием
MadSorcerer

Регистрация: Dec 2008
Сообщений: 7
Код AS3:
public class dragDropWG extends UILoader
	{
		public function dragDropWG()
		{
			this.addEventListener(MouseEvent.MOUSE_DOWN,down);
			this.addEventListener(MouseEvent.MOUSE_UP,up);
		}
		private function down(event:MouseEvent):void
		{
			if (event.ctrlKey==true && event.shiftKey==true)
			{
				this.rotation+=45;
			}
			else
			{
				if (event.shiftKey==true)
				{
trace("startDrag: "+this.x);
					this.startDrag();
				}
			}
		}
		private function up(event:MouseEvent):void
		{
			if (event.ctrlKey==false && event.shiftKey==true)
			{
				this.stopDrag()
				trace("stopDrag: "+this.x);
			}
		}
	}
Вот это выводит одно и то же число всегда. Как бы мы объект не таскали *_*
trace("startDrag: "+this.x);
trace("stopDrag: "+this.x);

Добавлено:
При всем при этом, объект не телепортируется на исходную позицию. Че-то ппц печаль какая-то


Последний раз редактировалось MadSorcerer; 08.01.2009 в 00:20.
Старый 08.01.2009, 10:53
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 4  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
попробуйте убрать все if, ctrlKey и т.д.
будет ли перемещать?
я разбираться в них не стал, может в них и напутали.
что значит телепортироваться на исходную позицию? на первоначальную или на новую?

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

Регистрация: Dec 2008
Сообщений: 7
Объект переносится там где он оказался после stopDrag() но this.x, this.y не меняется.

Сделал какой-то албанский фикс. Приду домой - покажу *_*

Старый 08.01.2009, 17:35
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
думаю такое здесь:
у UILoader/UIComponent нет своего startDrag(), есть только у Sprite, он и работает
но x/y у UIComponent свои приватные, которые Sptite'товский драг не меняет..

а менять их будет UIComponent.move() - его и надо использовать на MOUSE_MOVE вместо драга

Старый 08.01.2009, 17:36
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 7  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
попробуйте просто
Код AS3:
private function up(event:MouseEvent):void
{
	this.stopDrag()
	trace("stopDrag: "+this.x);
}
Добавлено через 4 минуты
Цитата:
Сообщение от silin Посмотреть сообщение
думаю такое здесь:
у UILoader/UIComponent нет своего startDrag(), есть только у Sprite, он и работает
но x/y у UIComponent свои приватные, которые Sptite'товский драг не меняет..
Хм.. но UIComponent наследник от Sprite. Неужели в Адобе так хреново замутили с этим UIComponent?

Старый 08.01.2009, 17:48
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Хм.. но UIComponent наследник от Sprite
ну да, только вместо x и y ( и width/height тоже) у него перегруженные сеттеры и геттеры

Старый 08.01.2009, 21:46
MadSorcerer вне форума Посмотреть профиль Отправить личное сообщение для MadSorcerer Найти все сообщения от MadSorcerer
  № 9  
Ответить с цитированием
MadSorcerer

Регистрация: Dec 2008
Сообщений: 7
move конечно меняет координаты и они потом легко получаются через this.x this.y но проблема в том, что если объект повернут, то сложно понять куда нужно мувать его (формулу вчера так и не вывел).

Решил проблему так:
При создании объекта выполняется
Код AS3:
var rp:Point = new Point(x,y);
После стопДраг:
Код AS3:
this.move(this.parent.globalToLocal(this.localToGlobal(rp)).x,this.parent.globalToLocal(this.localToGlobal(rp)).y);
//
//

Старый 08.01.2009, 22:40
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
непринципиально, но эта rp как бы и лишняя
parent.globalToLocal(localToGlobal(new Point())); точно так же покажет текущую координату..

насчет куда мувить: можно же ориентироваться по stage.mouseX(mouseY) - запоминать предыдущие координаты мыши и двигать на величину смещения, поворот/масштабирование тогда не мешают ни разу..

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

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

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


 


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


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