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

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

BlurFiltanの回答

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

書かれていらっしゃるスクリプトに付け足すとする場合で, なおかつ setInterval を使う場合は, 次のようになると思います。 ------------------------------------------------- onClipEvent (load) { // 数値を代入するフラグのような変数を初期化 var flg_num:Number = 0; // ---以下そのまま------ this.createEmptyMovieClip("img_load_mc", 1); img_load_mc.loadMovie("画像URL"); this._alpha = 0; this._x = 0; this._y = 100; // ---以上そのまま------ // 関数 flgUp を定義 function flgUp():Void { // フラグのような変数に1を加算 flg_num++; // setInterval を削除 clearInterval(myID); } } onClipEvent (enterFrame) { // // フラグのような変数の値が 0 であって if (flg_num == 0) { // なおかつ アルファ が 100 未満のとき if (this._alpha<100) { // アルファ を 5 ずつ加算 this._alpha += 5; // アルファ が 100 以上になれば } else { // アルファ を 100 で固定 this._alpha = 100; } // なおかつ y座標 が 0 より大きいとき if (this._y>0) { // y座標 を 5 ずつ減算 this._y -= 5; // y座標 が 0 以下になれば } else { // y座標 を 0 で固定 this._y = 0; // フラグのような変数の値を 1 にする flg_num = 1; // 2000ミリ秒後に 関数 flgUp を実行 var myID:Number = setInterval(flgUp, 2000); } // // フラグのような変数の値が 2 であるとき } else if (flg_num == 2) { // アルファ を 5 ずつ減算 this._alpha -= 5; } } ------------------------------------------------- 変数や関数の型指定をしているため, ActionScript 1.0 設定でのパブリッシュはできませんが, 概ね全体の形は Flash 5 形式のスクリプトです。 Flash 5 の次のバージョンである Flash MX 以上では ムービークリップ自体に書く onClipEvent (enterFrame) { } イベントハンドラ ではなく MovieClip.onEnterFrame = function() {} イベントハンドラメソッド が使えます。 これを使えば, 途中で EnterFrame を削除したり他の関数を実行するように切り替えることもできるので もっと柔軟にスクリプトが組めるかもしれません(フラグのような変数やif文などは不要になるかもしれません)。 さらに Flash Player 8 以上では, setInterval ではなく setTimeout が使えるので, この場合(単発実行するような場合)は,これを使った方が楽かもしれません。

yoyoyoiyoi
質問者

補足

すごい丁寧に説明してくださってありがとうございます。 でちょっと質問なんですが、 ------------------------------------------------- // 数値を代入するフラグのような変数を初期化 var flg_num:Number = 0; と // 関数 flgUp を定義 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