• 締切済み

SetTimeoutの無効化について

Flash初心者ですが、よろしくお願いします。 SetTimeoutを使って、30秒たつと別のシーンにとぶように設定したswfを作っています。 配置しているボタンを押した時など、30秒たつ前にシーンが変わった場合、SetTimeoutの設定を無効にしたいのですが、どうすればよいでしょうか? 現在のスクリプトは以下のようになっています。 onClipEvent (load) { var id = setTimeout(go, 30000); stop(); function go() { clearTimeout(id); gotoAndPlay("シーン 3", "timeover"); } } 色々検索してみましたがわかりません・・・ どなたか分かる方がいらっしゃればご教授お願いします>_<

みんなの回答

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

setInterval や setTimeout の問題ではなくて, 単にターゲットパスとか階層とかが理解できていないだけではないでしょうか? 例えば, 「my_mc」 というインスタンス名を付けたムービークリップ(MC)を, シーン1 などのメインのタイムラインつまり _root に配置して, その 「my_mc」 に書かれていらっしゃるようなスクリプトを書いたとします。 ※ ↑要インスタンス名 ---例------------------------ onClipEvent (load) { var id = setTimeout(go, 5000); stop(); function go() { trace("あいうえお"); } } ---------------------------- そして,「制御」→「ムービープレビュー」すると, 当然,5秒後に あいうえお が出力窓に出力されます。 この, var id = setTimeout(go, 5000); によって設定された 「id」 は 「my_mc」 階層に設定されています。 次に, シーン1 などのメインのタイムラインつまり _root に, 適当なボタンを作成して次のように書いたとします。 ---例------------------------ on (release) { clearTimeout(_root.my_mc.id); } ----------------------------- そして,「制御」→「ムービープレビュー」し, 5秒以内にそのボタンをクリックすると何も出力されません。 つまりこれで, _root にある 「my_mc」 内の 「id」 がクリアされます。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html ↑当然ですがsetTimeoutに関しては一切書かれていません。  setTimeout や gotoAndPlay などにかかわらず。  Flash 全般にかかわることです。

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

関連するQ&A

  • setTimeoutでの制御に関しまして

    初めて質問をさせて頂きます。よろしくお願い致します。 「mc_Image1」、「mc_Image2」、「mc_Image3」という 各ムービークリップをストップボタンを押した際に時間差で停止させたいのですが 「mc_Image2」、「mc_Image3」がstopがかからない状態が稀に生じたりします。 (ムービークリップは全て、1フレーム目にstop();、10フレーム目にgotoAndPlay(2);と設定) 少し端折っておりますが、スクリプトを記載いたします。 ---------------------------- //何回ルーレットしたかカウントする var count:Number = 0; //スタート/ストップボタンが押された押されていないかのフラグ var flg_StartStop:Boolean = false; // mc_Image停止待機速度変数(ミリ秒) var hensu1 = 2000; var hensu2 = 3000; //スタート/ストップボタンを押した時に呼び出される関数 btn_StartStop.onPress = function() { if(flg_StartStop) { //選ばれたフレームに飛ぶ mc_Image1.gotoAndStop(parseInt(one)+1); // setInterval で hensu(ミリ秒)後に_root.gotoAndStop(); を実行 stopID = setInterval(function () { _root.mc_Image2.gotoAndStop(parseInt(two)+1); clearInterval(stopID); }, hensu); stop2ID = setInterval(function () { _root.mc_Image3.gotoAndStop(parseInt(three)+1); clearInterval(stop2ID); }, hensu2); //押されたかどうかの変数を「偽」に flg_StartStop = false; //カウンタを増やす count++; } else { //ムービークリップを走らせる mc_Image1.play(); mc_Image2.play(); mc_Image3.play(); //押されたかどうかの変数を「真」に flg_StartStop = true; } } ---------------------------- 。 きちんと「gotoAndStop();」させるにはどのように対処すれば よろしいでしょうか。 不足がございましたら申し訳ありません。 何卒よろしくお願い致します。

  • JavaScriptのsetTimeoutについて

    setTimeoutのタイマー処理の仕様を調べています。 var func = function () { alert(1); }; setTimeout(func, 1000); alert(2); このコードを実行した場合、alert(2)→alert(1)の順で処理されるのは当然ですが、 alert(2)を開いたまま1秒以上待ち、そこでOKボタンを押すとどうなるか、という問題です。 Firefoxの実装については下記ページで分かりました。 http://takoyakim.tumblr.com/post/10875885/firefox-settimeout 先ほどのコードの1000ミリ秒の経過処理は、タイマースレッドという専用スレッドで扱うため、 alert(2)で1000ミリ秒以上止めた後にOKボタンを押すと、即座にalert(1)が開きます。 しかしIEの場合はそうではなく、alert(2)を閉じてから約1000ミリ秒後にalert(1)が開きました。 alert(2)を開いたままどれだけ待機しても変わりません。 ChromeやSafariもIEと同じようです。 ですがこの結果は、次のコードの実行結果と矛盾してしまいました。 var heavyFunc = function () { for(var i = 0; i < 100000; i++) new Date(); } var startTime = +new Date(); var callCount = 0; var testFunc = function (x) { heavyFunc(); // (1) if (++callCount < 5) setTimeout(testFunc, 100); else alert(+new Date() - startTime); //heavyFunc(); // (2) }; testFunc(); heavyFuncという重い処理を、setTimeoutの前後のどちらに置くかという実験コードです。 setTimeoutのタイマー処理がFirefoxのように別スレッドで実行されているのであれば、 先にsetTimeoutを呼び出してからheavyFuncを実行した方が速く処理が完了するだろう、という想定です。 そして結果は、FirefoxだけでなくIEとChromeでも先にsetTimeoutを呼んだ方が速い、となりました。 結局どのブラウザも専用のタイマースレッドを実装しており、 alert関数が特殊(タイマースレッドもブロックする)なだけ、ということなのでしょうか? それとも私が何か見落としているのでしょうか。

  • setTimeoutメソッドでローカル変数を渡したい

    setTimeoutメソッドでローカル変数を渡したい 表題の件につきましてご教授をお願いします。 やりたい事は 【1秒ごとにある関数(引数が必要)を走らせて一定回数後に停止する】 なのですが、setTimeoutで引数が渡せずに困っています。 (引数は固定ではないのでローカルの変数を使用したです。) あるWEBページで下記の方法で引数が渡るとありましたが、当方の環境ではエラーが発生します。 function test1(){ var the_string = "hello"; the_timeout = setTimeout("alert(" + the_string + ");",1000); } イメージとしては下記のようにIDとcntを渡し、受け取った関数で引数を処理、 その後再帰的に同一関数に引数を送る、です。 function timeA(timeIDA,cntA){ timeID = timeIDA; cnt = cntA; alert(cnt); cnt++; clearTimeout(timeID); timeID = setTimeout("timeA(timeID,cnt)",1000); } 動作環境はWIN IE5.0以上、NC4.75以上を考えています。 何か良い解決方法がありましたら、教えてください。 よろしくお願いします。 #もっと露骨にwaitに相当するメソッドがあると嬉しいのですがr(^^;

  • フラッシュMXのナウローディングとロードムービー

    最近フラッシュMXをウインドウズXPで使い始めています。質問です。よろしくお願いします。 フラッシュで a.swf に b.swfを読み込ませたいと思っています。b.swfにはナウローディングをつけています。 b.swfの最初につけたナウローディングスクリプトです。 onClipEvent (load) { _root.stop(); var LoaderMC = _root; } onClipEvent (enterFrame) { this.percentloaded = Math.floor(LoaderMC.getBytesLoaded()/LoaderMC.getBytesTotal()*100); trace(this.percentloaded+"%"); this.percentMC.percentdisplay = percentloaded+"%"; this.loaderbalken._xscale = percentloaded; if (percentloaded == 100 && !initialized) { initialized = true; trace("ロード終了"); _root.gotoAndPlay("loadok"); } } a.swfにb.swfを読み込むために、a.swfに次のスクリプトをつけています。 loadMovie("b.swf", "***"); 読み込まれることは読み込まれるのですが、b.swfのローディング画面でストップしてしまい、それ以降b.swfは再生されません。 a.swfに配置してあるアニメは問題なく再生されているのですが。ちなみにb.swfは単体では正常にナウローディング後、再生されます。 なぜ b.swfは再生が止まってしまうのでしょうか。よろしくお願いします。

  • setTimeout関数の使用方法について

    はじめまして。 質問があります。 以下のコードを実行すると、一定時間おきに文字の表示が変化する ように動いてくれません。何が問題なのかがまったく見当がつき ません。どなたかご指摘をお願いします。 ---------------------------------------------------------------- <html> <head> <title>setTimeout()関数の使用例</title> </head> <body onLoad="timer=setTimeout('changeChar()',500)"> <script type="text/javascript"> <!-- var str = "abcdefghijklmnopqrstuvwxyz0123456789"; var cnt = 0; function changeChar() { clearTimeout(timer); ch = str.charAt(cnt++); document.write(ch); if(str.length > cnt) { timer = setTimeout("changeChar()",500); } } //--> </script> </body> </html> ----------------------------------------------------------------

  • FLASHのActionScriptについて

    すみません。どなたか教えてください。  風景の画像が時間が来たら、次の風景が移る様にしたいのです。 静止している様に見える"2"のフレームを2フレームにして、2フレーム目に gotoAndPlay("シーン 1", "02") を入れてループさせています。120秒後に"03"フレームに移動させるよう、隠しオブジェクトに以下のスクリプトを記入しました。 onClipEvent (load) { beforeTime = getTimer(); n = 0; } onClipEvent (enterFrame) { nowTime = getTimer(); n = n+nowTime-beforeTime; beforeTime = nowTime; if (n>120000) { gotoAndPlay("シーン 1", "03"); n = 0; } } しかし、初めのgotoが無視されたように、書き出してしまいます。ここを Stop() にするとずーととまったままです。何か方法はないのでしょうか?

  • setTimeout()がうまくいきません

    以前、時計を一秒一秒、新しい絵を読み込んで バー表示型の時計を作ろうとしていた者ですが なんとか、1つの画像を連続表示させて 一本のバーにしていくスクリプトを 下記のように作りました そうしたところ、手動で更新をすると、うまく動作するのですが 自動で更新していこうと思いsetTimeout()を入れたのですが うまく動作してくれません。どのようにしたらよいのでしょうか <html> <head> <script language="JavaScript1.1"> <!-- function timesec() { var now = new Date() var s = now.getSeconds() var x = 60-s for(gj=0;gj<x;gj++) { var no = gj+1*x document.write("<img src='sec_1.gif' NAME='Name"+no+"'>") } } //--> </script> </head> <body> <script language="JavaScript1.1"> <!-- timesec() ----> </script> </body> </html>

  • mcの中のフレームラベルの移動

    初めまして。 当方初心者なので、よくわからないので、質問させていただきます。 外部にswfとしてフレームラベルの複数ついたものがあって、 それをmc(mcs_mc)で読み込みし、スクリプトで一定時間毎に mcに読み込んだ外部swfのフレームラベル(chapter1~chapter10)を移動させたいのですが、うまく動いてくれません。 どの用にしたらよいでしょう?よろしくお願いします。 onClipEvent(load){ this._lockroot = true; } onClipEvent(enterFrame){ setInterval( function(){ mcs_mc.gotoAndPlay("chapter2"); }, 1000); }

    • ベストアンサー
    • Flash
  • setTimeoutで引数を配列にできるか

    画面全体に50行×50列くらいのtd(背景色がピンク)を持ったtableを配置し、それぞれのtdにマウスが乗ったらそのtdの背景色を青くして、マウスがtdの外に出たら1秒後にピンク色に戻すものを作ろうと思ってます。つまり、tdを画素に見立てた簡単なペイントに似たものを作ろうということです。 そのために以下のjavascriptを書きました。 window.onload = function(){ td = document.getElementsByTagName("td"); for(i=0;i<td.length;i++){ td[i].onmouseover = ChCo; td[i].onmouseout = setTimeout("ClCo('"+td[i]+"')",1000); } function ChCo(){ this.style.backgroundColor = "blue"; } function ClCo(hoge){ hoge.style.backgroundColor = "pink"; } } この場合、onmouseoverの青くするところはうまくいくのですが、onmouseoutのsetTimeoutのところがうまくいきません。どうも、setTimeoutに設定したClCoの引数がうまく渡ってないような感じなのですが、どこが間違っているのでしょうか。

  • 2つのswfファイルをつなげている場合の一括ローディング方法

    お世話になります。 この質問の下の質問で、外部JPGファイル読み込みのローディング方法を質問しておられますが、そこを読んでも、外部swfファイル読み込みの際のローディング方法に応用することが出来ませんでした。 700Kのswfの最後のフレームに、 loadMovieNum("img/next.swf", 0); として、500kのnext.swfファイルとつなげています。 最初のswfファイルの1シーン目で、2つのswfを全て読み込み、再生時のつながりをスムーズにしたいと考えています。 最初のswfの1シーン目に、 ローディングオブジェクトを置き、 onClipEvent (load) { _root.stop(); par = 0; bar._xscale = 1; } onClipEvent (enterFrame) { par = parseInt((_root.getBytesLoaded() / _root.getBytesTotal()) * 100); if (par == 0) { par = 1; } else if (par >= 100) { par = 100; _root.gotoAndPlay("start"); } bar._xscale = par; } ローディングすると、フレームラベル「start」 に飛び、 そのフレームに置いているオブジェクトに onClipEvent (load) { par = 100; bar._xscale = 100; } onClipEvent (enterFrame) { _alpha -= 5; } を書き込んでいます。 そして、2シーン目に飛び、 2シーン目の最後のフレームに、 loadMovieNum("img/next.swf", 0); を置いてつなげています。 FLASH本を数冊持っているのですが、2つのswfを 同時にローディングする方法が載っておらず、 こちらに質問を書かせていただきました。 もしかしたらこの質問の下質問JEPファイルの ローディングと内容がかぶってるかもしれませんが、 よろしくお願い致します。 【制作環境】 Win XP FLAS MX

    • ベストアンサー
    • Flash
このQ&Aのポイント
  • パソコン1台に接続しているPX-M160Tプリンターのうち1台がオフラインになっています。どのようにしてオンラインに戻せば良いのでしょうか。
  • EPSON社製品であるPX-M160Tプリンターを、パソコンと接続していますが、1台がオフラインになっています。オンラインにするための最適な方法を教えてください。
  • PX-M160Tプリンターをパソコンに接続していますが、1台がオフラインになりました。どのようにしてオンラインに戻せば良いのでしょうか。
回答を見る