誕生日にもらった意外なもの

ParaFlaを使用してドロップダウンメニューを作成しようとしているのですがうまく動作させられません。
ご教示いただきたく思い質問させていただきます。

下のサイトのようなメニューを目指しています。
http://www.hack.channel.or.jp/

まず、大きなメニュー(上のサイトで言うとNews・The Worldなど)があって
それに触れると画像が変化し、小さいメニュー(The Worldとは?・時代設定など)が表示され、
その小さいメニューに触れると大きくなって、クリックでURLを取得。
というものです。(説明下手ですみません)

実際に作ってみている物は
(1)ルートにスプライトAを置き、クリップアクションに
on(rollOver){gotoAndPlay("over");}
-
on(rollOut,ReleaseOutside){gotoAndPlay("out");}
を記入。

(2)スプライトAにover・outラベル設定して
大メニューに触れたら子メニューが開くようにできました。

(3)しかし、そのままでは子メニューの「触れたら滑らかに大きく」を実行できないので、子メニュー1つ1つをスプライトに置き換え、
on(rollOver){gotoAndPlay("over2");}
-
on(rollOut,ReleaseOutside){gotoAndPlay("out2");}
-
on(Release){gotoAndPlay("release2");}
とクリップアクション記入。

(4)そしてそのスプライトにover・out・releaseラベルを設定して
overで大きくなるように、releaseでURLを取得 としました。

多少の不安もありましたがルートにてプレビューしてみると、大メニューoverで子メニュー展開まではできていたのですが、
子メニューに触れても大きくならないしURLも取得できませんでした。

以上が現在の状況です。

間違っている場所があれば指摘をしていただきたいです。
他の方法があれば知恵をお貸しくださいm(_ _)m

分かりにくい文章ですみません。よろしくお願いします。

A 回答 (1件)

ここではサンプルなどを提示できませんし,


提示できたとしても私には ParaFla! でサンプルを作成する能力もありませんからヒントだけのようなものです。


ボタン機能( on(rollOver){} などの on(○○){} )が上下に重なると,
下のボタン機能( on(○○){} )は機能しません。
Flashの仕様です。
このことは便利にはたらくことが多いです。
しかし,
たまにはご質問されているように邪魔になる場合もあります。

スプライトを親子の入れ子にして,
親スプライトにも on(○○){} を書いて,
子スプライトにも on(○○){} を書いた場合,
親スプライトの on(○○){} が優先されます。
スプライトは入れ物なので,
外側(親側)の入れ物ほど優先されます。
on(○○){} が上下に重なった場合と同じことになります。

したがって,

> 子メニューに触れても大きくならないし
> URLも取得できませんでした。

という状態になります。



目指していらっしゃるご質問のサイトのメニューを
よーーーく,観察してみてください。
観察するポイントは "カーソルの形" です。

最初に表示されている縦にならんだ親ボタン(スプライト)にカーソルを乗せたとき,
ハンドカーソル(指カーソル)に変わりません。
これは何を意味しているのかというと,
このスプライトには on(○○){} を設定していないということです。
その後に出てくる子ボタン(スプライト)にカーソルを乗せたときは,
ハンドカーソル(指カーソル)に変わります。
これは何を意味しているのかと言うと,
ボタンに設定したインスタンスであるか,
もしくは on(○○){} を設定したスプライトということになります。

ですから,
親スプライトにカーソルを乗せたり放したりするのを,
on(○○){} で検知して動作させるのではなく,
親スプライトとカーソルとが接触したかどうかを判断させて,
親スプライトとカーソルとが接触していたなら,
そのスプライトを gotoAndStop(○○) させるような仕組みが必要となります。

一般的にはこれには hitTest を使います。

FN0308001
onハンドラを使わずにロールオーバー-ロールアウトを検出する
http://www.fumiononaka.com/TechNotes/Flash/FN030 …

Flashゲーム講座&ASサンプル集【当たり判定について】
 →点とインスタンスとで当たり判定を取る
http://hakuhin.hp.infoseek.co.jp/main/as/hittest …



以上,

> 子メニューに触れても大きくならないし
> URLも取得できませんでした。

に関して,そうなる理由と,対処法のヒントだけという回答です。
    • good
    • 0
この回答へのお礼

ありがとうございます。おかげで無事に作成できました!
何故駄目なのかが理解でき、参考URLで hittest を(少しですが)学ぶことができました。

ありがとうございました(_ _)

お礼日時:2008/08/02 15:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報