• 締切済み

onEnterFrameの処理速度について

onEnterFrameの処理速度についてご質問です。 下記のようなonEnterFrameの常時フラグを判定するスクリプトがあるとして、 //------------------ var testFlag:Boolean = false; this.onEnterFrame = function():Void{ if (testFlag == true){ trace("test") } } //------------------ この場合、testFlagがtrueになっていないときも、常に処理を行っていることになるのでしょうか? 例えば、いろいろなムービークリップに対して、このような「こうなったらこうしろ」的なif文を伴ったonEnterFrameを書いているとします。 その時、ひとつのonEnterFrameのif文だけが動くとすると、(他はif文を否定している状態)その処理速度は、ひとつだけが書かれている時とかわらないのでしょうか? 説明がややこしくなりましたが、 ・onEnterFrameがひとつ実行されている場合 ・onEnterFrameが複数個ある中で、if文によりひとつだけが実行されている場合 この2つの処理速度は変わらないものでしょうか? ご回答、お待ちしております。よろしくお願いいたします。

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

みんなの回答

回答No.1

onEnterFrameが複数あれば、その数だけ常にループ動作をしている状態になると思います。 onEnterFrame内にif文があれば、常にif文を動かしている状態ではないでしょうか。 onEnterFrameが一つの方が軽くなります

関連するQ&A

  • onEnterFrameで、条件を満たしたときにその処理から抜けたい。

    下のプログラムをフレームに書きました。そうすると、一応は重いどおりにうごいて、_alphaが増えていきphotoとなずけたがムービークリップが見えるという動きはできるのですが、問題は、traceさせてみるとずっと100、100と記述されます。できればこの処理から抜けて、traceで100と出てこないようにしたいです、なにか処理が重たそうなので。フレーム移動して処理抜けるのはできるかもしれませんが、できれば1フレームで終わらしたいなとおもっています。よろしくお願いいたします。バージョンはflashMX2004です。 this.onEnterFrame = function(){ if(photo._alpha >= 100){ photo._alpha = 100; trace(photo._alpha); }else{ photo._alpha += 5; } }

    • ベストアンサー
    • Flash
  • javaプログラムについて

    mainメソッド内の指定された部分の処理を、 別のメソッドに分けてください。 mainメソッド内から作成した別メソッドを呼び出して 実行できるようにしてください。 ※分ける前と分けた後で処理結果が変わらないこと (入力された文字が"A"の場合true, それ以外の場合falseを返すように) */ class MethodAdd1{ public static void main(String[] args){ /* // ★ここから if("A".equals(args[0])){ judge = true; }else{ judge = false; } // ★ここまで */ boolean judge; if("A".equals(args[0])){ System.out.println("true"); }else{ System.out.println("false"); } } /* **戻り値:boolean **引数:String */ //ここにメソッドを作成 public static boolean equals(String a){ String str="A"; if("A".equals(str)){ return true; }else{ return false; } } } これで一応trueかfalseと表示されるのですが、合っているのか分かりません。 お時間のある方で、手直しをして頂ける方お願い致します。

  • この文法は正しいんでしょうか?また、それは何故ですか?

    String line; String a; if(line.equals(a)) {実行文} というような条件式です。 普通equalsメソッドはboolean型でtureかfalseを 返すということらしいんですが、 この条件式では、どうやら これで「lineがaと等しいとき、実行文処理へ進む」ということが可能になるらしいです。 普通に考えれば 事前にboolean b=line.equals(a); if b==true{実行文} という形になると思うんですが、 何故文法的にOKなんでしょうか?

    • ベストアンサー
    • Java
  • C# こういう場合ってどうなるの?

    public void A(bool b) {   if(b ? B() : C())//分かると思いますが、三項演算子   {     //略   } } public bool B() {   return true; } public bool C() {   return false } 上記のAにtrueを渡し実行した場合、 if文の中はどうなるのでしょうか? 引数がtrueならBを実行し、Bの戻り値trueが if文で処理され、if内に入る・・・でよろしいのでしょうか? それとも引数bの評価がそのままifで使われるのでしょうか? 例えばのコードなので、bだろうがBだろうが変わらない・・・みたいな 回答はご遠慮ください。

  • ちょっとした記述に関する疑問

    どちらでもいいような内容かもしれませんが、よろしくお願いします。 ---------------------------------- flag = false; if(num < 0) { num *= -1; flag = true; } //numを使って何かの処理 ~~ if(flag) { //処理 num *= -1; } ---------------------------------- 例として、変数numが負だったらフラグをtrueにして、 最後にそのフラグをもとに処理を行うという一連の動作があった場合に、 if(num < 0) { num *= -1; flag = true; } というふうにフラグを後に記述するのか if(num < 0) { flag = true; num *= -1; } というふうにフラグを先に記述するのか がふと気になったのですが、みなさんはどちらでやっているのでしょうか?

  • if else文のフローチャート

    c言語です。 if else文のフローチャートを教えてほしいです。 Trueの場合は処理1、Falseの場合は処理2を実行したいです。 最初に条件と書きます。

  • &と|の演算子を使ったif文のプログラムについて

    ↓のプログラムの実行結果について質問します。 public class Test{ public static void main(String args[]){ if(methodA() & methodB() ){ System.out.print(1); }else{ System.out.print(2); } if(methodA() | methodB() ){ System.out.print(3); }else{ System.out.print(4); } } private static boolean methodA(){ System.out.print("A"); return false; } private static boolean methodB(){ System.out.print("B"); return true; } } 上記のプログラムを実行すると AB2AB3 と出力されるのですが、 何故こういう風になるのか教えていただけませんか? また、if文の中をそれぞれ if(methodA() & methodB() ) if(methodA() | methodB() ) と書き換えると A2A3 となるのですが、これについてもイマイチよく分かりません。 メソッドからfalseとtrueを戻り値として受け取り 演算子によって処理を分けているんでしょうけど、 どういう流れで処理が行われているのか 出力結果を見ても読めなくて・・・

    • ベストアンサー
    • Java
  • 列車走行位置で、フラグによる分岐から変えたいです。

    列車走行位置で、フラグによる分岐から、enum分岐のint文にしたいです。 以下のプログラムを参考にして作っています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下はjsの文章ですが、 //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月〜金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; //祝日ならたおす if(year == 2013 && month == 1 && date == 1) weekdayFlag = false; else if(year == 2013 && month == 10 && date == 14) weekdayFlag = false; else if(year == 2013 && month == 11 && date == 4) weekdayFlag = false; else if(year == 2013 && month == 12 && date == 23) weekdayFlag = false; else if(year == 2014 && month == 1 && date == 1) weekdayFlag = false; return weekdayFlag; } 僕が具体的に行ったのは、フラグを3つ以上に分けることでした。 しかし、フラグを分けても、ことは解決しかなったです。 フラグというのはBoolean型の一種で、 真偽値を返すものであって、 AorBにしかならないのです。 以下はjavaにおけるbooleanの説明ですが、 javascriptでも同じことがいえると思います。 https://www.sejuku.net/blog/41241 そこで、抜本的な解決策として、enum型のint文があるのを知りました。 https://qiita.com/BMJr/items/5ec834e6513fe5f0ad87 上記のenum型のint文にして、先ほどのjavascriptの文章を書き直すことって可能でしょうか。 僕には天才ではないため、 断片的な情報から、一つの情報をあびきだすのはできないです。 どうか、ご教授願えたら幸いです。

  • gotoAndPlayされないです

    はじめてFlashを作ります。 "ATTACK1"と"ATTACK2"のフレームを0.2秒の間隔で10回交互に表示したあと、 "ATTACK3"と"ATTACK4"のフレームをenterが押されるまで交互に表示する というプログラムを作りたいのですが、 "ATTACK1"と"ATTACK2"のフレームを交互にずっと表示されるだけで、 ATTACK3へ移動しません。 "ATTACK1"というラベルのフレームに以下のように書きました。 ActionScript2.0でやっています。 どこが悪いのか教えてください。お願いします。 ATTACK1フレームのActionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; if( count >= 10 ){ gotoAndPlay("ATTACK3"); count=0; delete this.onEnterFrame(); } gotoAndPlay("ATTACK2"); count=count+1; delete this.onEnterFrame(); } } }; ATTACK2フレームのAcctionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; gotoAndPlay("ATTACK1"); delete this.onEnterFrame(); } } };

    • ベストアンサー
    • Flash
  • onRelease文での動作について・・・。

    ムービークリップをボタンにして、その階層の最初のフレームに this.onRollOver = function() { this.onEnterFrame = this.nextFrame; }; onRelease=function(){ var num:Number=0 onEnterFrame=function(){ trace("LOOP num ="+num) num ++ if(num>30){ delete onEnterFrame } } } stop() 最後のフレームに this.onRollOut = function() { this.onEnterFrame = function() { if (this._currentframe > 1) { this.prevFrame(); } }; }; とした場合について質問です。 ボタン上にカーソルがある場合は30までカウントされます。 しかし、クリック直後にカーソルがボタン上から離れるとカウントが停止します。 ボタンから離れてもカウントを続けるにはどうすればよいでしょうか?? ちなみに、このスクリプトは簡単に流れが分かるように作ったものなのでfor文などではなくonEnterFrame~での対処法を教えて下さい。 実際にはonEnterFrame以下はもっと長くなっているので・・・。 どうかお願いしますっ!!! m(_ _)m

    • ベストアンサー
    • Flash

専門家に質問してみよう