무대 좌표 (x, y)가 주어지면 사용자가 위치 (x, y)에서 클릭 한 것처럼 플래시 응용 프로그램을 동작하게하고 싶습니다. 즉, 이와 비슷한 것입니다.Actionscript 3에서 마우스 이벤트 시뮬레이션
function simulateClick(x:Number, y:Number):void{
var e:MouseEvent = new MouseEvent(MouseEvent.CLICK, true, false, x, y)
stage.dispatchEvent(e);
}
나는 이러한 종류의 문제에 대해 이야기하는 많은 페이지를 발견했으며, 모두 위와 비슷한 솔루션을 제공합니다. 그러나 이것은 (x, y)에서 사용자가 클릭하는 것과 동일하지 않습니다. 두 가지 문제가 있습니다 :
첫 번째는 e.stageX와 e.stageY가 둘 다 0이라는 것입니다. 직접 설정할 수는 없습니다. e.localX와 e.localY가 설정되었을 때 문서가 계산되지만, dispatchEvent 전에 e.localX를 설정하거나 이벤트 리스너에서는 설정하지 않았다고 설명합니다.
var p:Point = e.target.localToGlobal(new Point(e.localX, e.localY));
이 유일한 옵션이다 :이 같은 내 이벤트 리스너를 모두 다시 수
?
두 번째 문제는 내 이벤트 리스너가 스테이지 자체가 아닌 스테이지의 자식들과 함께 등록된다는 것입니다. 그래서 dispatchEvent를 호출 할 대상을 찾아야합니다. 분명히 Flash는 대상이 무엇인지, 즉 어떤 객체가 위치 (x, y)에서 보이는 최상위 픽셀을 소유하는지 결정할 수 있습니다. 왜냐하면 사용자가 실제로 클릭 할 때 그렇게하기 때문입니다. 이 정보를 얻을 수있는 쉬운 방법이 있습니까? 아니면 동일한 작업을 수행하기 위해 자체 재귀 함수를 작성해야합니까? 나는 현재 DisplayObjectContainer.getObjectsUnderPoint를 사용하고 있습니다. 그러나 꽤 옳지 않습니다.
차이점이 있으면 FlashDevelop에서 작성 중입니다.
getObjectsUnderPoint()는 첫 번째 InteractiveObject를 반환하지만 모양 만 반환합니다. 이것은 설명서의 누락이거나 버그입니다. –