• ベストアンサー

Flashでのコーディング、ALT表示とプルダウン

Flashのページの制作でボタンのALT表示と、プルダウンでのフレーム移動の仕方が分かりません。Flashでは基本事項に入ると思うのですがご指導ください。 他のアニメーションやMovie部分は問題なくこなせました。

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

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

Flash のボタンには ALT を自動で表示する機能はありませんが、工夫次第で似たようなことはできます。 手っ取り早いのは、ボタンの「オーバー」フレームを利用する方法です。 ボタンシンボルの編集画面を開くと、タイムラインに「アップ」「オーバー」「ダウン」「ヒット」という4つのキーフレームがあるかと思います。 このうちの「オーバー」は、ボタンにカーソルが重なった時に表示されるボタンの外観です。 通常のボタンの外観が「アップ」です。「アップ」のフレームを「オーバー」にコピーし、ALT を表示した状態を描き足すと、カーソルが合った時に ALT を表示しているように見えます。 Flash で扱えるテキストの中に、ActionScript で表示内容を操作できる「ダイナミックテキスト」があります。ALT で表示する文字をシンボルのキーフレームに直接書き込まず、「ダイナミックテキスト」にして文字を可変にしておくと、1つのシンボルから複数のインスタンスを作った時に、それぞれ違う ALT を表示できます。 「オーバー」のフレームに ALT を表示するフキダシやポップアップチップを描き、その上にテキストツールでテキストフィールドを作ります。テキストフィールドのタイプを「ダイナミックテキスト」にし、「変数」の項目に変数の名前を入れます。ここでは仮に、alt という変数だとします。 ActionScript で、カーソルが合った時にこの alt に表示したい文字列を設定します。 ボタンにカーソルが合った時は、rollOver というイベントが発生します。これを利用して、  //ボタンにカーソルが合った時の処理  on(rollOver)  {   //ALTで表示する文字列を設定   alt = "ALTのテスト";  } (↑このスクリプトをコピーして使う場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) このスクリプトはボタンのインスタンスに設定してください。 ALT の表示部分をムービークリップで別に作り、ボタンにカーソルが合った時、このムービークリップを ActionScript でボタンの傍に表示する方法もあります。 この方法だと、例えば、ボタンがステージの上方にある時は ALT をボタンの下方に、ボタンがステージの下方にある時は上方に表示する、といったことも可能です。 ------------------------------- UI コンポーネントを活用するには ActionScript を使います。ただ置いておくだけでは、せっかくのインターフェイスも、単なる絵になってしまいます。 ComboBox コンポーネントは、FComboBox というオブジェクトを使って制御します。 FComboBox には、項目が選択された時に発生するイベントはありません。代わりに、指定の関数を呼び出すように設定するためのアクション(メソッドといいます)だけが提供されています。 まずはプルダウンのインスタンスに名前を付けてください。これは、ボタンやムービークリップを ActionScript で制御する時のルールと一緒です。 ここでは仮に、プルダウンのインスタンス名を combo とします。 コンポーネントのインスタンスを選択すると、「プロパティ」パネルに「プロパティ」と「パラメータ」というタブが表示されます。「パラメータ」のタブでは、コンポーネントが持つパラメータの内容を編集できます。 「 Labels 」がメニューの項目に表示される名前、「 Data 」は各項目に設定できるデータです。 「 Data 」はいろいろな使い方ができますが、今回は、各項目が選択された時のフレームの移動先を管理するものとします。 例えば、メニューが「トップ」「メイン」「リンク」「BBS」の4項目で、それぞれのフレームの移動先が「 1 」「 5 」「 10 」「 15 」だとします。「 Data 」のパラメータを4つ追加して、これらの数字をそれぞれ設定してください。 FComboBox には、何番目の項目が選択されているかを取得する getSelectedIndex メソッドと、指定した項目に設定されている Labels や Data を読み出す getItemAt メソッドがあります。 これらのメソッドで、今選択されているのが何番目の項目かを取得し、その番号を元に Data を読み出します。Data にはフレームの移動先を入れてありますから、読み出した Data をそのまま gotoAndPlay に渡すことで、フレームを移動できます。 以上のような処理をする関数を1つ作ります。関数はどこで定義してもいいのですが、今回は、combo インスタンスで定義することにします。関数の定義は1度で充分ですから、combo インスタンスがステージに登場した時1度だけ発生する、load イベントを使って定義します。 この関数を、項目が選択された時に呼び出す関数として登録します。これには setChangeHandler メソッドを使います。 setChangeHandler で関数を登録する場合は、第2引数で関数がどこで定義されているか(関数の所有者のようなものと考えてください)を指定します。省略するとインスタンスの親になります。例えば combo がステージにあるなら _root です。今回は関数の所有者は combo ですので、第2引数は this (自分自身)となります。 スクリプトにすると、大体、以下のようになります。このスクリプトはプルダウンのインスタンス combo に設定してください。 なお、下記のスクリプトでは combo はステージにあるものとしています。何かのムービークリップに入れ子になっている場合は、ターゲットパスにご注意ください。  // combo がロードされた時、1度だけ実行する処理  onClipEvent(load)  {   //項目が変更された時の処理関数を定義   function Frame_jump()   {    var index;    //何番目の項目が選択されているかを取得    index = _root.combo.getSelectedIndex();    //項目に設定されている Data 値を読み取り、    //指定のフレームに移動    _root.gotoAndPlay( _root.combo.getItemAt( index ).data );   }   //項目が選択された時に呼び出す関数を設定   this.setChangeHandler( "Frame_jump" , this );  } UI コンポーネントは、インターフェイス自体は簡単に作れるようになっているのですが、ユーザーが選んだ情報を処理する部分は制作者に用意させることで、汎用的に利用できる設計になっています。 その処理部分をどのように作るかが、少々難しいところです。 紙面の都合上、ActionScript の基本は割愛させていただきました。オブジェクト・ターゲットパス・関数・変数・イベント等については市販の書籍か、解説サイトなどをご参考になさってください。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

XLsuke
質問者

お礼

全くおっしゃるとおりで解決いたしました。ALT表示が思い込みであったことやら、大きな収穫でした。 ありがとうございました。

その他の回答 (2)

  • mat-21
  • ベストアンサー率56% (91/162)
回答No.2

Flashで作成されているんですよね?ALTとは?プルダウンとは? HTMLやJavaScriptとは違いますので、上記のコメントの意味がいまいちつかめません。補足していただければ.....。

XLsuke
質問者

補足

ありがとうございます。ALTと書いたのはHTMLのALTのようにボタンや画像にカーソルを合わせたときに簡単な文字説明のようなものを設定したいと思っています。 プルダウンとはFlashではコンポーネントとかコンボボックスと呼ばれているもののようですが、フレームの移動の設定方法がわかりません。こちらは、アクティブスクリプトで制御するのでしょうか? 当方、FlashMXリファレンスを読みながらやっていますが上記に関しまして情報がありませんで、こちらに記載させていただいています。

  • penpen7
  • ベストアンサー率33% (25/74)
回答No.1

参考のURLを乗せておきます。

参考URL:
http://www2.netwave.or.jp/~light/
XLsuke
質問者

補足

ここに質問の回答となる内容はありますか?

関連するQ&A