當我點擊並按住它們並停止釋放它們時,我想要移動的Sprites。我有一個事件偵聽器添加到精靈方法:Sprite不停地拖動MOUSE_UP
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只是簡單地像往常一樣拖動和放下,而不是捕捉到註冊點,並被點擊的點拖動。
唯一的區別我可以看到,也是我唯一的懷疑,是精靈在我的原代碼被添加到雪碧,然後將其添加到舞臺,而雪碧在測試項目正在添加到根DisplayObject
。我在想,這個事件以某種方式傳播到容器Sprite並拖放它,而不會丟棄另一個Sprite。我看到的怪異捕捉可能是光標捕捉到另一個精靈後面的對象。另一個重要的事情是:當我將一個Sprite放在另一個Sprite的頂部時,該Sprite停止像我想要的那樣移動,但仍然跟蹤註冊點。
無論如何,我真的很難過,我真的不知道我跑完了。有任何想法嗎?