• ベストアンサー

コンポーネントのscrollpain

を使って、その中に別のswfを表示させた場合、その表示されているswf内のボタンは反応しないものなんでしょうか? 例えば「001.swf」というファイルの中にscrollpainを使って「txt001.swf」というファイルを表示させたとします。その「txt001.swf」の中にリンクボタンがあり、そのボタンにActionScriptで、 on(release){ getUrl("○○.html",_blank); } と記述します。 txt001.swfのみで表示させた場合は、きちんと別ウィンドウで指定のURLに飛ぶのですが、それを入れ子にした001.swfのプレビューでは、URlに飛ばないし、ロールオーバー(色を変化)さえも、反応しません。 なにか他の指定の仕方があるのでしょうか?教えて下さい。 FLASHは「MX2004」です。 よろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

ScrollPane コンポーネントに表示するコンテンツが、ドラッグ可能( scrollDrag パラメータが true )になっていませんでしょうか? ドラッグできるように設定している時は、読み込んだムービーが持っているボタンは反応しなくなります。 例えば、ムービークリップ clip の中にボタン btn を配置してあるとします。 clip に rollOver や release など、ボタンとしてのイベントを利用するスクリプトを書くと、clip 全体がヒット領域(マウスが反応する部分)になります。 btn は clip の一部でもあるのですから、たとえ btn の上でマウスイベントが発生したとしても、Flash の内部では clip でのイベントと見なされます。 そのため、btn にいくら「オーバー」のフレームを定義したり release イベントを使ったスクリプトを書いても、btn ではマウスイベントがそもそも発生しないことになるので、意味を持ちません。 ScrollPane コンポーネントは、内部にムービークリップを持っています。ScrollPane 内に表示するムービーはこれに読み込まれ、読み込んだムービーが持っていたボタンやムービークリップなどは全て、このムービークリップの子になります。 コンポーネントパラメータの scrollDrag が true の時は、読み込み用のムービークリップに press と release イベントを利用する処理が定義されて、コンテンツのドラッグが可能になります。 先述の通り、親のムービークリップがボタンイベント( rollOver や release など)を利用している時は、子のボタンイベントは検出されなくなります。 コンテンツのドラッグが可能な時に、読み込んだムービーにあるボタン等が反応しなくなるのはこのためです。 解決策として一番簡単な方法は、ScrollPane 内のコンテンツのドラッグを禁止することです。 ドラッグを禁止( scrollDrag パラメータを false )すれば、読み込んだムービーの親にあたるムービークリップにはボタンイベントを利用するスクリプトが定義されず、このムービークリップ全体がヒット領域になることはありません。 読み込んだムービー内のボタンでのマウスイベントは通常通り検出されますから、正常に機能します。 release イベントやボタンシンボルの「オーバー」フレームによらずクリックやロールオーバーを検出できる仕組みを工夫すれば、ドラッグを可能にしながらもムービー内のボタンを有効にすることができます。 release イベントや「オーバー」フレームと同等の機能は、ボタンシンボルの代わりにムービークリップを使い、マウスが動いた時やボタンが押された時に発生する mouseMove と mouseUp イベント、それからムービークリップとある1点の座標との衝突判定を見る hitTest を利用して作れます。 ただ、ScrollPane 内に読み込んだムービーが持っているムービークリップまでのターゲットパスが少々ややこしいところで、不可能ではないけれど、それ相応の ActionScript の知識も必要になります。 ドラッグできるようにしなければならない理由がないのでしたら、ScrollPane 内のコンテンツのドラッグを禁止した方が早いと思います。

fe2-dicapoo
質問者

お礼

とても詳しく説明頂きましてありがとうございます。 scrollDragをfalseにすることで、問題は解決しました。 FLASHは、本当に奥の深いソフトなので、その分勉強のし甲斐があります。 また何か質問するかもしれませんが、その時はヨロシクお願いします。

関連するQ&A