- ベストアンサー
Flashでイメージビューとサブメニュー処理したい
- Flashを使用して、イメージビューとサブメニューを処理したい場合、メイン表示とサブ表示の構成を考える必要があります。
- メイン表示部分にはイメージを表示し、マウスドラッグで表示しきれない部分も見ることができるようにします。
- 一方のサブ表示にはメニューリストを配置し、拡大・縮小や補足メッセージポインタの表示を可能にします。しかし、現在うまく動作しない状況が発生しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1ですが。 > 指摘していただいたとおりに設定しましたが > move_mcまでうごいてしまっています。 意味がわかりません。 書いたとおりにするとドラッグで「move_mc」が動くのです。 言い換えるとドラッグで「move_mc」を動かそうとしているのです。 ですから動いて良いのです。 動くのが正常です。 (move_mc が動かないのが異常です。) 私が想定している状況において 用意された次のページのSWFで http://adv-bluepipit.way-nifty.com/blog/flash/drag_menu.html 困ったことになっているのは そこ(move_mcまでうごくこと)ではなくて 右エリア(青い塗り)上でドラッグしても move_mc がドラッグされてしまうことです。 良いですか? 私が想定している状況において ドラッグで「move_mc」は動くのです。 そこは良いのですが 右エリア(青い塗り)上でドラッグしても move_mc がドラッグされてしまうことが問題なのではないのか? と言っているわけです。 ですから 青い塗りをムービークリップに変換して そのステージ上の青いムービークリップに 例えば「menu_mc」というインスタンス名を付けて "ダミーのクリック動作" を設定すれば良いのではないかと言っているのです。 繰り返しますよ 青い塗りをムービークリップに変換して そのステージ上の青いムービークリップに 例えば「menu_mc」というインスタンス名を付けるのです。 そして フレームに //menu_mcにダミーのクリック時動作を設定 menu_mc.onRelease = function(){ //ダミー動作 実際は何もしない } を書きます。 すると,「menu_mc」がボタン化されてしまうので その下の「move_mc」がその部分で反応しなくなります。 本当はそれだけで良いのです。 それだけで良いのですが, それだけだと上レイヤーの「menu_mc」にマウスを持っていったとき ハンドカーソルになってしまうので //menu_mcのハンドカーソルを無効にする menu_mc.useHandCursor = false; もついでに書いておきましょう。 という内容を書いているのです。 なお, Flash 8 をお持ちだと言うことですから パブリッシュ設定で Flash タブを選択して Player の設定で Flash Player 8 での SWF を書き出すことを前提として書いています。 Flash Player 5 以下では,これらのスクリプトは通用しません。 (最低限 Flash Player 6 である必要があります。)
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
意味がわからない部分があるので まずは私なりの解釈(読み替え)から書きます。 > 画像表示分野をマウスドラッグできる > セットされたムービークリップを配置し、 > その配置したフレームの上のフレーム > にしてから右部分にはメニュー選択できる部分を > 配置したのですが、 フレームの上のフレーム とは何のことかわかりません。 レイヤーではないでしょうか? ↓解釈(読み替え)↓ 「画像表示分野をマウスドラッグできるように セットしたムービークリップを配置し、 その配置したレイヤーの上のレイヤーに 右部分のメニュー選択できる部分を 配置したのですが、」 > メニューの部分をクリックしても > 画像がドラッグした感じで > メニューには反応しません。 メニューにボタンを置けば そのボタンはボタンとして動作すると思います。 つまりメニューに反応すると思います。 ↓解釈(読み替え)↓ 「メニューの背景になる部分,つまり ボタンなどの下になるメニューボード部分 をクリックしても 下の画像がドラッグされてしまいます。」 以上のように解釈させていただきます。 ========== 下側のレイヤーに置いたドラッグ可能なムービークリップには インスタンス名として仮に「moxe_mc」というインスタンス名を付けているものとします。 その上のレイヤーには メニューボタンの背景になるメニューボードの部分を置きます。 これもムービークリップとして配置します。 このムービークリップには「menu_mc」というインスタンス名を付けるものとします。 その場合のフレームに書くスクリプト例です↓ //------------------------------------------- //menu_mcにダミーのクリック時動作を設定 menu_mc.onRelease = function(){ //ダミー動作 実際は何もしない } //menu_mcのハンドカーソルを無効にする menu_mc.useHandCursor = false; //move_mcのドラッグ動作 move_mc.onPress = function(){ this.startDrag(); } move_mc.onRelease = move_mc.onReleaseOutside =function(){ this.stopDrag(); } //------------------------------------------- 要するに ドラッグ可能なムービークリップの上に, 大きなボタン(ムービークリップ製)を作るわけです。 その大きなボタンに,クリック時の動作を定義すると, その下にあるボタンなど(ドラッグ可能なムービークリップを含む)は反応しなくなります。 そだけでも良いのですが そうするとボタンでもない部分にカーソルを持っていっても ハンドカーソル(指差しカーソル)に変わってしまって変なので useHandCursor = false; でハンドカーソルにならなくしているわけです。 私の勝手な解釈が間違っていれば この回答全部は全く回答にはなっていないと思います。 その場合はすみません。 ↓私の解釈参考図↓
補足
回答ありがとうございます。 解釈としては間違っていません。 ですが、そのとおりになりませんでした。 指摘していただいたとおりに設定しましたがmove_mcまでうごいてしまっています。 http://adv-bluepipit.way-nifty.com/blog/flash/drag_menu.html 何か足りないのでしょうか。
お礼
返事が大変送れて申し訳ございません。 ようやくできました。 要するにボタン化することで目的の動作の通りに実行することが できるとわかりました。 ありがとうございました。