• ベストアンサー

Flash間のパラメーターの受け渡し

少し前に同様の質問をさせて頂きましたが、他の質問を含んでおり、そちらの方が中心となって話が進行しているので、新たに質問させて頂きます。 サムネイル画像が格納されているフォルダーが複数あります。メニュー画面(ページ)では、複数のフォルダーのうちサムネイル表示したいフォルダーを指定します。 それを受けてサムネイル表示画面(ページ)では、指定されたフォルダー内のJPEGファイルを読み込んで表示すると言う仕組みを構築したいと思っています。 メニュー画面からサムネイル表示画面にパラメーターとして受け渡しの方法がわかりません。 宜しくご教授ください。 (パラメーターは、FLAG,コンスタント(文字列)何でも構いません。)

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

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

Flash MX からはムービークリップをボタンと同様に使えるようになり、on アクションも利用できるようになりました。 ( Flash 5 では、ムービークリップで on を使うとシンタックスエラーになっていました) 原因は不明(単に、私が知らないだけかもしれません ^^;)なのですが、trace アクションなどで確認すると、press イベントが検出されていて on アクション自体は実行されているのは確かなのに、一部のスクリプトが動作したりしなかったりと、挙動不審な場合があるようです。 しかし、違うファイルを作って試してみると、全く同じスクリプトでも、何の問題もなく動作することもあります。 私自身もこの手の怪現象は何回か見ているのですが、未だに原因がよく分かりません。 ちなみに、以前、このような質問で回答したこともありますので、ご参考までに。  ・ムービークリッププロパティの変更   http://okweb.jp/kotaeru.php3?q=808667 on( rollOver )では反応しない(イベント自体は検出されている)が、MovieClip.onRollOver で定義した場合は反応します。 ところが、違うファイルでは on( rollOver ) の中でも、_visible プロパティで表示・非表示が制御できる(スクリプトが正常に動く)という、不思議な現象でした。 さしあたって、MovieClip.onPress で試してみるか、どうしてもダメならボタンシンボルを利用してはいかがでしょうか。 例えば、ムービークリップのインスタンス名が clip なら、  clip.onPress = function ()  {   gotoAndStop( "s2" , 1 );  }; で、いかがでしょう。このスクリプトは、メインのタイムラインに設定してください。

その他の回答 (5)

  • HapHands
  • ベストアンサー率73% (19/26)
回答No.6

こんばんは。下記の部分だけですが。 > ボタンアクションに以下のScriptを記述しました。 > > on (press) { >   gotoAndstop("s2", 1) ; > } > > 結果はOKでした。 > > 次に、描いた大きな矩形をムービークリップにして以下のScriptを記述しました。 > > on (press) { >    gotoAndstop("s2", 1) ; > } > > 全く同じScriptなのですが、無反応です。 MXからはムービークリップインスタンスにもonアクションを使用できるようになったのはDPEさまがご指摘の通りです。 が、ボタンインスタンスとムービークリップインスタンスで同じスクリプトが必ずしも動作するわけではありません。 これはターゲットパス(this参照やthisを省略した場合のデフォルト参照)が異なるからです。 ボタンインスタンス上で 「gotoAndStop( "s2" , 1 )」 と記述した場合にはボタンインスタンスが配置されているタイムライン上でgotoAndStopを実行します。 が、ムービークリップインスタンス上で 「gotoAndStop( "s2" , 1 )」 と記述した場合にはそのインスタンスのタイムラインでgotoAndStopを実行しようとします(これはonアクションでもonClipEventアクションでも同様です)。 以上をご参考に正しい指定を考えてみてください。

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

#2です。 シーンの移動は簡単ですよ。おなじみの gotoAndPlay を使います。  gotoAndPlay( "シーン名" , フレーム番号 );   ※フレームを番号ではなくフレームラベルで指定する時は、" "でくくって文字列にします シーンやフレームを移動してから、そこで停止させる gotoAndStop もあります。 もちろん、シーン1から2へ行くことも、シーン2から1へ戻ることもできます。 実は、gotoAndPlay / Stop は2種類あります。このようにシーンを移動できるもの( Flash Player 2 から使用されていて、歴史も古い)と、MovieClip オブジェクトのメソッドの1つである、引数がフレームの指定しかない MovieClip.gotoAndPlay / Stop(こちらは Flash Player 5 以降で使用可能)です。 シーンは _root だけの概念で、ムービークリップシンボルにはありません。ですから、MovieClip オブジェクトのメソッドである MovieClip.gotoAndPlay / Stop には、シーンの指定がないのです。 シーンを指定できる gotoAndPlay / Stop は、メインのタイムライン、およびステージ上にあるボタンやムービークリップでのオブジェクトアクション(要するに、対象となるタイムラインが _root である場合)でのみ、使用可能です。ムービークリップのタイムラインや、入れ子になっているボタン・ムービークリップでは使用できません。 指定したシーンやフレームが存在しない場合は、最初のシーンやフレームに戻ってしまうことがあります。 Flash のデフォルトのシーン名は、”シーン 1 ”というように、シーンと番号の間に半角のスペースが入っていますので、ご注意ください。また、半角・全角、大文字・小文字も区別されますから、この間違いにもご注意を。予め、分かりやすい名前に変更しておくといいでしょう。 シーンが複数ある場合、何も指示しなければ、シーン1→2→・・・と、自動的に再生されていってしまいます。 シーン1で、例えばボタンが押されるまで待ちたい場合は、フレームに stop(); アクションを入れてタイムラインを止め、ボタンが押された時に、gotoAndPlay または gotoAndStop でシーン2へ移動するようにします。 シーンの概念は、テレビドラマや映画などで、いわゆる”シーン(場面)”ごとに制作していくような感覚で考えると、分かりやすいかと思います。 ドキュメントのサイズや背景色・フレームレート等は、どのシーンでも同じになります。シーンごとに違うサイズ等を設定することはできません。 編集するシーンを切り替える時は、ステージの右上に並んだ2つのアイコンの、左側のアイコン(映画監督が持っている、キュー出し?のようなもののデザイン)をクリックし、編集するシーンを選択します。 「ウィンドウ」→「デザインパネル」→「シーン」で、シーンを管理するパネルが開きます。このパネルでは、編集するシーンの切り替えのほか、シーンの追加・削除・複製・名前の変更・再生順序の入れ替えができます。 詳しい操作については、ヘルプの「 Flash ユーザーガイド」→「 Flash ドキュメントの操作」→「シーンの操作」をご参照ください。 ムービーを作る目的や、ページのデザインと相談になりますが・・・ 例えば商業目的のページで、メニューに「パソコン」「デジカメ」「携帯電話」のカテゴリーがあるとします。 「パソコン」が選択された時は「パソコン」の画像と説明を、「デジカメ」が選択された時は「デジカメ」の画像と説明を・・・というように、選択されたカテゴリーの画像のサムネイルを表示し、なおかつ HTML で説明文もカテゴリーごとに内容を変えたい場合は、メニューとサムネイルのムービーは2つに分けざるをえなくなるでしょう。 この場合は、違う HTML ファイルにある異なるムービー同士のやりとりになりますから、パラメータの受け渡しは難しくなります。 そうではなく、例えばフォトアルバムや作品の展示のように、HTML の本文はどのフォルダが選択された時も同じで、ムービーの中で表示する絵だけ入れ替わればいいというのであれば、ムービーは1つで充分です。 同じムービーの中でのやりとりになりますので、パラメータの受け渡しも簡単です。 また、いっそのことメニューとサムネイル画面を一体化してしまうのも1つの手です。 メニュー部分とサムネイル画面をそれぞれムービークリップにし、全てを1つのフレームに配置して、ボタンでカテゴリーが切り替わるたびにサムネイル画面も切り替わるようにする、といったところです。 この場合はシーンの移動もなくなり、同じフレームに並んだムービークリップ同士の制御となります。 作る目的とデザインの都合で、方法も変わります。 発想を柔軟にして、いろいろ試してみてください。

teddy1014
質問者

お礼

いつも適切な回答を頂き、感謝しております。 メニュー・サブメニュー・サムネイル表示と3つのHTMLファイルに(特に意味無く)分けていたのを、一つにして作成してみます。 メニューに1シーン、サブメニューに複数のシーン、サムネイル表示に1シーン、と言った具合にしてみます。 あとは、先日教えて頂いたマスクレイヤー配下に外部から読込んだJPEGを配置する事が解決すれば良いのですが。

teddy1014
質問者

補足

試しに、 シーン1に大きな矩形を描き、シーン2の円形を描きました。 シーン1のボタンシンボルを配置し、ボタンの押下をトリガーにしてシーンが移動するようにしました。 ボタンアクションに以下のScriptを記述しました。 on (press) {   gotoAndstop("s2", 1) ; } 結果はOKでした。 次に、描いた大きな矩形をムービークリップにして以下のScriptを記述しました。 on (press) {    gotoAndstop("s2", 1) ; } 全く同じScriptなのですが、無反応です。 ちなみに、 on (press) { getURL("./xxx_test.html"); } このようなScriptは正しく動きます。 何故なんでしょうか?。

  • mach999
  • ベストアンサー率75% (36/48)
回答No.3

なるほど。 それならばLocalConnectionを使えば実現できます。 今試してみましたが、少なくともローカルでは成功しました。 ただしFlash MX、Flash MX 2004しか対応してません。 参考になりそうなURLを挙げておきます。 http://f-site.org/archives/000252.html あと、この本は役に立つのでお勧めです。 http://www.esbooks.co.jp/books/detail?accd=31016404 頑張ってください。

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

ふと思うのですが。 わざわざ2つの swf ファイルに分けなくても、メニューとサムネイル画面を1つのムービーにすれば、パラメータの受け渡しは簡単です。 例えば、シーン1をメニュー画面、シーン2をサムネイル画面とします。 シーン1のフレームアクションで、変数を1つ用意します。ここでは仮に、folder という名前だとします。 メニューはおそらく、ボタンで選択するようなタイプではないかと思います。ボタンが押された時、対応する値なりフォルダ名なりを変数 folder に代入し、シーン2へ移動します。 シーン2でも、シーン1にあった変数は利用できます。 画像を読み込む時は、  loadMovie( _root.folder + "/image01.jpg" ); といった具合に、フォルダ名を保持する変数を利用してファイル名を指定するだけです。 メニュー部分を HTML のフォームで作る・メニュー画面とサムネイル画面は常に同時に表示しておきたいなどの事情ならともかく、単に、メニューでフォルダを選ぶ→そのフォルダにある画像のサムネイルを表示する、といった流れのムービーであれば、メニュー画面とサムネイル画面を別々の swf ファイルにする必要はないと思います。 1つのムービーの中にメニューもサムネイル画面も存在していれば、サムネイル画面からメニューに戻り、違うフォルダを選択し直してサムネイル画面を表示するといったことも可能です。 メニューとサムネイル画面を別々の swf ファイルに分けてしまうと、スクリプトや処理が難しくなるだけで、メリットはそれほどないと思いますが。

teddy1014
質問者

補足

いつもありがとうございます。 シーン1からシーン2へ、シーン2からシーン1への移動って実施した事は無いのですが簡単ですか?。 メニューとサムネイル表示との行き来が必要なので、別々に作成しなければならないかなぁと思っていました。 この場合、ドキュメントサイズは全て同一ですか?。 同一じゃなければ、今まで作成したFLASHは別々じゃなくて 全て一つのFLASHに格納出来ると言う事ですね?。 「シーンの挿入」でシーンを追加する事は知っていたのですが、追加すると追加したシーンしか見えないので使う事をしませんでした。

  • mach999
  • ベストアンサー率75% (36/48)
回答No.1

1つのHTMLファイル内にMenu.swfとThumbs.swfの2つのファイルがあるんですか? それとも、違うHTMLファイルにそれぞれMenu.swfとThumbs.swfあるとか?

teddy1014
質問者

補足

違う画面を想定していますので、別のHTMLファイルで稼動させるつもりです。 最後の手段は、サムネイル表示のSWFは1個用意しておき、HTMLファイルは複数(フォルダー分)用意し、各々のHTMLにはPARM=でどのフォルダーを読むかのフラッグをパラメーターとしてFLASHに受け渡す。条件設定のFLASHではgetURLで呼び出すHTMLファイルを変える。 ちょっと泥臭いやり方ですが、致し方ないかなぁと思っています。

関連するQ&A

専門家に質問してみよう