• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ActionScriptで、指定した時間後に次のアクションのとり方)

ActionScriptで指定した時間後に次のアクションのとり方

BlurFiltanの回答

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

#1です。 > // 関数 flgUp を定義 > function flgUp():Void { > // フラグのような変数に1を加算 > flg_num++; > // setInterval を削除 > clearInterval(myID); > } > --------------------------------------- > を定義しているところがよくわからないんですが、 setInterval の一般形は  ID番号 = setInterval(関数名, 実行間隔[単位:ミリ秒]) です。 ですからその 「関数名」 にあたる部分を関数を定義しています。 もう少し細かく注釈を入れると次のようになります。  // 関数名 flgUp という関数を定義:戻り値なし  function flgUp():Void {     // フラグのような数値を入れる変数の値を1加算     flg_num++;     // 定義した setInterval を削除     clearInterval(myID);  } > 行動を切り替えるために上のような変数を作る必要があるからなんでしょか? そうですね。 ムービークリップ自体に書く onClipEvent (enterFrame) { } を使った場合, この { }内 は1フレーム進む時間ごとに毎回実行されます。 そのムービークリップが登場してから消えるまで。 厳密には登場した次のフレーム時間から消える寸前のフレーム時間まで毎回です。 onClipEvent (enterFrame) { } を解除することはできません。  解除する=ムービークリップを消す という手段しかありません。 ムービークリップを途中で消したりするわけには行きませんから, onClipEvent (enterFrame) { } の { }内 で色々な値の場合の動作を定義しています。

yoyoyoiyoi
質問者

お礼

詳しい説明ありがとうございました。 以下のような変数を定義するのは、ある条件を判定するためで、プログラムの世界では、何かの条件を判定させるために変数を使うことは常套手段のようですね、うまく使いこなせるようにしたいです。 -------------------------------------------------------------- var flg_num:Number = 0; function flgUp():Void {     // フラグのような数値を入れる変数の値を1加算     flg_num++;     // 定義した setInterval を削除     clearInterval(myID);  } --------------------------------------------------------------

関連するQ&A

  • フェードイン、フェードアウトの「オバーラップ」について

    flash初心者です。 AS2.0です。よろしくお願いいたします。 ボタンでムビークリップを切り替える時、 フェードイン、フェードアウトの「オバーラップ」に したいのですが。 (A_mcがフェードアウトする同じタイミングで B_mcがフェードインする) ムービークリップが大量にあるので ムービークリップそれぞれに同一のスクリプトで フェードイン、フェードアウトを設定して効率化 したいと考えています。 フェードインは onClipEvent (load) { this._alpha = 0; } onClipEvent (enterFrame) { if (this._alpha<100) { this._alpha += 2; } } のようなスクリプトで実現できたのですが フェードアウトがわかりません。 ※イメージの関係でフェードアウトがどうしても必要になりました。 onClipEvent (unload) { } のようなタイミングで制御できればと 考えているのですが 具体的にアドバイスいただると助かります よろしくお願いいたします。

  • アクションスクリプトでのフレーム移動について

    FlashCS3 actionscript2.0で画像が1枚ずつフェードインしてきてサムネイル一覧になるようなものを作っています。 それぞれの写真をレイヤーに分けていれ、ラベルをつけています。 全ての写真インスタンスに飛び先のラベル名だけど変更して、下記のようにアクションスクリプトを記述しました。 ―――――――――――――――――――――――――――――― onClipEvent (load) { this._alpha = 0; } onClipEvent (enterFrame) { if(this._alpha < 100){ this,_alpha += 2; } if(this._alpha >= 80){ _root.gotoAndStop("pic02"); } } ―――――――――――――――――――――――――――――― が、1つめの写真と2つめの写真はフェードインしてきて表示されるのですが、3つめの写真以降が読み込まれません。 ラベルの番号をずらすと、その一の写真は読み込むのですが、次のラベルにはジャンプしてくれません。 原因が分かる方がいらっしゃいましたら、ぜひおしえてください。 よろしくおねがいします。

    • ベストアンサー
    • Flash
  • suzukaでのアルファ値操作

    flash作成ソフトsuzukaについてのご質問です。 どなたかよろしくお願いいたします。 外部jpg画像をムービークリップに読み込み、 フェードイン後 30秒停止し、フェードアウトを 行いたいのですが、方法がわからずつまづいています。 setInterval関数 か setTimeout関数のどちらかを使うのだろうなと いうぐらいまでしかわからない程の知識です。 ご指導のほど、よろしくお願いいたします。 ---------------------------------------------- // このムービークリップが読み込まれたら onClipEvent (load) { // このアルファを 30 にする this._alpha = 30; } // 1フレーム進む時間ごとに毎回実行 onClipEvent (enterFrame) { // もしこの アルファ が 100 より小さいとき if (this._alpha<100) { // このアルファを 3 加算する this._alpha += 3; // それ以外の場合(アルファ100以上) } else { // このアルファを 100 で固定 this._alpha = 100; } } ------------------------------------------ 上記のスクリプトは問題なく動作します。 上記のスクリプトのアルファ値が100に到達してから 30秒後動作する下記の内容をプラスしたいのですが、 ----------------------------------------- // もしこの アルファ が 0 より大きいとき if (this._alpha>0) { // このアルファを 3 減算する this._alpha -= 3; // それ以外の場合(アルファ0以下) } else { // このアルファを 0 で固定 this._alpha =0;} ----------------------------------------- どなたかアドバイスをよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0 でフェードイン、

    AS3.0 でフェードイン、フェードアウトを繰り返したいんです。 _btnをマウスオーバーするとimg_mcがフェードインし、 _btnをマウスアウトするとimg_mcがフェードアウトするというものをつくりたいのですが、 下記スクリプトだと一通り動作を完了すると、ボタンにマウスを持っていっても反応しなくなります。 繰り返し動作させるにはどうしたらよいのでしょうか? var img_mc:MovieClip; img_mc.alpha = 0; _btn.addEventListener(MouseEvent.MOUSE_OVER,xClick0); function xClick0(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ img_mc.alpha += 0.05; //スピード if (img_mc.alpha > 1){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } _btn.addEventListener(MouseEvent.MOUSE_OUT,xClick); function xClick(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha2); function imgAlpha2(event:Event){ img_mc.alpha -= 0.05; //スピード if (img_mc.alpha == 0){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2); } } }

    • ベストアンサー
    • Flash
  • フェードインから反転のアニメーション:actionscript

    ActionScriptでランダムに画像を読み込んだ状態でランダムフェードインして、ランダム秒数後に反転する。 反転すると違う画像がランダムに読み込まれていて、そしてまたランダム秒数後にまた反転してひっくり返るとまたランダムに画像が読み込まれているという、変わったアニメーションを作りたいのですが。(下の図を参照してください。) 現在ここまで↓できていて、xscaleを使えばできそうな感じなのですが、どうスクリプトを組めばよいかわかりません、どなたか教えてください。 環境;Flash 8,ActionScript2.0 ------------------------------------------------------------------- 回転させるparent_mcの1フレームに記述: // フェードイン設定 var load_time:Number = getTimer(); var wait_time:Number = Math.random()*1000; this._alpha = 0; // 反転タイマー関数 function InversionTimer() { flg++; } // ランダム秒設定 var max_sec:Number = 9; var min_sec:Number = 4; var random_sec:Number = Math.floor(Math.random()*(max_sec-min_sec+1))+min_sec; // フラグ変数 var flg:Number = 0; // MCのスケール関係 var scale:Number = 100; var scale_spd:Number = 8; this.onEnterFrame = function() { if (load_time+wait_time<getTimer()&&flg==0) { this._alpha += 2; if (this._alpha>99) { this._alpha = 100; flg = 1; setTimeout(InversionTimer, random_sec*1000); } } if (flg==2) { this.loader._xscale = scale; scale -= scale_spd; if (scale<=0) { scale = 0; this.child_mc.unloadMovie(IMG); flg = 3; } } else if (flg==3) { ???????????? } };

    • ベストアンサー
    • Flash
  • Flashでボタンをクリックするとフェードイン、フェードアウトする

    アクションスクリプト初心者なのですが、 スクリプトで、ボタンをクリックすると 現在のフレームのムービークリップがフェードアウトしながら、 次のページのムービークリップがフェードインする方法を ご存知でしたら、教えていただけないでしょうか。 ムービークリップがロードしたら、 フェードインするところまでは出来たのですが、 それだと、現在のムービークリップがフェードアウトしないので 困っています。 ムービークリップがロードしたら、 フェードインするスクリプトは、 onClipEvent (load) { _alpha = 0; } onClipEvent (enterFrame) { _alpha += 2; } と記載しております。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • FlashMX フェードアウト

    以前、教えていただいた フェードインするスプリクト onClipEvent (load) { _alpha = 0; } onClipEvent (enterFrame) { _alpha += 1; } このあと、フェードアウトしたいのですが     どのようにしたらよいのか教えて下さい。 それと モーショントゥーインでの    フェードイン→フェードアウトのさせかたも            教えて下さい お願いします。 (FlashMX OS2000です)

    • ベストアンサー
    • Flash
  • Flash Lite1.1でActionScriptを使用してのフェードイン・フェードアウトについて

    こんにちは。 ActionScript初心者です。Flash Lite1.1でActionScriptを使用してのフェードイン・フェードアウトについて教えて下さい。 FlashLiteではonClipEventが使えないそうだったので ムービークリップ内の1フレーム目に _alpha=0; 2フレーム以降毎に _alpha+=10; と記述すればフェードイン出来ましたが、もっとスマートにやる方法があれば教えていただけますでしょうか。 以上よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • アルファをかけた外部画像の読み込みについて

    初心者ですが、flash8にてフルフラッシュのサイトを作っています。 base.swfというファイルに、各ページへ遷移するボタンを配置し、それをクリックするとbase.swfに配置したムービークリップ(back_image)に他のswfが読み込まれるようになっています。なお、base.swfをひらくとtop.swf(トップページ)が自動的に読み込まれるようにしてあります。 top.swfに外部画像を読み込み、アルファをかけてフェードイン→フェードアウトするように表示させているのですが、フェードイン→フェードアウトの途中でtopページ以外のボタンを押すと、強制的にback_imgにtop.swfが何度も読み込まれて、その後の操作が何もできなくなってしまいます。 フェードイン→フェードアウトが終わった後なら何も問題はありません。 アルファをかけたフェードインについてはこちらのページhttp://okwave.jp/qa1915003.htmlを参考にさせていただきました。ここに書かれている両方のやり方を試してみたのですが、結果は同じでした。 自分なりにスクリプトを変えた部分もあるので、それが間違っているのでしょうか。 それともタイミング的に無理なものなのでしょうか。 top.swfのスクリプトを記載しておきます。 ●2フレーム目に back_image.loadMovie( "img1.jpg" ); this.stop(); ●back_imageに(もともとback_imageのアルファは1%にしてあります。) onClipEvent (data) { total = this.getBytesTotal(); loaded = this.getBytesLoaded(); //読み込み完了後、フェードイン開始 if (loaded>=total) { //フェードスピードを設定 this.fed_spd = 2; //フェード処理を定義 this.onEnterFrame = function() { //フェードの処理 this._alpha += fed_spd; //アルファが100%になったらフェードアウト if (this._alpha>100 || this._alpha<0) { fed_spd = -fed_spd; } //アルファが0%になったら終了 else if (this._alpha <= 0) { this._alpha = 0; delete this.onEnterFrame; //top.swfのメインのタイムラインを動かす _parent.play(); } }; } } 仮に、一度トップページを見た人はそれ以降はスルーしてしまうと思うので、このままだとサイトとして成り立たなくなってしまいます。 どうしたらよいか悩んでいます。 わかりにくい質問で申し訳ありませんが、お力を貸していただけますでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash ActionScript 2.0でアドバイスをお願いいたし

    Flash ActionScript 2.0でアドバイスをお願いいたします。 下記のような記述で、外部フォルダ内の画像(連番のファイル名)を読み込み表示させています。画像枚数は変動しますのでこのような形にしました。 そこで問題なのが、リンク先の指定です。 XMLを読み込んでファイル名「1」の画像にはID「1」のURLがクリックしたら開くようにしたいのですが、どのように設定すればいいのかわかりません; 素人なもので、どのように記述すれば良いかご教授いただければ幸いです。 どうぞよろしくお願いいたします。 ----------------------------- var n = 0; var s = 0; _forcusrect = false; load_mc = createEmptyMovieClip("load_mc", -1); var mcLoader:MovieClipLoader = new MovieClipLoader(); var oListener = new Object(); function searchTotal() { s++; $jpg = "img_top/p"+s+".jpg"; mcLoader.loadClip($jpg, load_mc); load_mc._alpha = 0; oListener.onLoadError = function() { total = s; clearInterval(sID); n = 0; autoExchange(); }; mcLoader.addListener(oListener); } function p_load(n) { $jpg = "img_top/p"+n+".jpg"; mcLoader.loadClip($jpg, load_mc); p_direction(n); load_mc._x = 0; load_mc._y = 0; load_mc._alpha = 0; _root.onEnterFrame = function() { load_mc._alpha += (180-load_mc._alpha)/30; current_num.text = n; total_num.text = total-1; } } function autoExchange() { if (n>=total-1) { n = 1; p_load(n); } else { n++; p_load(n); } } sID = setInterval(searchTotal, 70); pID = setInterval(autoExchange, 4000); myComboBoxListener = new Object(); myComboBoxListener.change = function() { clearInterval(pID); if (flag!==1) { pID = setInterval(autoExchange, myCombo.value*1000); } }; myCombo.addEventListener("change", myComboBoxListener); ----------------------------------------- XML ----------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <urllist>   <anchor id="1" url="http://www.yahoo.co.jp" target="_self" /> <anchor id="2" url="http://www.google.co.jp/" target="_self" /> <anchor id="3" url="http://www.goo.ne.jp/" target="_self" /> </urllist>

    • ベストアンサー
    • Flash