• ベストアンサー

画像を一定時間ごとに切り替えていくスクリプト

表題どおりなのですが、ホームページのTOPに画像を表示したくて色々試行錯誤中です。 希望は、a.jpg→b.jpg→c.jpgのフェードインフェードアウトを繰り返すといったような単純なものですが、 各画像を15秒ごととか決まった時間で自動的に切り替えていくには、どのようなスクリプトを書けば良いでしょうか? 初歩的な質問で申し訳ありませんが、アドバイスお願いします。 Flash8 

  • Flash
  • 回答数4
  • ありがとう数3

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

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

#3 です。 まずは #2 で書いたスクリプトの(スクリプトのコメントの)訂正&お詫びをします。 1秒が1000ミリ秒ですから,1000ミリ秒が10秒というのは間違っていますね。すみません。 次のように訂正します。 ------------------------------------------- // このスクリプトを書いたフレームを停止 stop(); // 1000ミリ秒(1秒)後に実行 setTimeout(function () { // このスクリプトを書いたフレームを再生 play(); }, 1000); ------------------------------------------- で,#3 の 補足 に書いていらっしゃることへの回答です。 > この方法でタイムラインが半分以下になったにもかかわらず、 > ファイルサイズは同じ・・・と言う事は、フレームの長さはサイズに関係しないという> 事になるんですね? 動かすものがシンボル化されたインスタンスでしたら, さほど変わらないでしょう。 スクリプトで動かすにしても, モーショントゥイーンで動かすにしても, どちらにしても結局, 「あるインスタンスをA地点でのAAという状態からB地点でのBBという状態に変化させろ」という命令を書いていることに違いはありませんから。 たとえば, 動かすインスタンスが1つのみで, そのインスタンスが 100KB の JPEG 入りのグラフィックインスタンスやムービークリップインスタンスであったとします。 スクリプトで動かしてもモーショントゥイーンで動かしても, 結局そういうプログラム的なこと(インスタンスのプロパティを変化させるという命令)の容量はたいしたことありません。 せいぜい 数バイト~数キロバイト 程度でしょう。 100KB の JPEG の容量に比べれば全く無視できる大きさだということになります。 Flash(SWF) は動画ではありません。 インスタンスをなにがしかのデータやプログラムによって動かすものです。 したがってたいていは, SWF の容量の大半は インスタンスの容量 ということになります。 シェイプトゥイーン を使った動きなどは, フレームを使えば使うほど容量を食いますよ。 しかしちゃんとシンボル化されたインスタンスを動かしていれば, そのインスタンスの容量が Flash(SWF) ファイルの大半になるのが普通です。 単純に言うなら, 「ActionScript を使用するのは容量を減らすためではない」 ということです。

mina519
質問者

お礼

度々ありがとうございます。 ご説明内容でよくわかりました。 また別の質問を近々する予定ですので機会がありましたらよろしくお願い致します。 本当にありがとうございました。

その他の回答 (3)

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

#2 です。 > まずタイムラインがaに来たときにストップ。 > 秒数(例えば10秒)が経過したらまたタイムラインが動く、 > bの画像のところにくる、ストップ・・・・繰り返し・・・ > の様な感じのイメージです。 それでしたら setTimeout関数 を使うのが良いと思います。 [setTimeout ActionScript]でGoogle検索したら 最初に出てきたページです↓。 「FN0512001 - setTimeout()関数 - Flash テクニカルノート」 http://www.fumiononaka.com/TechNotes/Flash/FN0512001.html 他のFlash作成ソフトのための解説ページですが、 ActionScript は共通です↓。 「Suzuka 基礎・基本 セルフタイマー(setInterval setTimeout)」 http://suzupara.iinaa.net/kiso311.html 下の方のURLのスクリプトをちょっと改良して, ストップ したいフレームをキーフレームにして, 次のスクリプトをそのキーフレームに書けば良いと思います。 -------------------------------- // このスクリプトを書いたフレームを停止 stop(); // 1000ミリ秒(10秒)後に実行 setTimeout(function () { // このスクリプトを書いたフレームを再生 play(); }, 1000); -------------------------------- その他の詳細説明は上記の 2ページ をご参考まで。

mina519
質問者

補足

回答ありがとうございます! 教えて頂いた最後のスクリプトをコピペでちゃんとできました! おかげでタイムラインがすっきりして、扱いやすくなりました。 質問ついでにもう一つお伺いしたいのですが、 この方法でタイムラインが半分以下になったにもかかわらず、 ファイルサイズは同じ・・・と言う事は、フレームの長さはサイズに関係しないという事になるんですね? もっと軽くなるかと思っていたので拍子抜けしています。 単純な画像の自動スライドショー的な作りをする時に、 ファイルサイズを軽く仕上げる方法とかありましたら、アドバイスいただきたいのですが・・・(^^;) よろしくお願い致します。

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

> a.jpg→b.jpg→c.jpg というのは, Flash(FLAのシンボル)内に読み込んだ 「a.jpg」,「b.jpg」,「c.jpg」なのか, SWFパブリッシュ後に,外部 「a.jpgファイル」,「b.jpgファイル」,「c.jpgファイル」をロードするのかよくわかりませんが, もし, JPEGがFlash(FLAのシンボル)内に読み込んだ ものであるとするなら, 必ずしも絶対に ActionScript が必要なわけではありませんよね。 「a.jpg」,「b.jpg」,「c.jpg」 をそれぞれのグラフィックシンボルやムービークリップなどにして, そのインスタンスをステージ上でフェードイン&フェードアウトさせれば良いだけです。 もっとも ActionScript を使ってする方法も多数(無数に)ありますが, 使わなければ使わなくてもできます。 絶対に ActionScript が必要になる場合というのは, SWFに 外部 「a.jpgファイル」,「b.jpgファイル」,「c.jpgファイル」をロードするときとなります。 したがって, こちらの外部JPEGファイルをロードするしかたのご質問だと考えれば良いのでしょうか? またフェードイン&フェードウトの方法(表示させ方)もたくさんありますが, シンプルに   「a.jpg」がだんだん表示される  → 「a.jpg」がだんだん消えて完全に見えなくなる  → 「b.jpg」がだんだん表示される  → 「b.jpg」がだんだん消えて完全に見えなくなる  → 「c.jpg」がだんだん表示される  → 「c.jpg」がだんだん消えて完全に見えなくなる と考えて良いのでしょうか? つまり,クロスフェードではない という意味です。 もし上記の場合であれば,  ムービークリップを1つ作成して,  そのムービークリップに外部JPEGをロードし,  その外部JPEGをロードしたムービークリップの  アルファを 0→100→0と変化させて  次のJPEGを同じムービークリップにロードする という方法を使うのが普通です。 ActionScript でする場合もしない場合も, どうするのかを "具体的に考えてから" でなければ, 作成もコーディングもできません。 これはActionScriptを使う使わないに限らず全く同じです。 この "具体的に考えること" ができなければ,何にしても全く作成できないということになります。 ついでに, "具体的に考えたこと" の提示がなければまともな ActionScript の回答も当然できません。 上の例は勝手に 「私が考えた具体的な条件とその方法」 です。 その「私が考えた具体的な条件とその方法」で回答を続けます。 HTML と SWF と JPEG が任意のフォルダの直下に置いてあるものとします。 (これも私が勝手に考えた条件です)  任意のフォルダ    ├ ○○.html (○○.swf を貼り付ける)    ├ ○○.swf (a~c.jpg をロードする)    ├ a.jpg    ├ b.jpg    └ c.jpg 上記の 「○○.swf」 をパブリッシュする FLA ファイルのステージ上に, 小さな(または空の)ムービークリップを作成します。 そして例えば 「load_mc」 というインスタンス名を付けます。 その load_mc が存在するフレームのキーフレームに次のように書きます。 ---------------------------------------------- // 配列 jpgArr にロードする JPEG のファイル名を登録 var jpgArr:Array = new Array(); jpgArr[0] = "a.jpg"; jpgArr[1] = "b.jpg"; jpgArr[2] = "c.jpg"; // 画像を切り替える時間を登録(単位:秒) var timing = 7.5; // ムービーのフレームレート を登録(単位:fps) var fps:Number = 12; // 1フレーム辺りにフェードインアウトする速さを登録 var spd:Number = 5; // --- ↑以上が変更する設定 ↑------------ // // ロード用のMC load_mc のアルファを 0 にする load_mc._alpha = 0; // // 時間記録用の変数 time の宣言 var time:Number; // JPEGカウント用の変数 cnt の初期化 var cnt:Number = 0; // // 切り替える時間-フェードアウトする時間 を算出 var timeLag:Number = 1000*timing-1000*100/spd/fps; // // ロードを監視するためのインスタンスを作成 var loadOBJ:Object = new Object(); // MovieClipLoaderクラスのインスタンスを作成 var loadMCL:MovieClipLoader = new MovieClipLoader(); // // JPEGロード完了時の動作を定義 loadOBJ.onLoadInit = function(target:MovieClip):Void { target._alpha = 0; // 変数 time に時間を取得 time = getTimer(); // 1フレーム進む時間毎に随時実行 target.onEnterFrame = function():Void { if (getTimer()-time<timeLag && this._alpha<100) { this._alpha += spd; } else if (getTimer()-time<timeLag) { this._alpha = 100; } else { this._alpha -= spd; if (this._alpha<0) { if (cnt<jpgArr.length-1) { cnt++; } else { cnt = 0; } loadMCL.loadClip(jpgArr[cnt], load_mc); delete this.onEnterFrame; } } }; }; // loadMCL のリスナーとして loadOBJ を登録 loadMCL.addListener(loadOBJ); // 最初の JPEG を load_mc をターゲットにロード loadMCL.loadClip(jpgArr[0], load_mc); ----------------------------------------------

mina519
質問者

補足

回答ありがとうございます。 なんか、一杯かいてもらってありがとうございます。m(_ _)m えっと、僕の質問が悪かったですかね? FLASH以外から読み込む方法があるなんて知らなかったので、結果的に説明不足となったようですね。重ね重ねスミマセン。 僕が求めているのは、「Flash(FLAのシンボル)内に読み込んだ「a.jpg」「b.jpg」「c.jpg」を、秒数で切り替えていく方法です。 この際、フェードインフェードアウトは置いといて、abc3つの画像があったとして、まずタイムラインがaに来たときにストップ。秒数(例えば10秒)が経過したらまたタイムラインが動く、bの画像のところにくる、ストップ・・・・繰り返し・・・ の様な感じのイメージです。 もちろんもうお分かりかと思いますが、それ以外の方法を知らないので、もっと簡単で格好いい方法があればそれを教えていただきたいのですが、現状、タイムライン0からアルファでフェードインして、aの画像を表示→10秒間タイムラインを増やして、フェードアウト、次の画像をフェードイン・・・というような方法で作成しているので(その方法しか知らない)、かなりタイムラインが長くなるのと、ファイルサイズが増えるのに悩んでいました。 なので、ちょっとでもファイルサイズが小さくなって、簡単にできれば言う事なしです。 私が言いたい事、求めている事、少しでもお分かりになりますでしょうか??(^^;) ほんと、スミマセン。

  • hime_mama
  • ベストアンサー率32% (1543/4717)
回答No.1

http://iswebmag.hp.infoseek.co.jp/sample140.html http://iswebmag.hp.infoseek.co.jp/sample141.html ↑このあたりが参考になると思います。 スクリプトの記述も載ってますので、コピペで必要部分を書き換えてためしてみて下さい。

参考URL:
http://iswebmag.hp.infoseek.co.jp/sample140.html,http://iswebmag.hp.infoseek.co.jp/sample141.html
mina519
質問者

補足

回答ありがとうございます。 ・・・これはFLASHのことでしょうか?(^^;) 見る限りJavaScriptのように思えます。 ていうか、JavaScriptもFLASHも同じ?? すいません、そこらへんも良く分かってないので、よければ詳しく解説いただけると助かります。

関連するQ&A

  • 「画像を一定時間ごとに切り替えていくJavascriptスクリプト」

    「画像を一定時間ごとに切り替えていくJavascriptスクリプト」 TOPページの画像を1時間ごと(getHoursを使ってだと思うのですが)に切り替えるよう試行錯誤しています。 画像が外部サイトにある場合どのようなスクリプトを書けば良いでしょうか? 初歩的な質問で申し訳ありませんが、アドバイスお願いします。

  • Java Scriptの件で質問をさせて頂きます。よろしくお願いいたし

    Java Scriptの件で質問をさせて頂きます。よろしくお願いいたします。 よく、ホームページの一番下に「このページのトップへ」とか「HOME」などとあり、それをクリックすると、当該のページの一番上まで行くものがありますが、あれはJava Scriptを使っているのでしょうか ?私としては、出来るかどうかは不明なのですが、Java Scriptをcssのような感じで外部ファイルにして「このページのトップへ」を作成したいと考えております。どなた様かご指導のほどよろしくお願いいたします。 また、「このページのトップへ」にやはり何らかのリンクを張るのだと思いますが、その点に付きましてもご指導をどうかよろしくお願いいたします。 また、話は少し変わってしまうのですが、ロールオーバーをホームページの上部に横に並べて表示させたいのですが、このようなこともJava Scriptで出来るのでしょうか?現在はcssで試行錯誤している最中ですが、Java Scriptでも可能ならとも考え合わせてご質問をさせて頂きました。 どなた様か、ご指導のほどよろしくお願いいたします。

  • 画像を順にフェードインフェードアウトで表示

    HPのTopページのw900×h300位のスペースに 順に画像をフェードインフェードアウトしながら表示させ,最後の画像でストップさせたい Flashムービーを作成するのは簡単なのですが、iPadに対応しない為 jQueryなどで表示させたいのですが、javaが全然わからず困っています。 一応下記のように自分で調べてみて見つけた、近いものを作っては見たものの <script language="JavaScript"><!-- myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } document.myFormImg.src = myImage[myNowCnt]; // 次の画像を表示する setTimeout( "myChange()" , 6000 ); // 2秒周期に画像を更新する } // --></script> <img src="img/main/f01.jpg" width="900" height="300" name="myFormImg"> <script language="JavaScript"><!-- myChange(); // --></script> こんな感じでやってみたもののこれではフェードインフェードアウトにはなりません どこに何を足せばいいのか、または全く違うコードを書けばいいのかどなたかお教えいただけませんでしょうか。 jQueryだと記述はもっと簡単なのでしょうか?

  • html内かscript内で画像出力。どちらが軽い

    ホームページの読み込みは、画像を使えば使うほど重くなってしまいます。 下記コードでは、(1)と(2)で1.jpg~5.jpgの画像をページに出力しています。 (1)はHTMLに、(2)はscript内に、 (1)と(2)では(2)の方がhtmlに<img src=".jpg" width="800" height="300"/> と書かなかった分、ページが重くならない、ということになりますか? <html> <head> <title>HTML上に直接imgを出力した場合</title> </head> <body> <img src="1.jpg" width="800" height="300"/> <img src="2.jpg" width="800" height="300"/> <img src="3.jpg" width="800" height="300"/> <img src="4.jpg" width="800" height="300"/> <img src="5.jpg" width="800" height="300"/> </body> </html> <html> <head> <title>HTML上にはimgを出力せず、script内でimgを出力した場合</title> <script language="JavaScript"> var imgSanple = new Array( "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"); var randomSelect = Math.floor((Math.random() * 100)) % imgSanple.length; var i = "<img src='"+imgSanple[randomSelect]+"' width='800' height='300'>"; document.write(i); // --> </script> </head> <body> <noscript> <img src="1.jpg" width="800" height="300"> </noscript> </body> </html>

  • 指定時間経過後に画像を一定時間で切替

    Javascriptで指定時間経過後に画像を一定時間で切替したいと思っています。 一定時間の画像切替は以下のように実現しています。このJavascriptにさらに”指定時間経過後”という条件を付けたいのですがどうしたらよいでしょうか? ■Javascript <script> $(document).ready(function(){ $('.slideImg img:gt(0)').hide(); setInterval(function() { $('.slideImg :first-child').fadeOut(3000).next('img').fadeIn(3000).end().appendTo('.slideImg '); },5000); }); </script> ■HTML <div class="slideImg "> <img src="img1.jpg" alt="" /> <img src="img2.jpg" alt="" /> <img src="img3.jpg" alt="" /> </div> ■CSS .slideImg{ position:relative; width: 100px; height: 100px; } .slideImg img{ position:absolute; left:0; top:0; }

  • 画像をランダムにスクリプト

    ホームページをHTMLで作成しております。画像をランダムにスクリプトしてますが、画像のサイズが大きすぎるので、HTMLでサイズ変更する場合の、HTMLをご教授ください。 width="300" height="200"を挿入でいいのでしょうか。 その場合の挿入箇所をお教えください。 現在、下記のHTMLを作成しております。 <script language="JavaScript"> <!-- var image=new Array (); image[0]="s/b/bike1.jpg" ; image[1]="s/h/hatake207.jpg"; var rnd=Math.floor(Math.random()*image.length); document.write(" <img src=' "+image[ rnd ]+ " '> "); //--> </script> 宜しくお願いします。

  • 一定時間で変化する画像とリンク

    業者さんにトップのページを作成してもらいました。 一定時間で画像が変化するようになっているのですが、 その画像ごとにクリックした際に違うリンクを貼りたいのですが 初心者の為、よくわかりません。 下記ソースですが どこを編集したらよいのでしょうか? <!-- //変更秒間隔を指定 var sec = 5; sec = sec * 1000; arrI = new Array("top_P1.jpg","top_P2.jpg","top_P3.jpg") var num = arrI.length; var arrO = new Array(); for (var i=0;i<num;i++) { arrO[i] = new Image(); arrO[i].src = arrI[i]; } i = 0; function cngImg(){ if(document.all){ document.images.img.style.filter="blendTrans()"; document.images.img.filters.blendTrans.Apply(); } document.images.img.src = arrO[i].src; if(document.all){ document.images.img.filters.blendTrans.Play(); } i ++; if(i >= num){i = 0;} setTimeout("cngImg()",sec); } //-->

  • ページ内の画像だけを一定時間毎に自動更新させたい

    ネットワークカメラを使って、留守中の犬をモニターしています。 FTPサーバーに10秒ごとに静止画のJPGファイル(同名)が転送 されるように設定しています。 これをサイト内で公開したいと思っており、出来れば画像のみを 10秒ごとに自動更新で表示されると良いなと思っております。 ページ全体をリロードさせてしまうと、鬱陶しいことになりますので、 画像だけリフレッシュさせたいのですが、うまくいきません。 過去の質問(http://okwave.jp/qa1104885.html)を拝見し、 Iframe内に埋め込んだのですが、更新されません。 また、良回答の書き方でもうまくできませんでした・・・。 キャッシュを残させないようにもしたのですが。 この書き方では間違っていますでしょうか。 ------------- ■iframe.html ------------- <HTML> <HEAD> <META http-equiv="refresh" content="10"> </HEAD> <BODY> <img src="http://×××.××.jpg"> </body> </HTML> ------------- ■index.html ------------- <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> </HEAD> <BODY> <iframe src="http://×××.××.jpg"> </iframe><br> </body> </HTML> また、別の方法でスムーズに画像だけを更新させる方法がございましたら 教えていただけないでしょうか。よろしくお願いします。

    • ベストアンサー
    • HTML
  • 初心者です。スクリプト、タグ、gif画像・・・軽い?重い?

    最近、ホームページを作っています初心者です。。 そこで、お尋ねします。 サイトを第三者が見るのに、表示される時間が重いサイトですと、遅うようですが、スクリプトにも重いものや軽いものがありますか? サイズの大きい画像なら、重い・・・というのはわかるのですが。スクリプトはタグですよね?スクリプトはどうなのでしょうか?重い、軽いってあるのですか? そこら辺がよくわかりません。 見当違いの質問でしたら、申し訳ありません。 お時間のあるときに、よろしくお願いしますm(__)m

  • 画像のスライドショーのJavaスクリプトで・・

    上記のようにJavaスクリプトで組んだ画像のスライドショー処理をホームページのTOPページ上下二箇所設置しようと考えていますがユーザー的に閲覧処理は重たいでしょうか? 画像の容量は1ファイル20KB程度です。

専門家に質問してみよう