Flashでのalphaと小数点に気をつける
せっかくなので頭の片隅にあるメモも確認の意味も含めてアーカイブして行こうかな。
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に限った話でもないけど小数点の丸め誤差も注意