[AS3] ()を使った式が戻り値に指定された関数を[自動フォーマット]すると [Edit]

[自動フォーマット]が、またやらかしてくれました。

つぎのフレームアクション(スクリプト001)を、[自動フォーマット]してから、[ムービープレビュー]で確認すると、答えとしていくつが[出力]されるでしょう。

スクリプト001■functionの戻り値に括弧()のある式を指定
function xTest(a:Number, b:Number, c:Number):Number {
  return (a + b) * c;
}
trace(xTest(1, 2, 3));

図001■括弧()を使った式がfunctionの戻り値に指定
FF0706051_001.gif

答えは「7」です(図002)。もちろん、意図した結果ではありません。

括弧()を使った式がreturnの後に戻り値として指定されると、[自動フォーマット]は()を消してくれます。Flash CS3 Professionalで[パブリッシュ設定]に[ActionScript 3.0]を指定している場合に再現されます。

図002■括弧()が消えた戻り値
FF0706051_002.gif

対処方法は、式の値を一旦変数に代入して、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■スクリプトウィンドウで[ターゲット]を指定しないと括弧()が消える
FF0706051_003.gif


FF0706051_004.gif

コメント

この記事へのコメント

  1. 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といい、品質保証テストをちゃんとやって欲しいものです。

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事