• ベストアンサー

一つのボタンで画像を変える方法

FLASH8を使用しています。 ボタンを『戻る:▲』『進む:▼』の二つで 一定の場所に画像などを次々表示させて行くにはどうしたらいいのでしょう。 swfファイルをターゲットに表示させる方法はわかるのですが…。 初心者のため補足が必要であればお答えします。 よろしくお願いします。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

最近始められる方というのは, どうも,複雑に考えようとされる傾向が強いように思いますね。 Flash は本来のオーソドックスな機能を使えばすごく簡単なソフトです。 stop() play() gotoAndStop() gotoAndPlay() それとあと, on (release) {} などのイベントハンドラだけで, Flash内のことはたいていのことはできてしまうように作られています。 つい先日回答した, このご質問とほとんど同じ回答になってしまいますが↓。 「スライドバーを使って画像を変える」 http://oshiete1.goo.ne.jp/qa2785127.html   ↑教えて!goo  ↓OKWave (同じです) http://okwave.jp/qa2785127.html // === 以下は上記URLの内容とほぼ同一です。=== とりあえず初歩的な方法として, Flash は元々インタラクティブにフレーム移動(時間軸移動)できるアニメーションソフトです。 それを有効利用するのが,最初に思い付くべき方法だと思います。 まずステージ上を図示すると次のように作成します。  ┌──── ステージ ─────┐  □□□□□□□□□□□□□□□  □■■■■■■■■■■■■■□  □■■■■■■■■■■■■■ ←画像  □■■■■■■■■■■■■■□  □■■■■■■■■■■■■■□  □■■■■■■■■■■■■■□  □□□□□□□□□□□□□□□  □□□『戻る▲』□『進む▼』□□□ ←ボタン  □□□□□□□□□□□□□□□ 画像は画像用レイヤーに, ボタンはボタン用レイヤーに, スクリプトはスクリプト用レイヤーに, 別々のレイヤーを用意し,配置ます。 (ボタンとして用意するのは以下すべてボタンインスタンスであるとします。) タイムラインを図示すると次のような感じです。  □ レイヤー 筆・・|○         []| ←スクリプト  □ レイヤー 筆・・|●///////////[]| ←ボタン  □ レイヤー 筆・・|●|●|●|●| ~|●| ←画像 画像用レイヤーの各フレームをキーフレームにして, それぞれに違う画像を同じ位置に用意しておいて, ボタンで,次のフレームや前のフレームにジャンプさせれば良いだけですね。 gotoAndStop() の親戚(兄弟)には, prevFrame(); (前のフレームへ行って止まれ)と, nextFrame(); (次のフレームへ行って止まれ)がありますから, これを使えば簡単です。 まず,スクリプト用レイヤーの最初のフレームに, ------------- stop(); ------------- を書いて, ムービーが勝手に再生しないようにしておきます。 そして, 『戻る:▲』ボタンには, ----------------------- on (release) { prevFrame(); } ----------------------- 『進む:▼』ボタンには, ----------------------- on (release) { nextFrame(); } ----------------------- と書けばできあがりです。 アニメーションさせるわけではないので, モーショントゥイーンとかシェイプトゥイーンさえも要りません。 // ==================== _root のフレームを前後に動かすのが嫌であれば, 毎フレームごとに違う画像を置いた ムービークリップ を作成して, そのムービークリップのタイムラインを次や前に進ませれば良いわけです。 仮にそのムービークリップのインスタンス名を 「my_mc」 にでもして置いたとすると, 『戻る:▲』ボタンには, ----------------------- on (release) { _root.my_mc.prevFrame(); } ----------------------- 『進む:▼』ボタンには, ----------------------- on (release) { _root.my_mc.nextFrame(); } ----------------------- と書けばできあがりです。 最初に書いた方法のムービークリップ使用版です。 // ==================== まだ,いくらでも方法はあります。 画像はステージ上に用意しておくのではなく, いったんムービークリップに変換してライブラリの中だけに置いておいて, そのライブラリのムービークリップにリンケージから識別子を付けて, MovieClip.attachMovie でステージ上に呼びだす方法もあります↓。 「リンケージとは?」 http://www.1art.jp/flash/le/lessona/lessona.htm まずは上のURLを参考にしてみてください。 このご質問の場合は,少々ややこしくなりますが, ムービークリップに変換したムービークリップに付ける識別子を, 「gazou0」,「gazou1」,「gazou2」,…,「gazou9」 としておいたとすると, 次のような感じになると思います。 タイムラインを図示すると次のような感じです。  □ レイヤー 筆・・|○| ←スクリプト  □ レイヤー 筆・・|●| ←ボタン まず,メインムービー(_root)のフレームには, ----------------------------------- // 変数gazouNum (画像番号)の初期化 var gazouNum = 0; // 最初の画像を表示 _root.attachMovie("gazou"+gazouNum, "gazou", 0); // 表示した画像の位置を指定 _root.gazou._x = 100; _root.gazou._y = 50; ----------------------------------- 『戻る:▲』ボタンには, -------------------------------------- on (release) { // 画像番号が 0 より大きければ if (gazouNum>0) { // 画像番号に1を減算 gazouNum--; } else { // それ以外は 画像番号を 9 にする gazouNum = 0; } _root.attachMovie("gazou"+gazouNum, "gazou", 0); _root.gazou._x = 100; _root.gazou._y = 50; } -------------------------------------- 『進む:▼』ボタンには, -------------------------------------- on (release) { // 画像番号が 9 未満であれば if (gazouNum<9) { // 画像番号に1を加算 gazouNum++; } else { // それ以外は 画像番号を 9 にする gazouNum = 9; } _root.attachMovie("gazou"+gazouNum, "gazou", 0); _root.gazou._x = 100; _root.gazou._y = 50; } -------------------------------------- と書けばできあがりです。 こうなって来ると, stop() play() gotoAndStop() gotoAndPlay() だけではうまく行きませんが, attachMovie のしくみと,簡単な if文 を考えれば済みます。 FLASHアクションスクリプト入門編 「if / if else文」 http://isvalid.jp/actionscriptLab/ASlesson/actionsctipt_if.html // ==================== また,最近多いのが, 上記 3 つの方法のように画像を Flash 内に入れておくのではなく, 外部 JPEG ファイルにして,それをロードする方法です。 Flash ヘルプ より, loadMovie (MovieClip.loadMovie メソッド) http://livedocs.macromedia.com/flash/8_jp/main/00002479.html その他 Google検索:「loadMovie jpg」 http://www.google.co.jp/search?hl=ja&q=loadMovie+jpg&lr=lang_ja この MovieClip.loadMovie を使う場合, 外部画像を,  0.jpg,2.jpg,,3.jpg,… ,8.jpg, … というファイル名で保存し, それをロード表示させるムービークリップを, 画像を表示させたい箇所の左上のコーナーあたりに1つ作成して, そのムービークリップにインスタンス名 「my_mc」 を付けた場合, ボタンに書くスクリプトは次のような感じになると思います。 まず,フレームに書くスクリプト。 ----------------------------------- // 変数gazouNum (画像番号)の初期化 var gazouNum = 0; // 最初の画像を表示 _root.my_mc.loadMovie(gazouNum + ".jpg"); ----------------------------------- 『戻る:▲』ボタンには, -------------------------------------- on (release) { // 画像番号が 0 より大きければ if (gazouNum>0) { // 画像番号に1を減算 gazouNum--; } else { // それ以外は 画像番号を 9 にする gazouNum = 0; } _root.my_mc.loadMovie(gazouNum + ".jpg"); } -------------------------------------- 『進む:▼』ボタンには, -------------------------------------- on (release) { // 画像番号が 9 未満であれば if (gazouNum<9) { // 画像番号に1を加算 gazouNum++; } else { // それ以外は 画像番号を 9 にする gazouNum = 9; } _root.my_mc.loadMovie(gazouNum + ".jpg"); } -------------------------------------- // ==================== とにかく書きだすときりがありませんが, 画像をムービークリップに変換して, そのムービークリップの x座標,y座標プロパティ を変えても良いです。 また, そのムービークリップの _visibleプロパティ を変えて表示・非表示を切りかえても良いです。 また,  … … きりがないのでこの辺で...。 最後に, ムービークリップの基準点について↓。 「インスタンスの基準点」 http://homepage3.nifty.com/ginga-b/MX/inst_refpoint.html

pocomami
質問者

お礼

回答ありがとうございます。 初心者の私には最初のprevFrame();・nextFrame(); がわかりやすそうです。 いろんな方法があるんですね。参考にさせて頂きます。 勉強させて頂きます(_ _|||)

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

関連するQ&A

  • ボタンのパブリッシュ方法

    Flash8を使用しています。 作成したボタンをステージに配置し、Action Scriptを設定後にswf形式でパブリッシュしています。 Dreamweaverで利用したいので、ボタンサイズぴったりにパブリッシュしたいのですが、ステージのサイズをボタンと同じサイズに変更する他に良い方法がありましたたら、教えてください。

  • Flash8proで作成した再生ボタン付きswfファイルが・・・

    FLASH初心者です。。HP上に再生ボタン付きの動画を置く事になり、Flash8Proで作成した再生ボタン付き(スキン付き?)swfファイルを作成するところまではなんとか出来たのですが、HP上に配置すると再生ボタンが表示されず、swfファイルだけが表示されてしまいます。ですが、swfファイル自体を開くときちんと再生ボタンつきで表示されます。 ドリームでの配置の仕方は、動画swfと再生ボタン用swfの二つのファイルが出来ていたので、その二つをhtmlの任意のフォルダに入れ、動画swfだけをhtmlファイルに配置しました。この場合、再生ボタン用のswfファイルも同じく配置しないとだめなのでしょうか? 試しに配置してみたところ、プレビューよりもかなり大きいサイズで表示され、サイズを小さくしたところ、縮んでしまい正常に表示されませんでした。 説明下手なので通じない箇所もあるかと思いますが、ご回答よろしくお願い致します。

  • DreamweaverMXでFLASHボタンを挿入

    DreamweaverMXでFLASHボタンの挿入をしようとしても、設定を終えた後、「OK」あるいは「適用」ボタンを押すと「"button1.swf"は無効なファイル名です」と表示されます。"button1.swf"は初期設定ファイル名なのに?と思いながらもファイル名を変えたりしても全く同じエラーメッセージしか表示されません。どなたか解決策はお分かりでしょうか?宜しくお願いします。

  • 外部swfが作動しない

    FLASH8を使用してHPを作成しています。 index.flaの中の各ボタンに ---------------------------------------- on (release) { _root.space.loadMovie("a.swf"); } ---------------------------------------- このように指示したのですが、a.swfの中のボタンが作動しなかったり、txtファイルが読み込めなかったりします。 他のスクロールボタンは作動するのですが、何か設定がおかしいのでしょうか? 初心者なので、補足が必要ならばすぐお答えします。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASH CS4での外部SWFファイルの読み込みについて質問です。困

    FLASH CS4での外部SWFファイルの読み込みについて質問です。困っています。 AS3.0の初心者です。FLASH8(AS2.0)は使っていたのですが、AS3.0についてはほとんど知りません。FLASH8と同じ要領でボタンと透明ムービークリップを作成し、ボタンをクリックするとMCに外部SWFファイルが読み込まれる・・・という設定をしました。 ネットなどで色々調べた結果、SWFファイルの読み込みASは記入できたのですが、問題が一つ。 ボタンのレイヤーがMCのレイヤー下にあると、透明であるMCが邪魔になるのかボタンがクリックできません。ボタンのレイヤーを上に持ってくると、SWFは読み込まれるのですが元のSWFのボタンがそのまま表示されてしまいます。 FLASH8では透明MCが上にあってもボタンをクリックできた記憶があります。透明MCは元のSWF,外部SWFと同じサイズ(全て800x600px)にしてあります。 AS3.0ではどのようにすればいいのかわかりません。 どなたか初心者の私に教えていただけませんか。よろしくお願いします。

  • パソコンに保存したflashを見る方法

    パソコンにflash画像を保存したのですがそれを開こうとしたら、「このファイルを開けません。このファイルを開くには作成元のプログラム名が必要です」と表示されましたがなにをしていいのかわかりません。 どのソフトをダウンロードすればいいのでしょうか。 ファイルはrec.swfとでていました。

  • FLASHの外部SWFファイルの読み込み方法

    FLASHのアクションスクリプトの勉強中です。 外部SWFファイルを複数用意してボタンで呼び出す方法はわかったのですが、その読み込まれ方をかっこよくできないか考えています。 何個かSWFファイルを作成した後、新規FLAファイルを作成しました。 そのファイルにスクリーン用のシンボル(上のSWFファイルと同じ大きさのもの)を作成しインスタンス名を「screen」にしました。 ほいでもって複数のボタンシンボルを作成し、 on (release) { _root.screen.loadMovie("pekepke.swf"); } という感じで外部swfファイルをそれぞれのボタンより読み込むとこまではできたのですが、その読み込まれ方と切り替るときの表示の仕方をふわっと現れ、ふわっと消えてからファイルが現れるというふうにしてみたいのですができますでしょうか? ちなみにflash8を使用しております。ヒントでもいただけるとありがたく思います。

  • スクリプトでHTML上に書き出された画像を、SWFに読み込ませたい

    PHPなどのスクリプトによってHTML上に書き出された画像URLを、SWFに読み込ませて表示させたいのですがどのようにしたらよいでしょうか。 たとえば物件紹介などのサイトで、データベースに1つの物件に対して複数の画像を登録し、登録(アップロード)された画像URLをフラッシュでアルバムのように表示させたいのです。 PHPスクリプトによってHTML上に画像を書き出すことはできるのですが、それをSWFに読み込ませるにはどうしたらいいのかわかりません。 XMLに画像URLを登録していって、そのXMLをSWFに読み込んで表示、というのではなく、HTML上に書き出されたURLを読み込ませたいです。 アルバムはこちらを参考に作成しています。 http://hfm-kenchan.com/Lesson/log_qa/D0610061.htm ※スクリプトで書き出される画像ファイル名は一定の規則をもっていないため、連番で表示というのができません。 説明下手なもので分かり辛くてすみません。 どなたかご教授いただけないでしょうか。 よろしくおねがいいたします。 ■環境 ・Windows XP ・Flash8 ・ActionScript2.0

    • ベストアンサー
    • Flash
  • Javascriptの配列についてFLASH画像を反映させるには

    javascriptの回転バナーを表示させているのですが、静止画像であれば 上手に反映されるのですが、FLASHのswfを指定すると表示されません。ちなみにswfではなく、<object></object>を埋め込んでも表示されませんでした. javascriptの配列でFLASHを表示させるにはどうのようにしたら良いのでしょうか? var txt = new Array(); #静止画像 txt[0]="<A href='http://www.xxxxxxx.com' target='_blank'><IMG src='banner/○○○.gif' border='0'></A>"; #FLASH画像(swfバージョン) txt[1]="<A href='http://www.YYYYYYY.com/' target='_blank'><IMG src='banner/▲▲.swf' border='0'></A>"; #FLASH画像(objectバージョン) txt[2]="<A href='http://www.○○○.com'<object> classid='clsid:xxxxxxxxxxxxxxxxxxxxxxxxxxx' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0' width='500' height='70'> <param name='movie' value='http://www.ssss.com/banner/●●.swf'> <param name='quality' value='high'></object> </A>"; mmax = 3; //メッセージ行数 txtno = Math.floor(Math.random() * mmax); document.write(txt[txtno]); 1.静止画像だけで配列するとバナーが表示されます。 2.FLASH、拡張子swfにすると×マークで表示されます。 3.<object></object>にすると全て表示されなくなります。 javascriptの配列でFLASH画像を表示させるにはどうしたら良いのでしょうか? 宜しくお願い致します。

  • Flash5でリンクボタンにtabIndexを指定したい

    ブラウザでswfファイルを表示させたときに、 Tabキーでムービー内のリンクボタンを順番にフォーカス移動させたいのですが、順番がバラバラ・飛び飛びになってしまいます。 FlashMXからはtabIndexを簡単に指定できるそうなのですが、私はFlash5しか持っておらず、またActionScriptについても恥ずかしながらよく解っておりません。 こうすればうまく設定できる、と教えてくださる方がおられましたら、よろしくお願いいたします。 (Flash5J、WindowsXP)

    • ベストアンサー
    • Flash