- ベストアンサー
suzukaでActionscriptの量の限界は?
- SuzukaでフレームあたりのActionscriptの量が増えると、処理が重くなり動作が不審になる場合があります。
- フレームごとに書くActionscriptの量を制限し、見やすいコードにすることをおすすめします。
- 変数や関数の定義はどのフレームに書いても実行されますが、特定の処理が必要な場合は注意が必要です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
何でも良いですが、if文が間違っていますよ。 【例】 if (sprach="es"){ ・・・・ } ↓イーコールイコールに変更 if (sprach=="es"){ ・・・・ } こうでしょう。 「=」 は代入演算子で「==」が等価演算子です。 他のif文すべでも同様です。 行数は内容によりますが、 単にif文を並べるくらいなものでしたら 1000行 10000行 くらい別に大丈夫でしょう。 人間の把握能力の方がおそらく先に限界が来ます。 問題は行数ではなくて内容です。 たとえば num=1; for(i=0;i<100000000000000000;i++){ if(i%2==0){ num+=10000000*i; } } こんなのが無事に動くかどうかわかりません。 長いから他のフレームに分けるのではなく、 わかりやすいように短くするのが普通の手段です。 例えば、 すごく単純(基礎・基本的)なまとめ方だと次のようにもできます。 ------------------------------------------- // 変数 myLanguage の値が仮に ja であったとする myLanguage = "ja"; // アルファベット略国名の配列を作成 languageArr = ["cs", "da", "nl", "en", "fi", "fr", "de", "hu", "it", "ja", "ko", "no", "xu", "pl", "pt", "ru", "zh-CN", "es", "sv", "zh-TW", "tr"]; // 漢字略国名配列を作成(function名 配列と考えても良い) functionArr = ["捷", "丁", "和", "英", "芬", "仏", "独", "洪", "伊", "日", "韓", "能", "不", "波", "葡", "露", "簡", "西", "瑞", "繁", "土"]; // 配列の要素の数だけ i を加算しながらループ for (i=0; i<languageArr.length; i++) { // myLanguage の値が languageArr の要素と一致していれば if (myLanguage == languageArr[i]) { // それに対応する functionArr の要素を出力 trace(functionArr[i]); } } ------------------------------------------- さらに、 漢字略国名(function名)を技巧的に考えれば、 functionArr なども不要になる可能性もあります。 functionArr 関数名の要素を入れた場合は, 次のように配列アクセス演算子 [] を使ってその関数を実行させることができます。 ------------------------------------------- // 変数 myNum の値が仮に 2 だったとする myNum = 2; // function名 の配列を作成 functionArr = ["funcAAA","funcBBB","funcCCC"]; function funcAAA(str){ return "ああ" + str + str; } function funcBBB(str){ return "なかなか" + str + str; } function funcCCC(str){ return "まじで" + str + str; } // 変数 aaa に 関数 functionArr[2] の戻り値を取得(引数:楽しい) aaa = this[functionArr[myNum]]("楽しい"); // 変数 aaa を出力(「まじで楽しい楽しい」 が出力される) trace(aaa); ------------------------------------------- また、 function がそんなにたくさんいるのかどうかもわかりません。 こちらも考えれば短くできる可能性は大きいと思います。 例えば、 上に書いた funcAAA~funcCCC のような関数は function を実行させる説明のために3つも用意しただけで,そもそも3つも要りません。 1個または0個にできます。 --------------------------------------------- // 変数 myNum の値が仮に 2 だったとする myNum = 2; // 感嘆語の配列を作成 exclamationArr = ["ああ","なかなか","まじで"]; function funcABC(num,str){ return exclamationArr[num] + str + str; } // 変数 aaa に funcABC の戻り値を取得(引数:2,楽しい) aaa = funcABC(myNum,"楽しい"); // 変数 aaa を出力(「まじで楽しい楽しい」 が出力される) trace(aaa); --------------------------------------------- 書かれていらっしゃるもののような場合は、 フレームを分けると複雑になるだけだと思いますよ。 また分けても処理時間が短くなるわけでもありません(たいてい長くなる)。 フレームを分けるのは、 たいていの場合 「準備が整うまでステージを見せたくないとき」 と思えば良いと思います。
お礼
うわぁ!超嬉しいです、動きました。何時間の格闘が解決しました。。 いつもなのですが、本当にありがとうございました! >何でも良いですが、if文が間違っていますよ。 (爆)ホント、申し訳ないです。知りませんでした。。。(どうしよう) >「=」 は代入演算子で「==」が等価演算子です。 コピペして製作しており、かろうじて動いていたようですが、 今、全部上手くいきました~(涙)。。よかった。。。 仰るfunctionArr[i]はこういう使い方ができるんですね!スゴイ。 是非すぐ取り入れてみます。 後半部分の説明が私の理解を超えており、今全く判らないのですが、 頑張って理解してみます。 ホント、素人相手にお時間とらせて申し訳ありません。 メッチャ助かりました。ホント、訳の判らない質問をする位、(そのレベルなのですが;) 行き詰まっておりました。基本的な疑問にも丁寧にお答えして頂き、 なんとなく持っていた疑問が晴れました。後半部分はじっくり考えてみます^^; 今回も本当に(×2)アリガトウ御座いました!