• ベストアンサー

setIntervalでの時間間隔(AS2.0)

こんにちは。 FlashCS3、Actionscript2.0使用です。 setIntervalで1500ミリ秒おきに関数を動作させているんですが これをMath.random()関数を使って1000~1500ミリ秒おきに動作をさせたいです。 setInterval(test,1000+Math.floor(Math.random()*500)); でやってみてますが、うまくいきません(当たり前ですが……) この場合はどのようにすればうまくいくでしょうか? よろしくお願いします。

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

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

動作環境がないので確認できてませんが‥ 多分 clearInterval でクリアした後に再度 setInterval で指定しないと setInterval(test,1000+Math.floor(Math.random()*500)); は思われる様な 動作しないと思います。 それよりもsetIntervalは固定して以下のようなのは如何でしょう function f(msg) {  n++;  if (n >= maxCount) {    //動作させる処理    maxCount = 10 + Math.floor(Math.random() * 5);    n = 0;  } } var n = 0; var maxCount = 10 + Math.floor(Math.random() * 5); var timer = setInterval(f, 100);

coirn
質問者

お礼

ありがとうございます! 結構複雑ですね……大事に使わせていただきます。 //動作させる処理 中に反復させたい関数を実行すればいいわけですね。

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

関連するQ&A

  • 最適なsetInterval()の秒数について

    setIntervalを使い、一定時間マウス操作がない場合に location.hrefでログアウトする処理を行っていますが 1秒毎にチェックするより、5秒毎の方が軽いでしょうか? 又、1秒で指定した場合、画面描画に1秒以上かかる場合 動作がおかしくなったりするのでしょうか?

  • setTimeoutあるいはsetIntervalの限界

    いつもお世話になっています。 タイマーの実験をしてみようかと思い、タイマー関数のサンプルをちょっと触ってみて、気になることがありました。 スクリプトとしては、次のようなものです。 <HTML> <HEAD> <SCRIPT Language="JavaScript"> <!-- timerID = 10; count = 0; function timerX(){ status = "Counter is " + count++; } function clr(){ clearInterval(timerID); } // --> </SCRIPT> <BODY bgColor="white" onLoad="timerID = setInterval('timerX()',1000);"> (以下略) このスクリプトを実行すると、1秒毎に1カウント増えていきますから、ステータスに表示される数値は10秒で10になります。 ですから、1を指定する、つまりsetInterval('timerX()',1);にすれば、論理上、10秒で10000になるはずですよね? ところが実際にステータスに出る数値はそうはならず、かなり低い数字になってしまいます。 そこで質問なのですが、setTimeoutまたはsetIntervalでタイマーを作る場合、ミリ秒はどのくらいまで有効なのでしょうか。 ひょっとして、マシンに依存するのでまちまちなのでしょうか。 経験等でご存じの方、お教えください。

  • 乱数を一定時間毎に表示させたいのですが・・・

    乱数を生成させることは出来たのですが、 それを0.5秒毎に永遠に表示させることが出来ません (50*Math.random())+200 //乱数生成200~250 setIntervalを検索しても複雑すぎて、ちょっといじるとエラーが出てうまくいきません。 よろしくお願いします。

  • AS3.0に書き換えたいです

    みなさま始めまして、最近AS3.0を始めたばかりでして 右も左もわからない者です。 以前に、AS2.0でインスタンスを右方向にランダム移動させる プログラム(右上方向にいったり右下方向にいったり)を作っていたのですが、 AS3.0で使いまわそうと思ったところ、エラーになってしまい、 作業が止まってしまいました。 参考書などは買っていますが、覚えるのにかなり時間がかかりそうなので、 とりあえず今急いで教えてもらいたく質問させてもらいました。 よろしくお願い致します。 AS2.0で書いたスクリプトです これをAS3.0用に書き換えたいです this.onEnterFrame = function() {   _y -= Math.floor(Math.random()*3)-1;   _x -= Math.floor(Math.random()*5)-3; }; 本当に初歩的な質問でご迷惑おかけしますが、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS1.0で基準点をそろえたい

    AS1.0でduplicateMovieClipを使った複製をした後MC同士の基準点をそろえたいのですがうまくできません 今MC1とMC2というムービークリップをduplicateMovieClipを使って複製しています まず針(MC1)というフレームがありその中に //関数が呼ばれたら描画する setInterval(hari,1000); function hari(){ i ++; duplicateMovieClip("Hari","hari" + i , i); } が書いてありこれは針が1秒ごとに描画されていくという方法です そして円(MC2)というフレームの中にも //関数が呼ばれたら描画する setInterval(EN,1000); function EN(){ i ++; duplicateMovieClip("En","en" + i , i); } がかいてありこれも複製できるようになっています 針(MC1)の中には onClipEvent (load) {       //針の位置をランダムで決めた後描画 this._x = Math.random() * 300 + 50; this._y = Math.random() * 200 + 50; } onClipEvent (enterFrame) {     //針回転     _rotation += 6; } がありこれをベースにして円(MC2)の基準点を針(MC1)にあわせて描画したいのですがやり方がわかりません 自分が考えた方法ですが onClipEvent (load) {       円1の位置x = 針1の位置x       円1の位置y = 針1の位置y } をやったんですがうまくいきません 誰か教えてください

  • setIntervalについて

    お世話になります <script type="text/javascript"><!-- window.onload=function() { n=0; Timer = setInterval("ch()",1000); } function ch() { n++; document.getElementById("test").innerHTML = n; } function re() { clearInterval(Timer); } function call() { Timer = setInterval("ch()",1000); } //--></script> <input type="button" onclick="re()" value="reset"> <input type="button" onclick="call()" value="call"> <div id="test"></div> としたときにページを表示したら1秒ごとに<div>『test』に1ずつ数が増えて表示されていき『reset』ボタンを押すとTimerが止まり『call』ボタンを押すとTimerが再開します でもTimerを解除せずに『call』ボタンを押すと1秒に2ずつ、3ずつという風に相乗されていきます(新しいTimerが追加されていく) これをTimerが起動しているときに『call』ボタンを押すとreturn false; 起動していないときにはTimerを起動させるという風にすることは可能でしょうか? (Timerが起動しているときに『call』ボタンを押せないようにする以外に)

  • 画像をフェードインアウトさせたいのですが・・・

    勉強しながら四苦八苦しております。 今現在 背景を5つある画像の中からランダムに表示→数十秒ごとにその5つの画像からランダムに切り替え というものをなんとか完成させました。 それでこのランダムに切り替えるときに画像をフェードさせたいのですがどうも上手くいきません。。 // 画像を読み込む  num =Math.floor(Math.random() * 5); loadMovie(num + ".jpg", "img"); //何秒ごとに画像を切り替えるか setInterval(move,20000); //切り替える画像をランダムに表示 function move():Void { aaa =Math.floor(Math.random() * 4); loadMovie(aaa + ".jpg", "img"); } //以下を加えるとエラーになってしまいます。 onClipEvent(load) { flg = -1; myspd = 5; } onClipEvent(enterFrame) { tmp = this._alpha+(myspd*flg); if (tmp>100 { tmp = 100; flg = -1; } else if (tmp<0) { tmp = 0; flg = 1; } this._alpha = tmp; } どなたか分かるようでございましたらご教示下さい。。。 ヒントだけでもけっこうですので。

    • ベストアンサー
    • Flash
  • setIntervalの解除方法について

    いつもお世話になっています。 setIntervalの解除方法について質問させていただきます。 今回、作成したFlashには、一定時間が経過した場合にclearIntervalを使用し、setIntervalを解除しています。deleteも使用しています。 この場合は、問題無く解除できています。 --------------------------------  if( _global.sentaku == 2 )  {   trace("時間制限有り!");   settime = _global.seigen_jikan * 60000;   ret = setInterval( time_out, settime );  }  function time_out()  {   trace("time_outが呼び出されました。");   clearInterval( ret );   delete ret;   _root.gotoAndStop("kekka");  } -------------------------------- 今回[SKIP]ボタンを追加し、ボタンが押された場合にもsetIntervalを同様に解除しているのつもりなのですが、解除できません。 上記、ActionScriptはMCに記述されています。 [SKIP]ボタンは、rootに配置されています。 Flash MX 2004を使用しています。 どなたか、ご教授お願い致します。

    • ベストアンサー
    • Flash
  • ActionScript 初心者です。Math.floorについて

    すみませんが教えて下さい。 参考書より 「-10~10までの範囲の整数値」であれば、小数部分を切り捨てるMath.floor()メゾットを使って「Math.floor(Math.random()*21)-10」となります。 Marh.random()が0だと「Math.floor(Math.random()*21)」の部分は「Math.floor(0*21)」となり0になります。 つまり「Math.floor(Math.random()*21)-10」の最小値は-10になります。 Math.random()が約1だと「Math.floor(Math.random()*21)」の部分はMath.floor(1*21)となり、約21(20.99999999・・)の少数部分を切り捨てて20になります。したがって「Math.floor(Math.random()*21)-10」の最大値が10になることが分かります。 とありますが、いろいろ調べても概念がさっぱりわかりません。 詳しい方、噛み砕いて教えて頂けるととてもありがたいです。 こんな質問ですみません。よろしければよろしくお願い致します。

    • ベストアンサー
    • Flash
  • JavaScriptを使ってロト6の当選数字を予想するプログラムを考えたのですが・・・

    Math.floor(Math.rondom()*10);を使うと、小数点以下の数字を出さない。 と先生に教えられたのですが、 ((Math.floor(Math.random() * 10)) + (Math.floor(Math.random() * 10))) * (Math.floor(Math.random() * 10)) + 1; を変数に入れて、テキストボックスに出力してみると、なんと小数点が出てしまいます! しかも、27.5や59.5などと、ちょうど0.5が出てしまいます。 この0.5を出さないように、ランダムで数字を出したいのですが、Math.floor以外で使えるものがあったら教えてください。 よろしくお願いします。

このQ&Aのポイント
  • 現在派遣社員の離婚あり30歳の私は、数年前に出会った友達が好きになってしまったが、彼のスペックが高すぎて自分にはもったいないと感じて付き合えないでいる。
  • 元旦那との離婚や彼が浮気をする可能性、自身の人間不信と病んだメンタルなどが関係し、彼の気持ちに答えられずにいる。
  • 彼はまだ私のことを好きでいてくれているが、申し訳なく感じている。どう思われるか、ご意見を聞きたい。
回答を見る