AS3のメンバ変数(Number型)を割り算で初期化したら整数値になってた件

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2008年10月1日 水曜日1:43:53

Flexコンパイラのバグか何かかも知れんし、ちゃんと説明可能な仕様かも知れんが、
下のソースを実行すると、

package
{
    import flash.display.Sprite;

    public class Sample extends Sprite
    {
        public var num:Number = 1 / 30;
        public function Sample()
        {
            var num2:Number = 1 / 30;
            trace(num);
            trace(num2);
            trace(1 / 30);
        }
    }
}

出力がこうなる。

0
0.03333333333333333
0.03333333333333333

なんで、メンバ変数だけNumber型が0になるんだ?

何故これに気付いたかと言うと、Box2DAS3のサンプルソース「TestBed\Test.as」に同じコードがあり、動かなくて困ったからだ。

Trackbacks (1)

  1. 独学ActionScript
    [ActionScript 3.0]【AS3入門】Flex 3でNumber型メンバ変数を割り算して初期化したら整数値になる現象... Flash CS3とFlex 3 SDKで出力結果が違う、というとても興味深い内容だったので備忘録。原因不明。こちらのブログで知りました。素敵情報に感謝。 タロタローグ ブログ | AS3のメンバ変数(Numb...

TrackBack URL :

コメントする

HTML convert time: 0.790 sec.