自動スライドショー&ネクストバック

このQ&Aのポイント
  • ASを使用してスライドショーを作成し、一定時間になると次へ自動で行く仕様にしたいです。
  • まだFLASHについて詳しくないため、このレベルのものを使用するのは無茶な話です。
  • そこで、http://cancam.tv/index.htmlのようなスライドショーを作りたいです。
回答を見る
  • ベストアンサー

自動スライドショー&ネクストバック

どうしてもできなかったので、ご教授ください・・・ 下記のASを使用して、スライドショーを作成したんですが、一定時間になると次へ自動で行く仕様にしたいのです。 ※下記スクリプトはMDN社のムックを参考にしました。 ------------------------------------------------------------------------------- function loadX(success:Boolean):Void{ if(success == true){ for(var i = 1;i <= buttonN;i++){ arrayB[i] = eval("button" + i); arrayB[i].onPress = pressB; arrayB[i].n = i; } for(var i = 1;i <= photoN;i++){ _root.attachMovie("photo","photo" + i,i); arrayI[i] = eval("photo" + i arrayI[i]._x= 5; arrayI[i]._y= 5; arrayI[i].n = i; arrayI[i].loadMovie(xmlL.firstChild.childNodes[i - 1].firstChild); arrayS[i]=xmlL.lastChild.childNodes[i - 1].firstChild; } arrayI[1].swapDepths(nowD); textA=arrayS[1]; nowD++; } } function pressB():Void{ if(this.n == 1)nextN++; else nextN--; if(nextN > photoN)nextN = 1; if(nextN < 1)nextN = photoN; arrayI[nextN].swapDepths(nowD); nowD++; textA = arrayS[nextN]; arrayI[nextN]._y = -Stage.height; } -------------------------------------------------------------------------------- まだ、FLASHについてそれほど詳しくないので、このレベルのものを使用するのも無茶な話ですが・・・ これを応用してhttp://cancam.tv/index.htmlのようなものを作りたいのです。 どうか、よろしくお願いします。

  • Flash
  • 回答数1
  • ありがとう数1

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

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

現在プラグインの不調でリンク先をみることができません(落ちる)。 また,何の動作検証もしていませんが。 結局,ユーザ定義関数 pressB() が実行されると次の写真に移るのですよね。 ですから, ボタンをクリックせずに自動的に pressB() を定期的に実行させれば良いように思います。 setInterval 関数あたりで,定期的に pressB() を実行させれば良いのではないかと思います。 たとえば 5秒 で次の写真に切り替えたいときは, myID = setInterval(pressB, 5000); のようなことを, function loadX(success:Boolean):Void{   if(success == true){     // この辺のどこかてきとうな場所   } } に書くとかすればできる気がします。 (未検証ですからわかりません)

RISARU
質問者

お礼

確かにできました!ありがとうございます。 setIntervalの書き方など詳しくわからなくて、一回試したけど無理だったんです・・・ このような感じで記述したらいいんですね! 回答が遅くなってしまってすみませんでした。

関連するQ&A

  • JavaScriptでスライドショーを2箇所

    お世話になります。 http://bunjin.com/java/ こちらの「画像操作→スライドショーのように画像を表示する」を参考にして、 フェードインするスライドショーを2か所に表示させたいと考えています。 1か所なら上手くいくのですが、2か所目がエラーになってしまいます。 外部jsファイルに次のように記入し、 ------------------------------------------------------ // JavaScript Document var fade_speed = 10000; var fade_duration = 10; var image = new Array(); image[0] = '1.jpg';image[1] = '2.jpg';image[2] = '3.jpg'; var t; var j = 0; var p = image.length; var pre_load = new Array(); for (i = 0; i < p; i++) { pre_load[i] = new Image(); pre_load[i].src = image[i]; } function start_fade() { if (document.all) { document.images.photo2.style.filter="blendTrans(duration=fade_duration)"; document.images.photo2.filters.blendTrans.Apply(); } document.images.photo2.src = pre_load[j].src; if (document.all) { document.images.photo2.filters.blendTrans.Play(); } j = j + 1; if (j > (p - 1)) j = 0; t = setTimeout('start_fade()', fade_speed); } photo[0] = '4.jpg';photo[1] = '5.jpg';photo[2] = '6.jpg'; var t2; var j2 = 0; var p2 = photo.length; var pre_load = new Array(); for (i2 = 0; i2 < p2; i2++) { pre_load[i2] = new Image(); pre_load[i2].src = photo[i2]; } function start_fade2() { if (document.all) { document.images.photo3.style.filter="blendTrans(duration=fade_duration)"; document.images.photo3.filters.blendTrans.Apply(); } document.images.photo3.src = pre_load[j2].src; if (document.all) { document.images.photo3.filters.blendTrans.Play(); } j2 = j2 + 1; if (j2 > (p2 - 1)) j2 = 0; t2 = setTimeout('start_fade2()', 8000); } ------------------------------------------------------ htmlには <body id="top" onLoad="start_fade()"> <img src="1.jpg" name='photo2' /> <img src="4.jpg" name='photo3' /> のように記入しています。 後半の2か所目の指定がどこか足りない又は違うのではないかと思うのですが、 色々試してみても上手くいきません。 ご教授をお願いいたします。

  • flashでPHPファイル(実際は該当するxmlを呼ぶ)を読み込む方法について

    FLASH(AS2.0)でPHPファイル(実際は該当するxmlを呼ぶ)を読み込むようにするにはどのようにしたらいいのですか? 現状では、ローカルのxmlファイルを読み込むように、 下記のように書いてあります。 var objXML:XML = new XML(); objXML.ignoreWhite = true; objXML.onLoad = function(success:Boolean):Void { if(success) { loadXML(this); } } var menuArray:Array = new Array(); // function loadXML(objXML:XML):Void { var dataNode:XMLNode = objXML.firstChild; var menuNodes:Array = dataNode.childNodes; for(var i:Number = 1; i <= menuNodes.length; i++) { var menuNode:XMLNode = menuNodes[i-1].childNodes; var Name:String = menuNode[0].firstChild.nodeValue; menuArray[i] = { title:Name}; } myVars(menuArray); } objXML.load("sample.xml"); この状態から、外部<http://aaaa/sample.php>URLに アクセスして、PHPファイルを読み込むにはどのようにしたら よいのか全くわかりません。 objXML.load("sample.xml"); 上記の()の中に直接URLを挿入すると、 ローカルでは確認できるのですが、 ファイルをアップすると、まったく読み込めてはいません。 ActionScriptは全くわからないので、ご教授よろしくお願いいたします。

  • 2箇所に設定したスライドショー、1箇所しか動かない

    こんにちは、JavaScript超初心者です。 スライドショーを2箇所に設定したのですが、 1箇所しか動きません。ソースを見ていただき、 アドバイスを頂けると助かります。 よろしくお願い致します。 <BODY onLoad="slideshow()"> <TABLE WIDTH="" BORDER="" CELLSPACING="" CELLPADDING=""> <TBODY> <TR> <TD WIDTH="" HEIGHT=""> <IMG SRC="akaemi.jpg" ID="img1" WIDTH="" HEIGHT=""> </TD> <SCRIPT LANGUAGE="JavaScript"> <!-- var i=1; var j=1; picture=new Array(); for(i=1; i<=4; i++){ picture[i] = new Image(); }; picture[1].src = "akaemi.jpg"; picture[2].src = "noristop2.jpg"; picture[3].src = "ume.jpg"; picture[4].src = "mizuba.jpg"; function slideshow(){ img1.src= picture[j].src; j++; if(j>=5){ j=1 }; setTimeout("slideshow()",2500); } //--> </SCRIPT> <TD WIDTH="" HEIGHT=""> <IMG SRC="tyou1.jpg" ID="img2" WIDTH="" HEIGHT=""></TD> <SCRIPT LANGUAGE="JavaScript"> <!-- var i=5; var j=5; photo=new Array(); for(i=5; i<=8; i++){ photo[i] = new Image(); }; photo[5].src = "tyou1.jpg"; photo[6].src = "tyou2.jpg"; photo[7].src = "tyou3.jpg"; photo[8].src = "tyou4.jpg"; function slideshow(){ img2.src= photo[j].src; j++; if(j>=9){ j=5 }; setTimeout("slideshow()",2500); } //--> </SCRIPT> </TR> </TBODY> </TABLE> </BODY>

  • Javascript スライドショー

    Webページを作成しているのですが、JavaScriptで指定フォルダ内の画像をスライドショー形式で表示したいと思って、以下のコードを書いたのですが、どうも、上手く動作しないです。 おそらく最後の $('#rotatingimage').fadeOut(1000,function(){ $(this).attr('src',images[currentImage].src); $(this).fadeIn(); } が上手く動いていないと思うのですが、よく分かりません。 どなたか、分かる方いらっしゃいましたら、教えて頂けると助かります。 よろしくお願い致します。 <script type='text/javascript'> var images=new Array(); images[0]='images/1.jpg'; images[1]='images/2.jpg'; images[2]='images/3.jpg'; images[3]='images/4.jpg'; var currentImage = 0; var preloaded=false; var preloading = false; function preload(){ preloading=true; for(var i=0; i<images.length; i++){ var img = new Image(); img.src=images[i]; images[i] = img; } preloaded=true; } function animateImages(){ // if already preloading, we just want to return nothing if(!preloaded && preloading) return; // if not preloaded, we want to preload if(!preloaded) preload(); // considering we have already loaded stuffs currentImage++; currentImage = currentImage % 4; $('#rotatingimage').fadeOut(1000,function(){ $(this).attr('src',images[currentImage].src); $(this).fadeIn(); } ); } </script>

  • マウスの基準点について

    www.i-tv.in/test/shop_menu.swf 上記のものスクリプトの参考書を見ながら作りました。マウスが摩擦をおく基準が上の方になっています。 これを中央にもっていきたいと思いましたが、このような単純なことは調べても出てきません。どなかた教えて頂ければ幸いです。宜しくお願いします。 function start_me(success:Boolean):Void { if (success == true) { for (var i = 1; i<=menu_num; i++) { var menu_str:String = "menu"+i; _root.attachMovie("menu",menu_str,i); obj_array[i] = eval(menu_str); obj_array[i].num = i; obj_array[i].mctext = i; obj_array[i]._y = 125*(i-1); obj_array[i]._x = 10; obj_array[i]._alpha = 40; var jpg_str:String = obj_xml.firstChild.childNodes[i-1].firstChild; obj_array[i].jpg_mc.loadMovie(jpg_str); obj_array[i].onEnterFrame = scrollphoto_me; obj_array[i].onPress = press_me; obj_array[i].onRollOver = roll_me; obj_array[i].onRollOut = rollout_me; } } else { seltext = "xml read error"; } }

    • ベストアンサー
    • Flash
  • スライドショーなんですが・・・。

    スライドショーで 下記のようなHTMLなのですが 一回停止をクリックしてから 再開をクリックすると 一枚目の写真に戻るようになっています。 停止したところから再開するにはどう直せばよいのですか? よろしくお願いします <HTML> <HEAD> <TITLE>スライド</TITLE> </HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- var num = 1; var flag = 1; var Fm = new Array(5); Fm[0]=""; Fm[1]=" 一枚目"; Fm[2]=" 二枚目"; Fm[3]=" 三枚目"; Fm[4]=" 四枚目"; Fm[5]=" 五枚目"; function timer() { if(document.img.complete) { document.img.filters.blendTrans.Apply(); document.img.src = "photo" + num + ".JPG"; document.img.filters.blendTrans.Play(); document.Fmess.fmess.value = Fm[num]; num++; if(num >5) num = 1; } if(flag == 1) { TimerID = setTimeout("timer()", 5000); } } function crl() { clearTimeout(TimerID); flag = 0; } function restart() { TimerID = setTimeout("timer()", 5000); num = 1; flag = 1; } //--> </SCRIPT> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" onLoad="setTimeout('timer()', 6000)"> <CENTER> <IMG NAME="img" SRC="写真01.JPG" style="filter:blendTrans(duration=1)"> <FORM NAME="Fmess"> <INPUT TYPE="text" NAME="fmess" VALUE=" 説明 " SIZE=50> </FORM> <A HREF="JavaScript:crl()">[停止]</A>    <A HREF="JavaScript:restart()">[再開]</A>    <A HREF="JavaScript:window.close()">[終了]</A> </CENTER> <BR> </BODY> </HTML>

  • XML読み込みのテキストが表示されません

    FLASHで簡単な写真のスライドショーを作っています。 いろいろな例を参考に下記の段階まで作業を進めましたが、イメージは表示されたものの、どうしてもXMLからのテキストが読み込めず困っています。いろいろと調べてはみましたが、初心者ゆえ一人では解決できそうにありません。どなたか目を通して間違いを指摘していただけませんでしょうか?よろしくお願いします。 XMLファイルの記述: <?xml version="1.0" encoding="UTF-8"?> <Slides> <slideNode jpegURL="photos/photo1.jpg">#1 ABCDE</slideNode> <slideNode jpegURL="photos/photo2.jpg">#2 ABCDE</slideNode> <slideNode jpegURL="photos/photo3.jpg">#3 ABCDE</slideNode> </Slides> </xml> ActionScriptの記述: myXML.load("path_to_xml/data.xml"); var slides_xml = new XML(); slides_xml.load("slides.xml"); slides_xml.ignoreWhite = true; slides_xml.onLoad = startSlideShow; function startSlideShow(success) { if (success == true) { rootNode = slides_xml.firstChild; totalSlides = rootNode.childNodes.length; firstSlideNode = rootNode.firstChild; currentSlideNode = firstSlideNode; currentIndex = 1; updateSlide(firstSlideNode); } } function updateSlide(newSlideNode) { imagePath = newSlideNode.attributes.jpegURL; slideText = newSlideNode.firstChild.nodeValue; loadMovie(imagePath, targetClip); }

  • WEBサイトでのスライドショーについて教えてください

    お世話になります。WEBサイトでクリックするたびに画像が変わるスライドショーを他のページなどを参考にfunction prev()等を使って設置しました。 具体的にはこんな感じです <script type="text/javascript"> <!-- var n = 0; var m = 0; var m= new Array(); img[m++] = "010.jpg"; img[m++] = "011.jpg";(以下繰り返し) function prev() { if (--n < 0) { n = m - 1; } document.images['img1'].src = img[n]; } function next() { if (++n == m) { n = 0; } document.images['img1'].src = img[n]; } // --> </script> <img name="img1" src="001.jpg" alt=""> <form action="#"> <input type="button" value="▼" onclick="prev()"><input type="button" value="▲" onclick="next()"> </form> これは順調に稼動しました。 その後同じページ(上記の下側)に、最初の画像を「201.jpg」、スライドショーで表示させたい画像を「210.jpg」「211.jpg」に変更して同じものを記述しました。画面上はきちんと表示されるのですが下に設置したほうの▼▲をクリックすると「201.jpg」が「210.jpg」に変わるのではなく、上に設置した「010.jpg」「011.jpg」に画像が変わります。onclick="prev()"が同じなのがいけないのかと思うのですが、上と下を区別する方法がわかりませんでした。 初心者のような質問で恐縮ですがご存知の方よろしくお願いします。

  • XMLで画像を読み込むと巨大化します・・・

    Flash8にて、外部XML画像とURLを読み込みしています。 初の試みでして、たどたどしくも双方ともに読み込むところまでは皆様のこれまで作られたデータを基に作成出来たのですが、画像を読み込んだときに巨大化されてしまって困っています。 ▼XML --------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <jpeg> <jpegURL>images/image1.jpg</jpegURL> <link>http://yahoo.co.jp/1</link> <jpegURL>images/image2.jpg</jpegURL> <link>http://yahoo.co.jp/2</link> <jpegURL>images/image3.jpg</jpegURL> <link>http://yahoo.co.jp/3</link> <jpegURL>images/image4.jpg</jpegURL> <link>http://yahoo.co.jp/4</link> </jpeg> --------------------------------------------------- 800×250で画像を読み込みたいのですが、 読み込むと、すさまじく巨大化してしまっています。。 作ろうとしているのは、横にスクロールするナビゲーションです。 XMLで画像とリンク先を指定、画像は同じ階層に「img」というフォルダを作って入れています。 下記が、1フレーム目に記載しているASです。 ▼AS --------------------------------------------------- var obj_array:Array = new Array(); var center:Number = Stage.width/2; var menu_num:Number = 4; var maxlength:Number = 800*menu_num; //サイズ指定箇所 var friction:Number = -0.03; var obj_xml:XML = new XML(); obj_xml.onLoad = start_me; obj_xml.ignoreWhite = true; obj_xml.load("scrollslide.xml"); function start_me(success:Boolean):Void { if (success == true) { for (var i = 1; i<=menu_num; i++) { var menu_str:String = "menu"+i; obj_array[i] = _root.attachMovie("menu", menu_str, i); obj_array[i].num = i; obj_array[i]._x = 800*(i-1); //X座標 obj_array[i]._y = 0; var jpg_str:String = obj_xml.firstChild.childNodes[(i-1)*2].firstChild; var link_str:String = obj_xml.firstChild.childNodes[i*2-1].firstChild; obj_array[i].jpg_mc.loadMovie(jpg_str); obj_array[i].onEnterFrame = scrollphoto_me; obj_array[i].onPress = press_me; obj_array[i].onRollOver = roll_me; obj_array[i].onRollOut = rollout_me; //関数呼び出し obj_array[i].onRelease = release_me; obj_array[i].link = link_str; } } else { seltext = "xml read error"; } } function release_me():Void { trace(this.link); getURL(this.link, "_parent"); } function scrollphoto_me():Void { var speed:Number = (_root._xmouse-center)*friction; var vx:Number = this._x+speed; if (vx<=-800) { //ステージ左に消えたら vx += maxlength; //サムネイルの最後列の後ろに移動 } else if (vx>=Stage.width+10) { //ステージ右に消えたら vx -= maxlength; //サムネイル最前列の前に移動 } this._x = vx; updateAfterEvent(); } function roll_me():Void { this._alpha = 80; } function rollout_me():Void { this._alpha = 100; } stop(); --------------------------------------------------- サイズを指定している箇所に問題があるのでしょうか。 初心者でして、全く見当がつかず困っております。 もしよろしければ、先人の方たちにご意見とご指摘を頂ければと思います。宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでXMLを読み込んだときに読み込むまでにundefindがでてしまいます。

    flashで外部のxmlを読み込んでいるのですが、読み込むまでの間にテキストフィールド(v_title)にundefindがでてしまいます。原因がわかりません(><)どなたかぜひ教えてくださいませ。 myXML = new XML (); myXML.ignoreWhite = true; myXML.load ("blog/photodata.xml"); v_titleArray = new Array (); v_xOffset = myBase._x; myXML.onLoad = function (loaded) { if (loaded) { v_rootNode = myXML.firstChild; v_num = v_rootNode.childNodes.length; v_currentPhoto = v_rootNode.firstChild; v_currentNumber = 0; for (i=0; i < v_num; i++) { v_loadURL = v_currentPhoto.childNodes[1].firstChild; v_titleArray.push (v_currentPhoto.childNodes[0].firstChild); v_currentPhoto = v_currentPhoto.nextSibling; f_makeAndLoad (i, v_loadURL); } } else { trace ("error occured"); } }; function f_makeAndLoad (num, path) { myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1); v_name = eval("myBase.myLoad"+num); v_name._x = 156 * num; v_name._y = 0; v_name.loadMovie (path); myBase.myLoad._visible = false; } myNext.onRelease = function () { _parent._parent._parent.sound1.start(); if (v_currentNumber < v_num-1) { v_currentNumber+=1; }else{ _parent.nextFrame(); } }; myBase.onEnterFrame = function () { this._x += ((-156*v_currentNumber + v_xOffset)-this._x) ; v_title = (unescape(v_titleArray[v_currentNumber])); };

    • ベストアンサー
    • Flash