[自動フォーマット]が、またやらかしてくれました。
つぎのフレームアクション(スクリプト001)を、[自動フォーマット]してから、[ムービープレビュー]で確認すると、答えとしていくつが[出力]されるでしょう。
スクリプト001■functionの戻り値に括弧()のある式を指定function xTest(a:Number, b:Number, c:Number):Number {
return (a + b) * c;
}
trace(xTest(1, 2, 3));
図001■括弧()を使った式がfunctionの戻り値に指定
答えは「7」です(図002)。もちろん、意図した結果ではありません。
括弧()を使った式がreturnの後に戻り値として指定されると、[自動フォーマット]は()を消してくれます。Flash CS3 Professionalで[パブリッシュ設定]に[ActionScript 3.0]を指定している場合に再現されます。
図002■括弧()が消えた戻り値
対処方法は、式の値を一旦変数に代入して、returnする戻り値にはその変数を指定することでしょう(スクリプト002)。
スクリプト002■式の値は変数に代入して戻り値にはその変数を指定function xTest(a:Number, b:Number, c:Number):Number {
var n:Number = (a + b) * c;
return n;
}
trace(xTest(1, 2, 3)); // 出力: 9
[追記] 2007.09.23
スクリプトウィンドウで[ターゲット]を指定していない場合にも、[自動フォーマット]で式に用いた括弧()が消されてしまうようです(図003)。
図003■スクリプトウィンドウで[ターゲット]を指定しないと括弧()が消える
この記事へのコメント
●1.joyko(2008年02月24日 01:14)
コメント
Flash8 Basicでは、Vidoe関連の機能が、スクリプト記載だけでは、補完できないので、Flash8 ProfessionalにupGradeしたかったのですが、8は販売終了なので、(一年近く発売開始から経過してるので、)CS3も安定してるかと思い、CS3へのupGrade版買っちゃいました!
当面、AS2.0を使うつもりですが、このAS3の有様ですと、AS2.0も怪しいのではと、心配になります。AS2.0は大丈夫なのでしょうか?
発売当初とは言いませんが、1年以内に、こういうBUGは、直して欲しいものですね。MSといい、Adobeといい、品質保証テストをちゃんとやって欲しいものです。