トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     文字列をActionScriptコードとして評価する??
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
norimaki8
Åê¹ÆNo.24874
投稿日時: 2006-4-14 20:33
新米
居住地:
投稿: 3
使用環境:
Windows XP ,Flash8 Pro
文字列をActionScriptコードとして評価する??
はじめまして。norimaki8と申します。

今作っているActionScriptで、XMLファイルから文字列として
読み込んだ条件式を評価して、if文を実行したいと考えている
部分があり、試してみたのですがうまく動作しないようなので、
どなたかお分かりになる方がいらっしゃいましたらご教授
いただきたく、質問させて頂きます。

ActionScriptのeval()は他言語のeval()とはちょっと動作が
違う(というか、別物?)ようで、悩んでいます。

やろうとしていることのサンプルをActionScriptで書くと、


data1 = "xyz";
// 方式1 : OKが表示されます。
if ( data1=="xyz") {
	trace("data1->OK");
}
else {
	trace("data1->NG");
}



// 方式2: NGが表示されます。
comparison_str  = "data1==\"xyz\"";
if ( eval(comparison_str) ) {
	trace("data1->OK");
}
else {
	trace("data1->NG");
}


この「方式2」でOKを表示させたいのです。

文字列に入れた条件式でif文を動作させたいと思って
いますが、eval()ではなく実現させる方法をご存知の方が
いらっしゃいましたらお教えいただけませんでしょうか。

宜しくお願いします。
みっく
Åê¹ÆNo.24876
投稿日時: 2006-4-14 23:52
常連
居住地: 尾張
投稿: 116
使用環境:
PC:iBook G4 (1.42GHz)
OS: (10.4.10)
FL: &
Re: 文字列をActionScriptコードとして評価する??
var data1 = "xyz";
var comp_str = "data1==xyz";
var myArray = comp_str.split("==");
if (eval(myArray[0]) == myArray[1]) {
	trace("true");
}
else {
	trace("false");
}

### 結果 ###
true

って事でしょうか?


----------------
アカウント編集」で環境を書いておくとレスがつきやすいです。

閃光の魔術師(見習い)みっく
Blogはじめました

nabe_1234
Åê¹ÆNo.24884
投稿日時: 2006-4-15 10:06
新米
居住地:
投稿: 21
使用環境:
Windows Vista Home Premium SP1,Flash CS3
Re: 文字列をActionScriptコードとして評価する??
ActionScriptのリファレンスには、
> 変数、プロパティ、オブジェクト、ムービークリップに
> 名前でアクセスします。
とあります。

JScriptなら
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/js56jsmtheval.asp
> JScript のコードを評価し、実行します。
とあります。

XMLの形式は分かりませんが、
例えばテストケースを外部から与えるなら、
<testCases>
 <testCase name="test data1">
  <operator name="==">
   <variable name="data1" />
   <literal type="string" value="xyz" />
  </operator>
 </testCase>
</testCases>
みたいな感じに条件式をXML上で分解し、
・operatorはnameの場合分けで対応。
・variableはevalで対応。
・literalはtypeの場合分けで対応。
などが必要かも知れません。

でもそれだと面倒です。

式の形が「変数==文字列値」に限定できるなら、
<isEqual variable="data1" value="xyz" />
の方がまだマシかも知れません。
norimaki8
Åê¹ÆNo.24928
投稿日時: 2006-4-17 20:22
新米
居住地:
投稿: 3
使用環境:
Windows XP ,Flash8 Pro
Re: 文字列をActionScriptコードとして評価する??
みっく様
ご返信ありがとうございます。

例示したスクリプトが悪かったかも、です・・・すみません。

私のやりたいと思っているスクリプトでは、条件として"==" だけでなく、 長い例を出すと、


(data1 == "xyz" OR data1 == "abc") AND (data2 != "pqr")


のような、少々複雑なものもif文で検査したい、と考えておりまして・・・

次の投稿でnabe_1234様にお教え頂いている方法が近いのかも知れません。



norimaki8
Åê¹ÆNo.24929
投稿日時: 2006-4-17 20:30
新米
居住地:
投稿: 3
使用環境:
Windows XP ,Flash8 Pro
Re: 文字列をActionScriptコードとして評価する??
nabe_1234様
ご返信、ありがとうございます。

まさにJScriptの例のようなことをやりたかったのです!

ただ、Flashではできないのだろうかと思いまして、
投稿させていただいたのですが、やはり難しいようですね。

お教え頂いたように、条件をバラバラに指定していく方向
で再検討してみようかと思います。

特に、

引用:

式の形が「変数==文字列値」に限定できるなら、
<isEqual variable="data1" value="xyz" />
の方がまだマシかも知れません。


という部分が参考になりました!

ありがとうございました。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops