メイン コーダーズルーム【スクリプト系】 switch や if での場合分けの上限数 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kumakuma | Åê¹ÆNo.28856 投稿日時: 2006-9-21 20:19 |
新米 居住地: 投稿: 14
使用環境:
WinXP Flash 8 Professional |
switch や if での場合分けの上限数 こんにちは。
今日は以前よりはましな質問だと思うのですが、 switch や if関数 に上限のcase数などはあるのでしょうか? ひとつのインスタンスで1800行ほど書くと if が機能しなくなり、switchでやるともっと少ない行で機能しなくなります。 場合分けの個数はだいたい 40個ぐらいなんですが、ActionScriptでは制限があるのでしょうか? |
KURAGE | Åê¹ÆNo.28866 投稿日時: 2006-9-21 23:23 |
常連 居住地: 東京都 投稿: 199
|
Re: switch や if での場合分けの上限数 こんにちは
機能しなくなる、というのはif文自体が無効になってしまうという事でしょうか? タイムライン上で4000回の条件判定を行うif?else if?ステートメントを実行してみましたが、 WinXP + Flash8のオーサリング環境上では問題無く動作しております。 (パブリッシュのタイミングでFlashが固まる事はありましたが・・・) 参考:4000回条件判定を行うIF文を生成する
|
kumakuma | Åê¹ÆNo.28868 投稿日時: 2006-9-22 0:15 |
新米 居住地: 投稿: 14
使用環境:
WinXP Flash 8 Professional |
Re: switch や if での場合分けの上限数 こんにちわ
お返事&テストありがとうございます。 そうですね。無効になる感じです。 2つのコンボボックスで片方を選択したときにもう片方の内容を変える というところで if構文を使っているのですが、 片方のコンボボックスのスクリプトで2000行に達するぐらいになるとプレビューしたときに連動するはずのコンボボックスが反応しないようになります。 if の回数ではなさそうなので、行数に上限があるんでしょうか? |
KURAGE | Åê¹ÆNo.28869 投稿日時: 2006-9-22 1:20 |
常連 居住地: 東京都 投稿: 199
|
Re: switch や if での場合分けの上限数 こんにちは
・if処理自体は行われているけど、コンボボックスに反映されない ・if処理自体が行われなくなる のどちらでしょう? 前者であればコンボボックス側の不具合も考えられます。 また、if構文自体に見落としがある可能性もありますので、 処理が確実に実行されるよう if (true) { ? } 等して動作を確認してみて下さい。 |
森 巧尚 | Åê¹ÆNo.28870 投稿日時: 2006-9-22 1:26 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: switch や if での場合分けの上限数 単純に行数だけなら、if文を3000行ぐらい並べてみましたが、ちゃんと最後まで動きました。
ですが、コンボボックスに対して何かをしようとしているのであれば、さらにそのコンボボックス内でも何かの処理を行なうために処理が重くなってしまっているのではないでしょうか? そもそも2000行ものスクリプトは多すぎますね。動かない原因が、もしどこかにバグが隠れているためだったとしても、そこを見つけ出すのは人間として大変ですよね。 同じような処理を繰り返している部分があるはずですから、ループ処理で対応するなど方法を考え直したほうがいいように思います。 もし、処理回数に問題があるのならば、処理回数を減らすなどして対策を考えることも試行錯誤しやすくなりますし。
|
kumakuma | Åê¹ÆNo.28871 投稿日時: 2006-9-22 1:36 |
新米 居住地: 投稿: 14
使用環境:
WinXP Flash 8 Professional |
Re: switch や if での場合分けの上限数 KURAGEさん森さんありがとうございます。
お世話になります。 if処理自体が行われるかとうかちょっと判断する技術をもっていないのですが、2000行の内95%は addItem("項目",1); のような行です。 これが多すぎるんでしょうか。。 |
森 巧尚 | Åê¹ÆNo.28873 投稿日時: 2006-9-22 1:58 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: switch や if での場合分けの上限数 引用:
残りの5%がどのような処理なのかが大きな問題ですね。 しかし、95%もaddItemを使っているのなら、少なくともそこはループで処理できるのではないでしょうか。 例えば、a_cboというコンボボックスに2000回addItemをするならこのようにできます。
でも、コンボボックスを使っているのなら、1つ1つaddItemするよりも、 あらかじめ配列にデータを入れておいてdataProviderを使えば10倍ぐらいの速さで処理できると思います。
|
kumakuma | Åê¹ÆNo.28880 投稿日時: 2006-9-22 14:57 |
新米 居住地: 投稿: 14
使用環境:
WinXP Flash 8 Professional |
Re: switch や if での場合分けの上限数 こんにちは
dataProvider は使おうとやってみたんですが、 label項目がかなりランダムなので var list = ["A","D","G"]; my_cb.dataProvider = list; のようにして設定したかったのですが、 data の部分を操作できなくなってしまい つねに undefined になるのでひとつひとつlabel と data を両方設定できる additem() でやりまして。。。 |
森 巧尚 | Åê¹ÆNo.28881 投稿日時: 2006-9-22 15:19 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: switch や if での場合分けの上限数 引用:
「やりまして。。。」どうなったのですか??? addItemではうまくいったのですか? もうすこし具体的にお願いします。 dataの設定をしていないからundefinedになるのは当然です。 dataを使うならdataの値を設定しないといけません。
|
kumakuma | Åê¹ÆNo.28882 投稿日時: 2006-9-22 15:56 |
新米 居住地: 投稿: 14
使用環境:
WinXP Flash 8 Professional |
Re: switch や if での場合分けの上限数 どうもありがとうございます。
やりまして。。最初の if構文が機能しなくなるというところに戻っていたわけです。 教えていただいた方法でできそうです。 additem() をdataProvider におきかえてみます。 ありがとうございました。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |