2009-07-14 3 views
3

私は自分のFlashムービーにロードするSWFファイルを持っていて、それらのSWFファイルには、ムービーのダイアログやボタン。私はロードされたSWFのマウスイベントハンドラを一時的に無効にしたい、またはそれらが私のフラッシュムービーに影響を与えないようにブロックしたいと思います。私のフラッシュムービーはAS 2です。Flash:外部から読み込まれたSWFに対してすべてのマウスイベントを一時的に無効にしたりブロックしたりするには

答えて

5

ActionScript 2のこの種の問題に対する一般的な解決方法は、しばしば「ブロッカー」クリップと呼ばれるものです。完全に透明な塗りつぶしで構成されるムービークリップを作成するだけです。次に、いつでもどこでもこのムービークリップを配置し、必要に応じてサイズを変更できます。最後に、あなたはこのクリップにダミーのマウスイベントを割り当て、ハンドカーソルのそれの使用をオフにする - このように:

blocker.onRelease = function() {}; 
blocker.useHandCursor = false; 

は限り、このクリップは、あなたのロードされたコンテンツの上にあるように、任意のマウスイベントを吸収します。

+0

私はこのアイデアが好きで、私は読み込み中のswfの上にあるムービークリップを追加しましたが、マウスの関連イベントが終わっても、クリップはまだ私のonreleaseイベントを捕捉していると思うことができます。 – Jon

+0

さて、私はこのテクニックがうまくいくと思っています。私はいつも使っています!ムービークリップが表示されていることを確認する必要があります(blocker._visible = true)。塗りつぶしに実際の色を追加して、ロードされたSWFの上にあることを確認することができます。これは、AS2で深度が間違ってしまうのが簡単だからです。 –

+0

ええ私もそれを使用しました。ブロッカークリップに大きな青色の長方形が含まれるようにしました。これは、ロードされていることと、正しい幅と高さであることを非常に確信しています。興味があれば、私に最大の頭痛を与えている資産はPrint2Flashからです。 – Jon

0

ボタンやオブジェクトがフレームに来るような実際に必要なときにイベントハンドラを作成します。

イベントリスナーのマウスクリックがすでに作成されている場合は、actionscriptの任意の時点でリスナーを削除できます。

myButton.removeEventListener(MouseEvent.CLICK、 handleMouseClick);

そして機能または関連するロジックは、後で戻って上のマウスイベントハンドラを有効にしている

myButton.addEventListener(MouseEvent.CLICK、 handleMouseClick)。

「handleMouseClick」

別の解決策をクリックし、マウスで何かを行い、実際の機能とコードであることは、あなたのメインのタイムライン上のActionScriptでいくつかのグローバルブールフラグを設定して、マウスを扱う関数の内部です最初に何かをする前にブール値をチェックすることができます。マウスイベントは作成され、イベントハンドラに渡されますが、ブール値フラグの状態に応じて選択的に無視されます。

+0

私は、基礎となるムービーのActionScriptを制御できません。それは自分のことをして、私はそれをやることをやめたいのです。 – Jon

+0

また、そのコードはAS3固有であり、AS2では機能しません。 –

0

他の回答として、クリックイベントが子SWFに到達するのを止める方法は、ブロッカーオブジェクトをその前に配置することです。鍵は、ブロッカーがボタンであることです。シェイプを持つシンプルなクリップでも、AS2の子SWFにクリックされるようになります。

AS2またはAS3のいずれかの親がAS2の子SWFをロードしている場合でも、ブロッカーボタンが必要です。

0

また、変数を使用して、clickEvent関数が呼び出されるたびに状態が「0」に変更されているかどうかを確認することもできます。

var lockScreen:int = 0;

lockScreen = 1は、クリックイベントを無視して何かをした後にゼロに戻す場合に設定します。 少なくともそれは私のために働く:)

関連する問題