У меня есть спрайты, которые я хочу перемещать, когда я нажимаю и удерживаю их, и останавливаюсь, когда я отпускаю их.У меня есть методы, которые добавляют прослушиватели событий в спрайты:
public function layOutEventListeners():void
{
var addSpriteEventListener:Function =
function(spr:Dictionary, index:int, vector:Vector.<Dictionary>)
{
spr["sprite"].addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
spr["sprite"].addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
gridVec.forEach(addSpriteEventListener);
}`
и методы для обработки событий:
public function mouseDownHandler(me:MouseEvent):void
{
trace(me.target.toString());
trace(me.currentTarget.toString());
this.drawSprite(me.target);
this.growByTwo(me.target);
me.stopImmediatePropagation();
me.currentTarget.startDrag(me);
}
public function mouseUpHandler(me:MouseEvent):void
{
trace(me.target.toString());
trace(me.currentTarget.toString());
me.stopImmediatePropagation();
this.originalSize(me.target);
me.currentTarget.stopDrag();
}`
Моя проблема: когда я нажимаю на спрайты, как толькоЯ перемещаю курсор, точка регистрации Sprite привязывается к курсору, и когда я отпускаю мышь, Sprite не прекращает следовать за курсором.Сначала я думал, что это проблема столкновения пикселей.Я думал, что курсор ничего не касается на MOUSE_UP
, но после эксперимента это оказалось ложным.Я даже повторил те же методы добавления и обработки событий, запустив другой проект, и обнаружил, что у меня нет этой проблемы.Тестовый спрайт просто перетаскивался, как обычно, не привязывался к точке регистрации и не перетаскивался точкой, на которую нажал.
Единственное отличие, которое я вижу, и мое единственное подозрение, это то, что спрайтыв моем исходном коде они добавляются в Sprite, который затем добавляется на сцену, тогда как Sprite в тестовом проекте добавляется в корень DisplayObject
.Я думаю, что Событие каким-то образом распространяется вниз к контейнеру Sprite и перетаскивает его, не опуская другой Sprite.Странная привязка, которую я вижу, может быть привязкой курсора к объекту позади другого спрайта.Еще одна важная вещь: когда я опускаю Спрайт поверх другого Спрайта, этот Спрайт перестает двигаться так, как я этого хочу, но все еще отстает от точки регистрации.
Несмотря на это, я действительно ошеломлен и действительноне знаю, что я бегу заЕсть идеи?