문제

나는 시도하는 문제에 빠졌다 Redispatch Actionscript 3의 마우스 이벤트. 나는 그것을 좁혔다 MouseEvent.clone() 방법이 완전히 깨졌습니다. 다음 이벤트 처리기 :

    private function handleMouseMove( evt : MouseEvent ) : void
    {
        trace("mousemove", evt.stageX, evt.stageY);
        var newEvt : MouseEvent = evt.clone() as MouseEvent;
        trace("mousemoveclone", newEvt.stageX, newEvt.stageY);
    } 

다음 출력, ad infinitum의 결과 :

mousemove 167 206 
mousemoveclone 0 0

이것은 내가 mouseevent를 받고있는 코드가 무엇을 받고 있는지에 맞추었기 때문에 깨진 클론 기능에 대한 나의 가설이 있습니다.

이것은 내가 뭔가를 놓치지 않는 한 링크 된 문서가 나타나야하는지에 직접적으로 모순됩니다. 나는이 행동을 일으킬 수있는 내가 한 일 (또는하지 않았던)에 대해 완전히 상실하고 있습니다. AS3 남자들이 자신의 문서를 읽는 것을 정말로 잊었습니까? Event.clone()?

특정 사용 사례에 기능 객체를 사용 하여이 문제를 해결할 수는 있지만 원하는 것을 선호합니다. 어떤 아이디어?

편집하다: LocalX와 Localy 회원들은 제대로 복제되고있는 것처럼 보이며, 여기서 무슨 일이 일어나고 있는지에 대한 손실을 더 많이받습니다.

도움이 되었습니까?

해결책

그것은 알려진 버그입니다. 여기에서 버그 보고서를 볼 수 있습니다. http://bugs.adobe.com/jira/browse/fp-343

그래도 다른 모든 것은 복제되어야합니다. 버그가 고정 될 때까지 항상 Stagex와 Stagey를 수동으로 할당 할 수 있습니다.

다른 팁

나는이 스레드가 7 개월 휴면이라는 것을 알고 있지만, 이것을 조금 업데이트하기 위해서는 FP10과 Flex4에서 여전히 활성화되어 있습니다. 이벤트를 redispatch하면 발생합니다. 즉:

private function mouseListener( e:MouseEvent ):void
{
    dispatchEvent( e );
}

DispatchEvent () 호출은 클론 ()과 동일하게 보이므로 Stagex와 Stagey는 0으로 설정됩니다.

이것은 꽤 오래된 질문이지만 솔루션을 위해 Google에 글을 썼을 때 발생했으며 여기에있는 것은 포괄적이지 않습니다.

이것이 "고정"되지 않은 이유는 그것이 의도 한대로 작동하기 때문입니다. Stagex 및 Stagey 값은 이벤트 대상을 사용하여 LocalToglobal 변환을 수행하여 Getter를 호출 할 때 계산됩니다. 이벤트가 발송 된 이후 대상 객체가 위치, 스케일 또는 회전이 변경된 경우에도 숫자가 올바르게 유지되도록 필요합니다.

올바른 Stagex 및 Stagey 값을 가진 Mouseevent를 실제로 redispatch 해야하는 경우 두 가지 옵션이 다음과 같습니다.

  1. Stagex와 Stagey Getters를 무시하는 Mouseevent의 사용자 정의 서브 클래스를 만듭니다. 원래 대상을 저장하고 LocalToglobal 계산을 직접 수행하거나 원래 이벤트를 복제 할 때있는 값을 사용하여 Stagex 및 Stagey의 정적 값을 저장할 수 있습니다.

  2. 스프라이트를 확장하고 발송자를 무대에 추가하여 재고 Mouseevent가 제대로 작동하도록합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top