클릭하고 누르고있을 때 움직이기를 원하는 Sprite가 있습니다.스프라이트가 MOUSE_UP에서 끌기를 멈추지 않습니다.
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();
}`
내 문제는 다음과 같습니다 : 나는 커서를 이동 나는 즉시, 스프라이트를 클릭하면 이벤트를 처리 할 수
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);
}`
및 방법 : 나는 스프 라이트에 이벤트 리스너를 추가 할 방법이 , Sprite의 등록 포인트가 커서에 스냅되고 마우스를 놓으면 Sprite가 커서를 따라 멈추지 않습니다. 처음에는 그것이 픽셀 충돌과 관련된 문제라고 생각했습니다. 커서가 MOUSE_UP
에 아무 것도 건드리지 않았다고 생각했지만, 실험을 한 후에 커서가 틀린 것으로 판명되었습니다. 나는 또 다른 프로젝트를 시작함으로써 정확히 동일한 이벤트 추가 및 처리 방법을 복제했으며이 문제가 발생하지 않았 음을 알았습니다. 테스트 Sprite는 평소와 같이 끌어서 놓기 만하고 등록 포인트에 스냅하지 않고 클릭 한 포인트만큼 드래그합니다.
필자가 볼 수있는 유일한 차이점은 내 원래 코드의 스프라이트가 스프라이트에 추가되어 그 스프라이트가 스테이지에 추가되는 반면 테스트 프로젝트의 스프 라이트는 루트 DisplayObject
에 추가되었습니다. 어떻게 든 이벤트가 컨테이너 Sprite로 전파되고 드래그 앤 드롭하여 다른 Sprite를 삭제하지 않는다고 생각합니다. 이상한 스냅은 커서가 다른 스프라이트 뒤에있는 객체에 스냅 할 수 있습니다. 또 다른 중요한 점은 Sprite를 다른 Sprite 위에 떨어 뜨리면 Sprite가 원하는대로 움직이지 않고 등록 포인트를 따라갑니다.
에 관계없이, 나는 정말 어려움을 겪고 있고, 나는 정말로 끝났어. 어떤 아이디어? MOUSE_UP가 발생했을 때 가끔 마우스가 클립 위에 있지 않기 때문에