1

コードによってステージに持ち込まれた 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 に設定しても、ハンドラーの動作は損なわれません。

4

1 に答える 1

1

ボタンをクリックすると、「上」「下」「上」の3段階を経て、そのようになぞっていきます。scareX の範囲は 0 ~ 1 で、sacre は 0% ~ 100% です。

于 2013-10-21T06:23:59.777 に答える