• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:イメージギャラリーの最後までいったら「次へ」ボタンを消す)

イメージギャラリーの最後までいったら「次へ」ボタンを消す

このQ&Aのポイント
  • イメージギャラリーの制作中です。写真は40枚で、最後の写真になったら「次へ」ボタンを消して表示されないようにしたいです。
  • 「next_btn」というボタンに関するスクリプトがあり、最後の写真になったら「次へ」ボタンを消すように設定しています。
  • 環境はWin XP、Flash CS3、actionscript3、flashplayer9です。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

「次へ」ボタンを消すだけでしたら, 単純に書かれてある通りにそのままをコーディングすれば良いと思います。  ↓関数 nextClick を変更↓ -------------------------- //関数 nextClick の定義 function nextClick(evt:MouseEvent):void { // 写真入り「photo_mc」内を次のフレームに戻して停止 photo_mc.nextFrame(); // もしそのフレーム↑が「photo_mc」の最終フレームであれば if (photo_mc.currentFrame==photo_mc.totalFrames) { // イベントターゲット(next_btn)を非表示にする evt.target.visible=false; } } -------------------------- しかし, このままだと一度消えた「next_btn」が現れることはありません。 「next_btn」を再出現させるとなるとムービー全体の連動を考える必要があります。  ↓表示/非表示 連動部分の全体例↓ ------------------------------------ // 写真入り「photo_mc」の再生を停止 photo_mc.stop(); // 前へボタン「prev_btn」を非表示にしておく prev_btn.visible=false; // 次へボタン「next_btn」にクリック時のイベントリスナーを登録 next_btn.addEventListener(MouseEvent.CLICK,nextClick); //関数 nextClick の定義 function nextClick(evt:MouseEvent):void { // 写真入り「photo_mc」内を次のフレームに戻して停止 photo_mc.nextFrame(); // もしそのフレーム↑が「photo_mc」の最終フレームであれば if (photo_mc.currentFrame==photo_mc.totalFrames) { // イベントターゲット(next_btn)を非表示にする evt.target.visible=false; } // 前へボタン「prev_btn」を表示する prev_btn.visible=true; } // 前へボタン「prev_btn」にクリック時のイベントリスナーを登録 prev_btn.addEventListener(MouseEvent.CLICK,prevClick); //関数 prevClick の定義 function prevClick(evt:MouseEvent):void { // 写真入り「photo_mc」内を前のフレームに戻して停止 photo_mc.prevFrame(); // もしそのフレーム↑が「photo_mc」の最初のフレームであれば if (photo_mc.currentFrame==1) { // イベントターゲット(prev_btn)を非表示にする evt.target.visible=false; } // 次へボタン「next_btn」を表示する next_btn.visible=true; } ------------------------------------ 取得したり操作したりするプロパティは次の3つです。 currentFrame MC(ムービークリップ)の再生中フレームプロパティ totalFrames MCのフレーム数(=最終フレーム番号)プロパティ visible MCやボタンなどの 表示/非表示 プロパティ あとは, 「いつ」・「どうしたいか」 を考えながら場合に応じてコーディングします。  

usk99
質問者

お礼

度々ご丁寧にご解説いただきありがとうございます。 ただ僕のやり方が間違っているのか、 下記のようなエラーが出てしまいます。。 関数の定義が重複しています。 function nextClick(evt:MouseEvent):void { function prevClick(evt:MouseEvent):void { お分かりになりますでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です 補足を拝見しました。 > 関数の定義が重複しています。 > function nextClick(evt:MouseEvent):void { > function prevClick(evt:MouseEvent):void { それは文字通り(エラーメッセージ通り) function nextClick と function prevClick を二重(または三重 以上)定義しているからでしょう。 日本語のエラーメッセージくらい理解してくださいよ。 同じ関数名の関数を同じフレームにコピペして増やしてもダメです。 (仮にエラーが出なくても最後に定義した同名の関数しか有効になりません。) スクリプトを変更するか, 元あった同じ関数名の関数を削除して#1で書いた2つのスクリプトのうちどちらかコピペで使用するとかしないと...。

すると、全ての回答が全文表示されます。

関連するQ&A