レス数:8 / 状態:解決済み / No:23 / ATOM
1
名前:k
日付:2010/05/16(日)16:28:29
ID:9kJEWPZA4knz
フリーのFlash作成ソフト、paraFlaで携帯用Flashゲームを作っております。
http://www.geocities.jp/coa9999/
ActionScript1.0相当のスクリプトを使用できるそうです。
早速質問ですが、このソフトで作る際、条件演算子の処理が上手くいかないときがあります。
例)var t = (false ? "true" : "false") + "!";
(↑falseでなくtrueにすると、なぜか上手くいきます。)
もちろん条件演算子を使わずに作ることも可能ですが、携帯用のFlashなので、
極力容量を抑えるためにも、これを使いたいのです。
対処方法をご存知の方は、どうかご教授願います。
http://www.geocities.jp/coa9999/
ActionScript1.0相当のスクリプトを使用できるそうです。
早速質問ですが、このソフトで作る際、条件演算子の処理が上手くいかないときがあります。
例)var t = (false ? "true" : "false") + "!";
(↑falseでなくtrueにすると、なぜか上手くいきます。)
もちろん条件演算子を使わずに作ることも可能ですが、携帯用のFlashなので、
極力容量を抑えるためにも、これを使いたいのです。
対処方法をご存知の方は、どうかご教授願います。
2
日付:2010/05/17(月)13:10:46
ID:2iuB4losX8Zs
条件演算子はここですよね?
(false ? "true" : "false")
条件の部分が定数になっているため、常に "false" になると思うのですが
どういう条件で "true" と "false" を切り替えたいですか?
(false ? "true" : "false")
条件の部分が定数になっているため、常に "false" になると思うのですが
どういう条件で "true" と "false" を切り替えたいですか?
3
名前:k
日付:2010/05/17(月)17:25:33
ID:9kJEWPZA4knz
分かりにくい例ですみません。
実際には、falseではなく、変数とか評価式を使っています。
var t = (○○ ? "true" : "false")+"!"; のときに、
○○の部分が、falseである変数や、falseになる評価式や、
定数のfalseでも同じ現象が起こります。
(○○の部分がtrueだと上手くいきます。
+"!"がなくても、上手くいきます。)
ご存知でしたら、ご回答お願いします。
実際には、falseではなく、変数とか評価式を使っています。
var t = (○○ ? "true" : "false")+"!"; のときに、
○○の部分が、falseである変数や、falseになる評価式や、
定数のfalseでも同じ現象が起こります。
(○○の部分がtrueだと上手くいきます。
+"!"がなくても、上手くいきます。)
ご存知でしたら、ご回答お願いします。
4
日付:2010/05/17(月)22:03:44
ID:yDl4tzgDJCHR
var i;
for(i=0;i<10;i++){
var t = ((i < 5) ? "true" : "false")+"!";
trace( i + " : " + t );
}
確かに挙動がおかしいですね。
括弧をすべて外すと動くようですが如何でしょう?
var t = ○○ ? "true" : "false"+"!";
for(i=0;i<10;i++){
var t = ((i < 5) ? "true" : "false")+"!";
trace( i + " : " + t );
}
確かに挙動がおかしいですね。
括弧をすべて外すと動くようですが如何でしょう?
var t = ○○ ? "true" : "false"+"!";
5
名前:k
日付:2010/05/19(水)14:22:28
ID:9kJEWPZA4knz
返答が遅くなってしまい、申し訳ありませんでした。
その方法だと、
var t = i < 5 ? "true" : ("false" + "!");
と同じ解釈になっていると思いますけど…。
いろいろ実験してみたところ、
1:条件演算子単独では上手くいく
var t = i < 5 ? "true" : "false";
2:でも、その後に何か文字列をつなげると、上手くいかない
var t = (i < 5 ? "true" : "false") + "!";
3:でも、その前に何か文字列をつなげると、上手くいく
var t = "Boolean : " + (i < 5 ? "true" : "false") + "!";
何か、ちゃんとした法則があるのでしょうか…。
私は、AS1.0に関してはparaFlaしか使ったことがないのですが、
他のソフトでも同じなのでしょうか?
その方法だと、
var t = i < 5 ? "true" : ("false" + "!");
と同じ解釈になっていると思いますけど…。
いろいろ実験してみたところ、
1:条件演算子単独では上手くいく
var t = i < 5 ? "true" : "false";
2:でも、その後に何か文字列をつなげると、上手くいかない
var t = (i < 5 ? "true" : "false") + "!";
3:でも、その前に何か文字列をつなげると、上手くいく
var t = "Boolean : " + (i < 5 ? "true" : "false") + "!";
何か、ちゃんとした法則があるのでしょうか…。
私は、AS1.0に関してはparaFlaしか使ったことがないのですが、
他のソフトでも同じなのでしょうか?
6
日付:2010/05/19(水)18:52:09
ID:2iuB4losX8Zs
>同じ解釈になっていると思いますけど…。
ご指摘の通りですね。すみません…。
>他のソフトでも同じなのでしょうか?
Adobe Flash で以下のスクリプトを動作させると
----------------------------------------------------------
var i;
for(i=0;i<10;i++){
var t = ((i < 5) ? "true" : "false")+"!";
trace( i + " : " + t );
}
----------------------------------------------------------
以下のように出力されます。
----------------------------------------------------------
0 : true!
1 : true!
2 : true!
3 : true!
4 : true!
5 : false!
6 : false!
7 : false!
8 : false!
9 : false!
----------------------------------------------------------
ParaFla とは違う結果になりますね。
>3:でも、その前に何か文字列をつなげると、上手くいく
確かに先頭に文字列を足すと回避できますね。
var t = "" + (i < 5 ? "true" : "false") + "!";
swfのサイズが 4 バイト増えますが回避策のひとつになりそうです。
ご指摘の通りですね。すみません…。
>他のソフトでも同じなのでしょうか?
Adobe Flash で以下のスクリプトを動作させると
----------------------------------------------------------
var i;
for(i=0;i<10;i++){
var t = ((i < 5) ? "true" : "false")+"!";
trace( i + " : " + t );
}
----------------------------------------------------------
以下のように出力されます。
----------------------------------------------------------
0 : true!
1 : true!
2 : true!
3 : true!
4 : true!
5 : false!
6 : false!
7 : false!
8 : false!
9 : false!
----------------------------------------------------------
ParaFla とは違う結果になりますね。
>3:でも、その前に何か文字列をつなげると、上手くいく
確かに先頭に文字列を足すと回避できますね。
var t = "" + (i < 5 ? "true" : "false") + "!";
swfのサイズが 4 バイト増えますが回避策のひとつになりそうです。
7
名前:k
日付:2010/05/19(水)21:59:32
ID:9kJEWPZA4knz
Adobe Flashでは正常なのですね…。
ということは、paraFla固有の問題ということでしょうか?
もしそうなら、フリーのソフトということで諦めますが…。
>var t = "" + (i < 5 ? "true" : "false") + "!";
あ、なるほど。空文字列を足せば、問題は解決できますね…!参考になりました!
ということは、paraFla固有の問題ということでしょうか?
もしそうなら、フリーのソフトということで諦めますが…。
>var t = "" + (i < 5 ? "true" : "false") + "!";
あ、なるほど。空文字列を足せば、問題は解決できますね…!参考になりました!
8
名前:状態変更
日付:2010/05/21(金)07:26:22
ID:9kJEWPZA4knz
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 : | 解決済み |
投稿開始日 : | 2010/05/16(日)16:28:29 |
投稿終了日 : | 2010/05/21(金)07:26:22 |
投稿者 : | k |
レス総数 : | 8 |
スレッド番号 : | 23 |