コードによってステージに持ち込まれた MovieClip インスタンス (ムービー) があります。このムービーにマウス オーバーまたはマウス ダウンしたときに、いくつかの効果を追加したいと考えています。そのため、最初にこの MovieClip にイベント リスナーを追加しました。
movie.addEventListener(MouseEvent.MOUSE_DOWN, movieDownHandler);
movie.addEventListener(MouseEvent.MOUSE_UP, movieUpHandler);
movie.addEventListener(MouseEvent.MOUSE_OVER, movieOverHandler);
movie.addEventListener(MouseEvent.MOUSE_OUT, movieOutHandler);
次に、イベント ハンドラーを追加しました。
private function movieDownHandler(e:MouseEvent):void {
trace("down");
}
private function movieUpHandler(e:MouseEvent):void {
trace("up");
}
private function movieOverHandler(e:MouseEvent):void {
trace("over");
}
private function movieOutHandler(e:MouseEvent):void {
trace("out");
}
そして、私がそれをテストすると、すべてがうまくいきます:この映画の上にマウスを置き、上をトレースし、マウスを下に向けると下にトレースし、マウスを上に向けると上にトレースします...しかし、ムービーにサイズの変更を追加すると、たとえばマウスを下に移動します次のようなハンドラ:
private function movieDownHandler(e:MouseEvent):void {
trace("down");
movie.scaleX = 0.9;
movie.scaleY = 0.9;
}
そして、いくつかのフィルター効果をオーバー ハンドラーに渡します。たとえば、blurFilter:
private function movieOverHandler(e:MouseEvent):void {
trace("over");
e.currentTarget.filters = [new BlurFilter(1,1,1)];
}
次に、イベント ハンドラーで予期しない動作が発生します。マウス オーバー トレース オーバー (問題ありません) を押してから、ムービーで (マウス ボタンを離さずにマウス ダウン) を押すと、「down」、「out」、「」の 3 つのイベントが次々に発生します。 over' (マウス カーソルが MovieClip の形状から離れません)。何が問題ですか?さらに、scaleX と scaleY を 1.1 に設定しても、ハンドラーの動作は損なわれません。