私は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);
}
次の出力が無限に出力されます。
mousemove 167 206
mousemoveclone 0 0
これは、MouseEvent を再ディスパッチしたコードが受け取っていたものと一致するため、クローン機能が壊れているという私の仮説です。
これは、何かを見逃していない限り、リンクされたドキュメントが示すこととは正反対です。この動作を引き起こす可能性のある何をしたか (またはしなかったか) について、私は完全に途方に暮れています。AS3 の人たちは、自分たちのドキュメントを読むのを本当に忘れていたのEvent.clone()
でしょうか?
特定のユースケースでは代わりに関数オブジェクトを使用することでこれを回避できますが、そうしないことを好みます。何か案は?
編集: localX および localY メンバーは適切に複製されているようです。これにより、ここで何が起こっているかについてさらに途方に暮れます。