Home > ActionScript >


ActionScript 3.0 の alpha

ActionScript 3.0 からは
透けすぎて見えない → HOGE.alpha=0
バッチリ見える → HOGE.alpha=1
という Number型の値を取るらしい。
(以前は 0~100 だったらしい。 そう言われればそうだったかも)

で、実際に使う機会があったわけ。 MovieClip っての? なにか絵的なもの、を配置して。
ActionScript から、毎フレームちょっとずつ透明にしていこうと思ったらおかしなことになった。

まず30フレームの間、毎回1%ずつ alpha を減少させる。
んで、次の30フレームは、毎回1%ずつ alpha を上昇させる。 元に戻そうと思ったわけよ。

そしたら、なんか戻らない。 元に戻したはずなのに。 微妙に透けててなんかエロい。

なんか、よく分からないけど。
内部的に alpha の段階数が荒くて Number で表現できる精度が無いんじゃない?
たぶんだけど。
内部的にはどうせ256段階程度なんだろ? ん?どうなんだ?

HOGE.alpha = 0.99;
trace(HOGE.alpha);
結果。
0.98828125

ほーれみろ!ほーれみろ!

なので、加算・減算みたいなことを繰り返しても、丸められる部分でズレるよね。
となると
var AL:Number = 1;
function enter_frame_of_hoge(e:Event):void {
  AL -= .01;
  HOGE.alpha = AL;
}
みたいにして、近似値にしてもらうしかないのかな。

つーか、もしそういう理由でこのズレが発生するなら
最初っから alpha の仕様を 0~255 とかの int型 にしたら良かったんじゃないのかね。

何十万分の1 の透け具合まで表現できるようになる未来を想定してこの仕様にしたのなら
それはエロいことですな。

Home > ActionScript >

購読用フィード