Показать сообщение отдельно
Старый 20.12.2010, 16:04
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 1  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Перетаскивание спрайта и различные координаты мыши

Нашел баг, а может и фичу, но очень уж странную.

При перетаскивании объекта target в установленных рамках при отжатии мыши target.mouseX, target.mouseY, stage.mouseX, stage.mouseY имеют значения в точке зажатия объекта для перетаскивания, а не в точке, где была мышь во время дропа. Без установки рамок - все ок.

Переместите квадрат так, чтобы он уперся в правый нижний угол своих границ движения, отожмите мышь правее и ниже, чтобы квадрат не съехал из правого нижнего угла. Затем зажимайте мышь в середине квадрата и отпускайте в различных точках экрана, но в секторе ниже и правей, чтобы квадрат не съезжал. Смотрите за значениями в аутпуте - они должны быть примерно одинаковы в различных точках отпускания мыши.

Код AS3:
var s:Sprite = new Sprite();
addChild(s);
s.graphics.beginFill(0);
s.graphics.drawRect(0, 0, 100, 100);
 
s.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
function mouseDownListener(e:MouseEvent):void
{
	s.startDrag(false, new Rectangle(0, 0, 100, 100));
	//s.startDrag(false, null); - все ок!
}
 
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
function mouseUpListener(e:MouseEvent):void
{
	s.stopDrag();
 
	trace(s.mouseX, s.mouseY);
	trace(stage.mouseX, stage.mouseY, "\n");				
}
UPD: если при дропе мышь в рамках движения объекта, то вроде тоже все ок.

Как же вытащить реальные координаты мыши во время дропа?
__________________
скриптограф


Последний раз редактировалось orcpochta; 20.12.2010 в 16:27.