-1

www.zara.comのようなボトムメニューを作成しようとしています。

私のコードには透明なムービークリップがあり、マウスをロールオーバーするとメニューが表示され、マウスをロールアウトすると非表示になります。

メニューはその透明なムービークリップの上に表示されるので、ロールオーバーおよびロールアウトアクションを使用して、透明なMCでメニューを操作できます。

ここでの問題は、マウスがメニューMCをロールオーバーし、透明なムービークリップをロールアウトするように動作する場合です。

最初のムービークリップをロールアウトせずに、別のムービークリップ上でムービークリップ上でマウスロールを作成するにはどうすればよいですか?

混乱するのですか?

ありがとう!

4

4 に答える 4

0

MovieClipBが別のMovieClipAの上に表示されると、MovieClipAはMouseEvent.ROLL_OUTイベントを発生させます。これは、MovieClipBがMovieClipAがMouseEventsを受信できないようにしているためです(最上位にあるため)。

MovieClip BからMouseEventsを受信する必要がない場合は、そのmouseEnabledプロパティをfalseに設定すると、その下にあるMovieClipAがMouseEventsを受信します。

また、特定のケースで意味があるかどうかに応じて、MovieClipBをMovieClipAの子にすることができます。これにより、MovieClipBがMovieClipAを覆い隠した場合に、ROLL_OUTイベントが発生しなくなります。

これがあなたの質問に答えるのに役立つことを願っています。

于 2009-09-20T18:45:10.133 に答える
0

ああ!私はあなたの問題を解決するかもしれない何か面白いことを思い出しました。

MouseEvent.ROLL_OUTイベントが発生すると、relatedObjectプロパティを持つMouseEventオブジェクトを使用してリスナー関数が呼び出されます。これは、マウスフォーカスを取得している(ロールオーバーされている)オブジェクトへの参照です。この場合、このプロパティが他のMovieClipオブジェクトに設定されている場合はイベントを無視し、他のMovieClipオブジェクトがロールしたときにイベントを手動で発生させることができます。アウト(両方をロールアウトするため)。

于 2009-09-20T20:54:23.650 に答える
0

これは、javascriptテクニックに由来する迅速で汚いトリックです

1.) 追加のロジックを clipA ロールアウトに組み込みます。このロールアウトは、しばらく待機し、メニューを閉じる前にマウスがメニュー上にあるかどうかをチェックします。

// define a boolean value for the moust beeing on the menu
public var menuOver:Boolean = false;

public function onMenuOver( event:MouseEvent ):void
{
    menuOver = true;
    // other menu code here
}

public function onMenuOut( event:MouseEvent ):void
{
    menuOver = false;
    // other menu code here
}

public function onMainClipOver( event:MouseEvent ):void
{
     // show menu code here
}

public function onMainClipOut( event:MouseEvent ):void
{
    setTimeout(execMainClipOut,100);
}

/**
 * close the menu only if the mouse is not over the menu
 */
public function execMainClipOut()
{
    if(!menuOver){
        // close the menu
    }
}
于 2009-09-20T19:13:19.080 に答える
-1

上記のように、relatedObjectは完全に機能します

たとえば、MovieClip A があり、その上に Movieclip B があるとします。ムービークリップ A のロールオーバー時にムービークリップ B を表示し、ムービークリップ A のロールアウト時に非表示にするには、

通常、ムービークリップ B が表示されますが、B にカーソルを合わせるとムーブクリップ B が消えます。B が A の上にあるため、ロールアウト イベントが発生します。

そのため、Movieclip A ロールアウトでも if((event.relatedObject == MoveClipB) { //関連オブジェクトである B をロールオーバーする場合は、何もしないでください } else { //B を非表示 }

これを使用しても B のイベントは機能します

于 2011-03-04T12:26:57.630 に答える