2008/2/29 Friday

Flashでのalphaと小数点に気をつける

Filed under: Flash — at 21:09:45

せっかくなので頭の片隅にあるメモも確認の意味も含めてアーカイブして行こうかな。

MovieClip._alphaの処理について – Flash : テクニカルノート

Flash AS2において_alphaの値は0〜100だが、内部処理には256階調が使われるので、その諧調に換算した時に端数が出ると切り捨てられる。つまり、256/1(→0.390625)以下の数値を加算しても_alphaは変化しない。

this._alpha = 0;
this.onEnterFrame = function():Void {
    this._alpha += 0.39;   // 1/256(=0.390625)より小さい値を加算
    trace(this._alpha);   //出力: 0 ずっと変化無し
}

なので、加算する値は256/1以上にするか、一度変数に代入する事で回避。↓これだとOK

var ALPHA:Number = this._alpha = 0;
this.onEnterFrame = function():Void {
    ALPHA += 0.39;
    this._alpha = ALPHA;
}

AS3でも結果は同じ。

addEventListener(Event.ENTER_FRAME, update);
function update(e:Event){
    alpha += 0.003;
    trace(alpha);   //出力: 0 ずっと変化無し
}

あとalphaに限った話でもないけど小数点の丸め誤差も注意

1 Comment »

  1. 助かりました。。。

    Comment by 通りすがり — 2010/1/12 Tuesday @ 11:59:49

Leave a comment

HTML convert time: 0.217 sec. Powered by WordPress